ffmpeg 官方提供了三个版本,static,shared和dev,static和shared可以在命令行中直接调用,他们的区别在于:
引用文章中的描述
- Static里面只有3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe,每个exe的体积都很大,相关的Dll已经被编译到exe里面去了。
- Shared里面除了3个应用程序:ffmpeg.exe,ffplay.exe,ffprobe.exe之外,还有一些Dll,比如说avcodec-54.dll之类的。Shared里面的exe体积很小,他们在运行的时候,到相应的Dll中调用功能。
- Dev版本是用于开发的,里面包含了库文件xxx.lib以及头文件xxx.h,这个版本不包含exe文件。
那么在实际开发时,我们是选择static版本还是dev版本呢,由于shared也是调用命令行,在这里把它和static相同看待,相信其他初学者会和有同样的想法,以下是个人的选型分析:
- 调用命令行会提高开发效率
- 调用命令行一旦发现有bug,修改源码bug后,重新编译即可
- 源码开发会引入更多的bug
- 源码开发能监控转码的细节(分析效率或debug时有用)
- 源码开发对编码对平要求高,还要了解ffmpeg的细节
有一个共性问题,多任务并发进行时,调用命令行是开启一个进程,源码开发时也会fork一个进程,但其具体的效率暂无测试。
综上,所以我选择调用命令行。