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集成了一些平台特异的代码,加入了硬件加速,在使用的时候也要特别注意。

浙公网安备 33010602011771号