FFmpeg

1. ffmpeg的基本使用

对于很多刚入门的人来说,ffmpeg的编译就是个大问题,尤其是交叉编译,当涉及到有可能使用到的数百项扩展功能中的某一项的时候,更是手足无措。

刚开始也是找了很多网上的编译教程,可以说没有多少靠谱的能用于工程实践的案例。但是再花功夫解决这一块的问题以后,对于后面的工作会有很大帮助。

首先完成了编译出跨平台的ffmpeg,包括 IOS、Mac、Linux、Windos、Android 等,为跨平台的开发准备好环境

另外,以上的编译工作使用现成的脚本,支持各种环境变量、功能的使能,支持RTMP、RTSP等等协议,这是早期学习音视频的准备各种。

在后面的开发中起到了很重要的作用。从编译脚本可知,该编译脚本参考的是 bilibili 的 ijkplayer,由其修改而来,支持的功能、协议非常齐全,直接就让我打通了ffmpeg编译的拦路虎。

后来的项目多集成到Qt中使用,也集成到Android中使用过,基本上,掌握了Qt的项目集成,其它的平台问题就不大了,好多问题都可以迎刃而解了。

2. 编解码

官方的解复用、编解码都给出了完善的Demo可供参考,掌握了常用的mp4解复用,获得h264、aac数据,然后解码获得yuv、pcm数据,对于后面的开发起到了很大帮助。

另外,还使用ffmpeg完成推流mp4的代码,以及另外单独使用librtmp推流的代码,将其封装成了C++的代码,非常简单易用,后的测试、学习中,经常依赖以上的环境。

对于ffmpeg的使用,当时本着:搞定基础环境,会用基本API就行,不会的再去查,再去消化、吸收官方Demo,就够用了。

主要的还是一些音视频的概念需要学习,如何调用API这种操作,放在现实的场景中,用到了再去学习攻克,都不是大问题。

3. 总结

ffmpeg的源代码看着很漂亮,非常值得研究。在一些场景中,多次接触到从ffmpeg中单独拿出来一些模块进行使用,这需要对ffmpeg有很深的理解才行。

作为音视频入门时首先使用的工具,首先掌握常用的功能就够了。其次还粗略了解学习了ffmpeg的内存模型、整体架构。

笔记里面还整理了很多很齐全、详尽的关于ffmpeg的思维导图之类的内容。

对于这种庞大的开源框架,当遇到网上搜不到的答案的时候,官方的文档和 Demo 往往是少走弯路的关键。

另外,新版的ffmpeg集成了一些平台特异的代码,加入了硬件加速,在使用的时候也要特别注意。

posted @ 2020-12-06 15:11  AlexOne  阅读(187)  评论(0)    收藏  举报