ffmpeg学习笔记

   对于每个初学者,刚开始接触ffmpeg时, 想必会有三个问题最为关心,即ffmpeg是什么?能干什么?怎么开始学习?本人前段时间开始接触ffmpeg,在刚开始学习过程中,这三个问题尤其最后 一个问题着实困扰了我一下。现在将我对ffmpeg的一点理解分享出来,希望对正在学习ffmpeg编程的同学有帮助。

       1. ffmpeg是什么?

       (1)你可以把ffmpeg理解成一套音视频解决方案,并且还是免费、开源、跨平台的解决方案。它提供了录制、转换以及流化音视频等等功能。同时还包含 了非常先进的音频/视频编解码库,这样使用ffmpeg可以对采集的原始音视频进行编码存储,或者将已有的音视频文件解码播放。这里简单提一 下,ffmpeg中视频h264编码依赖x264第三方视频编码库,音频MP3编码依赖lame mp3第三方编码库。

       (2)同时,ffmpeg更是一组使用c语言开发的开源程序,与许许多多的开源程序一样,它有自己的社区、有活跃的维护者,尤其是近2年,版本更新很 快,差不多每个月都有更新。打开ffmpeg源文件,看到成千上万行的c代码,在佩服作者的聪明才智同时,也不禁为自己的智商捉急。看到源文件,也就可以 了解ffmpeg api的实现细节,这样就可以按照自己的需求进行修改,实现一个定制版的ffmpeg。当然,走到这一步还是需要点功夫的,从本人的学习过程来看,别说修 改ffmpeg,刚开始面对ffmpeg一堆api,真是一头雾水,无从下手,后面会讲如何学习ffmpeg。

       2. ffmpeg能干什么?

       (1)你可以下载安装ffmpeg,如下图所示,然后在控制台命令行中输入ffmpeg相关命令,这样就可以实现播放歌曲、视频,甚至通过命令实现对音 视频文件转换、混合、剪辑等各种复杂处理。这种ffmpeg使用情景在服务器端比较多,相信很多视频类网站都架设了基于ffmpeg的流媒体服务器,比如 给服务器上保存的视频加个水印,虽然我没搞过,但相信就是一组命令的事吧。

                                          ffmpeg学习笔记

       (2)你还可以下载ffmpeg源码,如下图所示,在windows平台、android平台等各种平台下编译ffmpeg源码,以获取不同平台下 ffmpeg静态库或者动态库,供自己的程序调用,以实现基于ffmpeg的音视频编解码等程序开发。这种ffmpeg使用情景在客户端比较多,比如短视 频类app应用《微视》,它的音视频编解码工作就是调用ffmpeg完成的。当然,我近期正在搞的短视频类app应用编解码也是调用ffmpeg完成的。

                                          ffmpeg学习笔记

       3. 如何学习ffmpeg?

       在网上搜索ffmpeg的学习资源,大体可以搜出两大类,一个是ffmpeg相关命令学习资料,也就是上一节中提到的在服务器端安装ffmpeg,然后 通过命令的方式调用ffmpeg完成音视频转换、转播等工作,这方面资料较多,另外由于本人没深入去研究这些命令用法,这里就不多讲了;另一个就是 ffmpeg api学习资料,api学习资料要比前者偏少些。对于ffmpeg api学习,在网上查来查去,回过头会发现最好的入门学习资料其实是源码doc/examples文件下的几个程序,这几个程序都是独立的demo示例程 序,分别实现了媒体文件打开、音视频混合、音视频编解码等等基础且常见的功能,通过分析这几个demo示例程序,会逐渐掌握ffmpeg的api用法,这 几个demo示例程序每个文件大小不一样,推荐从体积最小的文件看起,即代码行数最少,这样也不会产生望而生畏的心态了。当然,只分析源码是远远不够的, 还需要把这些demo运行起来,这样才能对ffmpeg的参数及调用逻辑有更深入的了解,后面会讲讲如何在windows环境下搭建ffmpeg开发环 境。

                                          ffmpeg学习笔记


你可能感兴趣的:(ffmpeg学习笔记)