概述
从ffmpeg的3.1版本开始,加入了对Android的MediaCodec硬解支持,目前支持的格式包括h264、h265、mpeg4、vp8和vp9,下面以h264为例说明一下
1、编译ffmpeg
在configure阶段首需要enable相关的组件,如下所示:
--enable-jni
--enable-mediacodec
--enable-decoder=h264_mediacodec
--enable-hwaccel=h264_mediacodec
此外,必须指定编译平台 --target-os=android,否则会报错:ERROR:jni not found
2、使用MediaCodec
第一步:为ffmpeg设置java虚拟机
因为用到了jni,所以第一步需要为ffmpeg设置java虚拟机,在JNI_OnLoad函数中调用av_jni_set_java_vm,该函数在libavcodec/jni.h文件中
第二步:使用MediaCodec
MediaCodec对应的ffmpeg的组件名称为“h264_mediacodec”,需要通过指定名字来获得相应的codec,如果获得硬件解码器失败,再通过id来获得软件解码器
AVCodec *codec = avcodec_find_decoder_by_name("h264_mediacodec");
if (codec == NULL) {
codec = avcodec_find_decoder(id);
}
到此即可使用了,其他地方不需要修改
最后
以上就是花痴红酒为你收集整理的FFmpeg编译MediaCodec的全部内容,希望文章能够帮你解决FFmpeg编译MediaCodec所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复