ffmpeg实践系列之--硬件解码实现框架

   日期:2020-05-11     浏览:95    评论:0    
核心提示:闲话知道ffmpeg很久了,可是一直没有深入研究。最近在研究SM768的ffmpeg下的硬解,因此向记录下自己研究所得。关于ffmpeg的基本知识,推荐雷神博客,感谢雷神。废话少说,开始填坑。思路1.ffmpeg中如何实现硬件解码接口;2.编译deb包;3.编译sm768硬解驱动库;4.测试总结;...ffmpeg

闲话

知道ffmpeg很久了,可是一直没有深入研究。最近在研究SM768的ffmpeg下的硬解,因此想记录下自己研究所得。关于ffmpeg的基本知识,推荐雷神博客,感谢雷神。废话少说,开始填坑。

思路

1.ffmpeg中如何实现硬件解码接口;
2.编译deb包;
3.编译sm768硬解驱动库;
4.测试总结;

ffmpeg硬解框架

开始干之前一定要有一个总体框架,有了指导思想,方向就不会错。sm768支持硬件解码,怎么将硬件解码接口提供给ffmpeg,让其支持硬件解码。接下来用smi_h264为例,梳理下流程。如下图所示,一开始将smi_h264注册成h264,那么一旦格式是h264的视频就会调用sm768的硬解。随后打开解码器对其初始化,就会调用ff_smi_h264_init对硬解初始化。读入视频包后,开始调用硬件解码smi_decode_frame,最后解码器关闭后,也会对硬件解码关闭。梳理完整个流程后,对硬件解码一定会豁然开朗。

开始编包

既然思路方向有了,just do it。我的需求是将smi硬件接口封装成库,供ffmpeg调用,最后生成deb包供用户使用。由于ffmpeg的源码制作成了deb的方式,所以采用dpkg去编包。
1.解压源码:dpkg-source -x
2.安装依赖:
sudo apt-get update
sudo apt-get install fakeroot
安装依赖的包在安装的时候会有提示,照提示安装。
3.编包:dpkg-buildpackage -b -j4
在编包的时候会遇到test过不去,折腾了好久,最后才发现编包的时候不能插sm768显卡,不然测试通不过,在此记录下,希望大家可以避免踩坑。如下图,生成如下的包。dev的包是开发者除了有库还会有有些头文件,开发者可以用此包。

4.安装包:dpkg -i

制作库

需要将以下文件打包成一个库,打包时一定要将另外一个库libVideoDecoderLib64.a打入新库中,否则程序运行时会找不到定义的函数。最后形成新的库libsm768.a, 放入ffmpeg源码中编译。

测试

最后用mplayer 播放视频测试,可以看出当硬件解码时CPU占用率较低。

参考

制作DEB包的方法.

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服