我是靠谱客的博主 花痴红酒,最近开发中收集的这篇文章主要介绍FFmpeg编译MediaCodec,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

从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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部