音视频系列八 ffmpeg使用mediacodec硬解码
文章目录
- 重新编译ffmpeg
- 配置JavaVM
- 替换AVCodec
重新编译ffmpeg
ffmpeg默认是没有开启mediacodec的,所以需要在配置文件上增加配置
--enable-mediacodec
默认就会增加mediacodec支持的解码器,但是如果你禁用了所有的解码器,那根据自己需要手动打开,参考以下配置
--enable-decoder=h264_mediacodec
--enable-decoder=hevc_mediacodec
--enable-decoder=mpeg4_mediacodec
--enable-decoder=mpeg2_mediacodec
--enable-decoder=vp8_mediacodec
--enable-decoder=vp9_mediacodec
具体的编译详见前文。
配置JavaVM
在JNI_OnLoad方法中调用av_jni_set_java_vm方法,示例如下。
av_jni_set_java_vm(vm, 0);
ffmpeg是通过jni回调Mediacodec Java层的API实现硬解的,如果有信心,不嫌麻烦,追求极致性能可以自己使用MediaCodec Native层的API实现。
替换AVCodec
在MediaCodec支持的编码下通过avcodec_find_decoder_by_name方法找到对应的编码器,其他与软解流程一样,以H264为例,参考代码如下。
AVCodec *avCodec = nullptr;AVCodecID videoCodecID = avFormatContext->streams[video_index]->codecpar->codec_id;if (videoCodecID == AV_CODEC_ID_H264) {avCodec = avcodec_find_decoder_by_name("h264_mediacodec");if (avCodec == nullptr) {avCodec = avcodec_find_decoder(videoCodecID);}} else {avCodec = avcodec_find_decoder(videoCodecID);}
需要注意的是经过测试硬解得到的Frame的best_effort_timestamp可能恒等于AV_NOPTS_VALUE
音视频系列八 ffmpeg使用mediacodec硬解码相关推荐
- linux编译ffmpeg_[Cmake-Android音视频]ffmpeg3.4编译支持neon,硬解码
编译环境 Ubuntu16.04 x86_64 Ffmpeg3.4 ndk-r14b 编译前的准备 ubuntu16.04 64位 Index of /releases/16.04.3release ...
- 音视频系列:FFmpeg和NDK在Centos7上交叉编译
更新: 2022.01.15:因应用商店需要上传64位APK,发现之前的脚本编译的arm64-v8a库,在使用时报错: java.lang.UnsatisfiedLinkError: dlopen f ...
- 音视频系列四 ffmpeg配合opensl es播放音频
文章目录 一 解码成PCM 二 opensl es创建引擎,混音器 创建引擎 创建混音器 创建播放器,注册回调函数 一 解码成PCM 流程其实和视频差不多,参考播放视频的代码,稍作增改 先定义后面需要 ...
- datagrid 重载本地数据_音视频系列3:使用ffmpeg + nginx搭建本地转发服务器
本文与csdn博客同步:https://blog.csdn.net/Hanghang_/article/details/104893135,欢迎关注,点赞,评论. 前言 音视频系列: HectoorZ ...
- 音视频系列2:ffmpeg将H.264解码为RGB
音视频系列2:ffmpeg将H.264解码为RGB 前言 源码 前言 喜大普奔,终于更新啦,上期说到,如何使用ffmpeg+rtmp进行拉流,不熟悉的小伙伴们,可以先看上一期.今天我们要实现的是使用f ...
- ffmpeg rtmp 不清晰_音视频系列3:使用ffmpeg + nginx搭建本地转发服务器
本文与csdn博客同步:https://blog.csdn.net/Hanghang_/article/details/104893135,欢迎关注,点赞,评论. 前言 音视频系列: HectoorZ ...
- ffmpeg rtmp 花屏_音视频系列6:ffmpeg多线程拉流
本文与csdn博客同步:https://blog.csdn.net/Hanghang_/article/details/105302384,欢迎关注,点赞,评论. 前言 本篇博客是音视频系列的续集与改 ...
- 音视频常见概念:软解硬解、IBP帧、GOP、YUV编码
音视频常见概念 软解与硬解 IBP帧 GOP YUV编码 RGB与YUV相互转换 参考资料 软解与硬解 视频解码分为软解和硬解. 所谓"软解"就是通过软件让 CPU 进行视频解码处 ...
- 音视频同步原理[ffmpeg]
音视频同步原理[ffmpeg] output_example.c 中AV同步的代码如下(我的代码有些修改),这个实现相当简单,不过挺说明问题. 阅读前希望大家先了解一下时间戳的概念. /* compu ...
最新文章
- linux 内核调试方法
- unity 继承了 获取_获取继承链
- 8.6 多元高斯分布模型-机器学习笔记-斯坦福吴恩达教授
- 苹果看好医疗健康产业 AI技术将变革
- wxWidgets:事件和事件处理
- Oracle ASM 进程之ASMB
- AOP框架Dora.Interception 3.0 [1]: 编程体验
- Spring全家桶,永远滴神!
- Pytorch——Window上Pytorch的安装教程
- android曲线水波纹录音动画,Android-贝塞尔曲线实现水波纹动画
- 堪称神级的Spring Boot手册,从基础入门到实战进阶
- dex2jar java 1.8_dex2jar最新版下载-dex2jar下载 2.0官方版--pc6下载站
- Microsoft Visual Studio .NET 2003 编译xvidcore-1.1.3
- 【昊鼎王五】Windows的Git客户端安装步骤
- 电子签批板那个品牌好用?国产柜台电子签名板推荐
- win10共享打印机链接失败错误代码0x0000011b
- Domoticz 中接入斐讯 M1 空气质量检测仪
- 周志华西瓜书学习笔记(一)
- 万国数据登陆纳斯达克 宣布首次公开发行股票定价
- <动手学深度学习>之pytorch版本,配置d2lzh_pytorch包