• 神级视频软件FFmpeg你知多少

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

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

    要播放某段视频,播放软件所需要做的,首先要支持某种容器,然后把视频流、音频流等内容从容器中分离出来,接而解码,然后渲染,用户就可以播放出视频、音频乃至字幕等内容了。

    这个过程是比较繁琐而且颇有技术含量的,世界上有着茫茫多规格的编码格式,做一个播放器就意味着需要对这些东西吃得比较透,这无疑是相当费时费力的。因此,为数庞大的视频播放器实际上都使用了统一的解决方案——FFmpeg。

    阅读更多…