社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 644阅读
  • 0回复

[分享]万能播放器的根基:神级播放软件FFmpeg你知道多少?

楼层直达
z3960 
级别: 茶馆馆主
发帖
770867
飞翔币
207694
威望
215657
飞扬币
2511641
信誉值
8


我们早已经进入了数字多媒体时代,相信每天都会有数不清的男男女女,在手机或电脑上播放一部部令人热血贲张的小电影。没错,视频播放早已是信息时代的日常,花样迭出的视频播放器成为了手机、电脑中不可或缺的软件。不过,你可知道这些名目繁多的视频播放器要运作起来,往往都离不开神级播放软件FFmpeg?今天,就一起来谈谈视频播放和FFmpeg的那点事吧。
很多朋友都喜欢看电影,但可知到底是什么技术帮你把片子播出来呢?

一部小电影到底是如何播放出来的?

尽管我们每天都在看小电影之类的视频,不过对视频播放背后的原理,恐怕并不是每个朋友都会了解。我们平时看到的小电影有着各种各样的格式,例如AVI、RMVB、MKV等等,但是这些格式并非是视频之间的本质区别——不同的格式往往只代表着不同的容器,容器内封装的具体视频流、音频流等内容,才是一个视频的本质所在。

例如,AVI中可以封装H.264编码的视频流,MKV也可以封装H.264,但同时MKV还能够封装HEVC、VP9等视频流。因此,MKV和MKV之间的区别,可能要比某个AVI和某个MKV之间的区别大得多。当然,不同的容器也是有功能和性能上的区别的,例如MKV对各种编码的兼容性就非常好,而AVI则有所局限,且不支持流媒体播放等。
不同的容器可以封装各种视频编码

要播放某段视频,播放软件所需要做的,首先要支持某种容器,然后把视频流、音频流等内容从容器中分离出来,进而解码、渲染,用户就可以播放出视频、音频乃至字幕等内容了。这个过程是比较繁琐而且颇有技术含量的,世界上有着茫茫众多规格的编码格式,做一个播放器就意味着需要对这些东西吃得比较透,这无疑是相当费时费力的。因此,很多视频播放器实际上都使用了统一的解决方案——FFmpeg。

神级播放软件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本身也可以利用各种显卡进行视频硬解。想要用电脑播放难搞的4K HDR蓝光?LAV绝对是最好的解决方案。
基于FFmpeg的LAV是目前最强的视频解码器

FFmpeg之所以是神,不仅仅是由于自身的强大,还在于对业界的影响力。很多播放器都宣称自己多么多么万能,支持先进的4K乃至8K视频播放,乍看这播放器搞定了世界上如此繁杂的视频容器、视频音频编码,太了不起了!然而实际上,真正的原因往往是因为这播放器自带了FFmpeg/LAV解码器,真正神的不是播放器,而是背后的FFmpeg/LAV,你能用播放器顺利放出小电影,可别忘记感谢FFmpeg。因此,把FFmpeg称作为神级软件,完全实至名归。

FFmpeg:可能是被抄袭得最严重的开源软件

FFmpeg是如此强大,但一般人是难以驾驭的。和很多开源软件一样,FFmpeg并没有图形界面,原始版本的FFmpeg只能够通过命令行操纵,不是高级玩家的话一般是不会去碰原始版本的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的规矩开了源。如果你想要支持开源事业,不妨优先使用这些守规矩的软件。

引用自:https://www.ithome.com/html/it/326782.htm
 
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。