发布于 2017-09-21 00:58:53 | 153 次阅读 | 评论: 0 | 来源: 网友投递
FFmpeg 多媒体处理工具
FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。
我们早已经进入了数字多媒体时代,相信每天都会有数不清的男男女女,在PC手机上播放一部部令人热血贲张的小电影。没错,视频播放早已是信息时代的日常,花样迭出的视频播放器成为了手机电脑中不可或缺的软件。不过,你可知道这些名目繁多的视频播放器要运作起来,往往都离不开神级播片软件FFmpeg?今天,就一起来谈谈视频播放和FFmpeg的那点事吧。
尽管我们每天都在看小电影之类的视频,不过对视频播放背后的机理,恐怕并不是每个朋友都会去作了解。我们平时看到的小电影有着各种各样的格式,例如AVI、RMVB、MKV等等,但是这些格式并非是视频之间的本质区别——不同的格式往往只代表着不同的容器,容器内封装的具体视频流、音频流等内容,才是一个视频的本质所在。
例如,AVI中可以封装H.264编码的视频流,MKV也可以封装H.264,但同时MKV还能够封装HEVC、VP9等视频流。因此,MKV和MKV之间的区别,可能要比某个AVI和某个MKV之间的区别大得多。当然,不同的容器也是有功能和性能上的区别的,例如MKV对各种编码的兼容性就非常好,而AVI则有所局限,且不支持流媒体播放等。
不同的容器可以封装各种视频编码
要播放某段视频,播放软件所需要做的,首先要支持某种容器,然后把视频流、音频流等内容从容器中分离出来,接而解码,然后渲染,用户就可以播放出视频、音频乃至字幕等内容了。这个过程是比较繁琐而且颇有技术含量的,世界上有着茫茫多规格的编码格式,做一个播放器就意味着需要对这些东西吃得比较透,这无疑是相当费时费力的。因此,为数庞大的视频播放器实际上都使用了统一的解决方案——FFmpeg。
FFmepg是一套视频音频的完整解决方案,它提供了视频解码、编码、后期处理等一系列功能,对世界上千奇百怪的视频音频编码有着完善的支持。FFmpeg是在Linux平台下开发的,完全开源,也可以在其他平台编译运行。FFmpeg的名称显然是来自“MPEG”,而MPEG则是视频编码标准的制定者,从名字就可以看出,FFmpeg旨在研究和MPEG相关的一系列技术。
FFmpeg提供了一整套视频音频解决方案,其中也包括了视频解码
FFmpeg的功能非常强大,虽然前文和标题都说它是播片神器,但它的功能绝不仅仅限于播片。FFmpeg自然可以解码诸多的视频音频编码,而且它同时也提供了视频音频转换、编码、封装的功能,还可以进行视频裁剪、缩放、色域转换等一系列后期处理。不仅如此,FFmpeg还支持HTTP、FTP、SMB等协议。可以说,无论你想要本地播片,还是转换视频格式,亦或是利用网络看视频,FFmpeg都可以胜任。
使用FFmpeg作为解码器是万能播放器们的主流之选
FFmpeg项目起源于2000年,多年来,FFmpeg一直在进化。FFmpeg项目在2011年分裂出了Libav项目,该项目诞生出了现今最强力的视频解码器LAV。无论对于软硬件,LAV解码器都有着颇为完善的支持,大量播放软件都可以调用LAV解码,而LAV本身也可以利用各种显卡进行视频硬解。想要用PC播放难搞的4K HDR蓝光?LAV绝对是最好的解决方案。
基于FFmpeg的LAV是目前最强的视频解码器
FFmpeg之所以是神,不仅仅是由于自身的强大,还在于对业界的影响力。很多播放器都宣称自己多么多么万能,支持先进的4K乃至8K视频播放,乍看这播放器搞定了世界上如此繁杂的视频容器、视频音频编码,太了不起了!然而实际上,真正的原因往往是因为这播放器自带了FFmpeg/LAV解码器,真正神的不是播放器,而是背后的FFmpeg/LAV,你能用播放器顺利放出小电影,可别忘记感谢FFmpeg。因此,把FFmpeg称作为神级软件,完全实至名归。
FFmpeg是如此强大,但一般人是难以驾驭的。和很多开源软件一样,FFmpeg并没有图形界面,原始版本的Fmpeg只能怪通过命令行操纵,不是高玩的话一般是不会去碰原始版本的FFmpeg的。不过,由于FFmpeg是一个开源软件,因此诸多我们日常接触的软件,都会使用其技术来实现视频播放功能。这其中,既包括常见的播放软件,也包括浏览器之类的能播放视频的产品。
FFmpeg的原版是命令行,一般用户玩不转
例如,三大视频播放流派MPC、MPlayer和VLC都和FFmpeg脱不开关系,而Chrome这样的能播放网页视频的浏览器,也使用了FFmpeg代码。FFmpeg开源,加上易于编译到多个平台的特点,广受各大播放器开发商的欢迎是情理之中的事情。如果你看到某款播放器支持N多视频格式、N多功能,十有八九它就使用了FFmpeg的相关代码。
不过,FFmpeg是按照GPL/LGPL协议开源的,这意味着如果某软件使用了FFmpeg的代码,那么这个软件涉及这些代码的部分,也必须开源。但是业界的风气嘛……你懂的。我用了就是用了,开源什么的谁管你,有本事你来打我呀?因此,FFmpeg也成为了代码被盗用得最严重的开源软件之一,不少著名的播放软件都是FFmpeg代码的偷窃者。
KMP等著名播放器都是FFmpeg的抄袭者
无论是国内外,都有大量播放软件非法使用了FFmpeg的代码。例如国内耳熟能详的暴风影音、QQ影音,以及国外著名的KMPlayer、PotPlayer,都采用了FFmpeg的代码但却不按规矩开源,被放入了FFmpeg的耻辱名单当中。当然,守规矩的软件也是有的,例如前面提到的MPC、MPlayer、VLC都按照FFmpeg的规矩开了源。如果你想要支持开源事业,不妨优先使用这些守规矩的软件。
尽管人们日常接触的多是金玉其外的商业软件,但是软件界今时今日的繁荣,离不开FFmpeg这样的开源软件们的默默奉献。在享受一部部小电影、大片的同时,请不要忘记是FFmpeg把拨人心弦的影音带到了你的面前。当然,如果你有心有财力,也可以通过捐赠的方式支持FFmpeg(点此进入捐赠页面),希望FFmpeg能继续发展得越来越好吧!