对于每一个初学者,刚开始接触ffmpeg时, 想必会有三个问题最为关心,即ffmpeg是什么?能干什么?怎么开始学习?本人前段时间开始接触ffmpeg,在刚开始学习过程当中,这三个问题尤为最后 一个问题着实困扰了我一下。如今将我对ffmpeg的一点理解分享出来,但愿对正在学习ffmpeg编程的同窗有帮助。android
1. ffmpeg是什么?编程
(1)你能够把ffmpeg理解成一套音视频解决方案,而且仍是免费、开源、跨平台的解决方案。它提供了录制、转换以及流化音视频等等功能。同时还包含 了很是先进的音频/视频编解码库,这样使用ffmpeg能够对采集的原始音视频进行编码存储,或者将已有的音视频文件解码播放。这里简单提一 下,ffmpeg中视频h264编码依赖x264第三方视频编码库,音频MP3编码依赖lame mp3第三方编码库。windows
(2)同时,ffmpeg更是一组使用c语言开发的开源程序,与许许多多的开源程序同样,它有本身的社区、有活跃的维护者,尤为是近2年,版本更新很 快,差很少每月都有更新。打开ffmpeg源文件,看到成千上万行的c代码,在佩服做者的聪明才智同时,也不由为本身的智商捉急。看到源文件,也就能够 了解ffmpeg api的实现细节,这样就能够按照本身的需求进行修改,实现一个定制版的ffmpeg。固然,走到这一步仍是须要点功夫的,从本人的学习过程来看,别说修 改ffmpeg,刚开始面对ffmpeg一堆api,真是一头雾水,无从下手,后面会讲如何学习ffmpeg。api
2. ffmpeg能干什么?服务器
(1)你能够下载安装ffmpeg,以下图所示,而后在控制台命令行中输入ffmpeg相关命令,这样就能够实现播放歌曲、视频,甚至经过命令实现对音 视频文件转换、混合、剪辑等各类复杂处理。这种ffmpeg使用情景在服务器端比较多,相信不少视频类网站都架设了基于ffmpeg的流媒体服务器,好比 给服务器上保存的视频加个水印,虽然我没搞过,但相信就是一组命令的事吧。app
(2)你还能够下载ffmpeg源码,以下图所示,在windows平台、android平台等各类平台下编译ffmpeg源码,以获取不一样平台下 ffmpeg静态库或者动态库,供本身的程序调用,以实现基于ffmpeg的音视频编解码等程序开发。这种ffmpeg使用情景在客户端比较多,好比短视 频类app应用《微视》,它的音视频编解码工做就是调用ffmpeg完成的。固然,我近期正在搞的短视频类app应用编解码也是调用ffmpeg完成的。学习
3. 如何学习ffmpeg?网站
在网上搜索ffmpeg的学习资源,大致能够搜出两大类,一个是ffmpeg相关命令学习资料,也就是上一节中提到的在服务器端安装ffmpeg,而后 经过命令的方式调用ffmpeg完成音视频转换、转播等工做,这方面资料较多,另外因为本人没深刻去研究这些命令用法,这里就很少讲了;另外一个就是 ffmpeg api学习资料,api学习资料要比前者偏少些。对于ffmpeg api学习,在网上查来查去,回过头会发现最好的入门学习资料实际上是源码doc/examples文件下的几个程序,这几个程序都是独立的demo示例程 序,分别实现了媒体文件打开、音视频混合、音视频编解码等等基础且常见的功能,经过分析这几个demo示例程序,会逐渐掌握ffmpeg的api用法,这 几个demo示例程序每一个文件大小不同,推荐从体积最小的文件看起,即代码行数最少,这样也不会产生望而生畏的心态了。固然,只分析源码是远远不够的, 还须要把这些demo运行起来,这样才能对ffmpeg的参数及调用逻辑有更深刻的了解,后面会讲讲如何在windows环境下搭建ffmpeg开发环 境。编码