脚本宝典收集整理的这篇文章主要介绍了

【Android音视频开发】从AVFrame到MediaFrame数组(四)

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

本文记录的是从AVFrame到MediaFrame数组的实现过程

目的

前提:假定你已经看完了《从AVFrame到MediaFrame数组(三)》,学会了MediaFrame的创建

实现从AVFrame到自定义实体类MediaFrame数组的过程

修改Java层回调接口

JNIHelper中添加一个方法:

public class JNIHelper {
   public void onReceived(MediaFrame[] frame){
       // TODO: Java层接收到MediaFrame[]后,可以开始搞事情了
   }
}

封装MediaFrame数组

Native层封装MediaFrame数组,分为2步:
1. 创建MediaFrame数组对象

jclass clz_media_frame = env->FindClass("me/oogh/xplayer/MediaFrame");
// NewObjectArray(数组大小, 元素类型, 元素初始化值)
jobjectArray media_frames = env->NewObjectArray(2, clz_media_frame, NULL);

2. 给数组赋值

假定这里你已经看过《从AVFrame到MediaFrame数组(三)》,学会了创建MediaFrame
假定你已经创建了两个MediaFrame(jobject类型): obj1和obj2

// SetObjectArrayElement(数组对象, 索引角标, 元素对象)
env->SetObjectArrayElement(media_frames, 0, obj1);
env->SetObjectArrayElement(media_frames, 1, obj2);

Native回调Java层接口

jclass clz_jni_helper = env->FindClass("me/oogh/xplayer/JNIHelper");
jmethodID cb_received = env->GetMethodID(clz_jni_helper, "onReceived", "([Lme/oogh/xplayer/MediaFrame;)V");
env->CallVoidMethod(obj, cb_received, media_frames);

至此,从AVFrame到MediaFrame数组,在将MediaFrame数组上传,就已经完成了,《从AVFrame到MediaFrame数组》系列记录结束!

链接到第一文:《从AVFrame到MediaFrame数组(一)》

总结

以上是脚本宝典为你收集整理的

【Android音视频开发】从AVFrame到MediaFrame数组(四)

全部内容,希望文章能够帮你解决

【Android音视频开发】从AVFrame到MediaFrame数组(四)

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过