我們早已經(jīng)進入了數(shù)字多媒體時代,,相信每天都會有數(shù)不清的男男女女,,在手機或電腦上播放一部部令人熱血賁張的小電影。沒錯,,視頻播放早已是信息時代的日常,,花樣迭出的視頻播放器成為了手機、電腦中不可或缺的軟件,。不過,,你可知道這些名目繁多的視頻播放器要運作起來,往往都離不開神級播放軟件FFmpeg,?今天,,就一起來談談視頻播放和FFmpeg的那點事吧。
很多朋友都喜歡看電影,,但可知到底是什么技術幫你把片子播出來呢,?
一部小電影到底是如何播放出來的?
盡管我們每天都在看小電影之類的視頻,,不過對視頻播放背后的原理,,恐怕并不是每個朋友都會了解。我們平時看到的小電影有著各種各樣的格式,,例如AVI,、RMVB、MKV等等,,但是這些格式并非是視頻之間的本質區(qū)別——不同的格式往往只代表著不同的容器,,容器內封裝的具體視頻流、音頻流等內容,,才是一個視頻的本質所在,。
例如,AVI中可以封裝H.264編碼的視頻流,MKV也可以封裝H.264,,但同時MKV還能夠封裝HEVC,、VP9等視頻流。因此,,MKV和MKV之間的區(qū)別,,可能要比某個AVI和某個MKV之間的區(qū)別大得多。當然,,不同的容器也是有功能和性能上的區(qū)別的,,例如MKV對各種編碼的兼容性就非常好,而AVI則有所局限,,且不支持流媒體播放等,。
不同的容器可以封裝各種視頻編碼
要播放某段視頻,播放軟件所需要做的,,首先要支持某種容器,,然后把視頻流、音頻流等內容從容器中分離出來,,進而解碼,、渲染,用戶就可以播放出視頻,、音頻乃至字幕等內容了,。這個過程是比較繁瑣而且頗有技術含量的,世界上有著茫茫眾多規(guī)格的編碼格式,,做一個播放器就意味著需要對這些東西吃得比較透,,這無疑是相當費時費力的。因此,,很多視頻播放器實際上都使用了統(tǒng)一的解決方案——FFmpeg,。
神級播放軟件FFmpeg:萬能播放器的根基
FFmepg是一套視頻音頻的完整解決方案,它提供了視頻解碼,、編碼,、后期處理等一系列功能,對世界上千奇百怪的視頻音頻編碼有著完善的支持,。FFmpeg是在Linux平臺下開發(fā)的,,完全開源,也可以在其他平臺編譯運行,。FFmpeg的名稱顯然是來自“MPEG”,,而MPEG則是視頻編碼標準的制定者,,從名字就可以看出,,F(xiàn)Fmpeg旨在研究和MPEG相關的一系列技術。
FFmpeg提供了一整套視頻音頻解決方案,其中也包括了視頻解碼
FFmpeg的功能非常強大,,雖然前文和標題都說它是播放神器,,但它的功能絕不僅僅限于播放。FFmpeg可以解碼諸多的視頻音頻編碼,,它同時也提供了視頻音頻轉換,、編碼、封裝的功能,,還可以進行視頻裁剪,、縮放、色域轉換等一系列后期處理,。不僅如此,,F(xiàn)Fmpeg還支持HTTP、FTP,、SMB等協(xié)議,。可以說,,無論你想要本地播片,,還是轉換視頻格式,亦或是利用網(wǎng)絡看視頻,,F(xiàn)Fmpeg都可以勝任,。
使用FFmpeg作為解碼器是萬能播放器們的主流之選
FFmpeg項目起源于2000年,多年來,,F(xiàn)Fmpeg一直在進化,。FFmpeg項目在2011年分裂出了Libav項目,該項目誕生出了迄今為止最強力的視頻解碼器LAV,。無論對于軟硬件,,LAV解碼器都有著頗為完善的支持,大量播放軟件都可以調用LAV解碼,,而LAV本身也可以利用各種顯卡進行視頻硬解,。想要用電腦播放難搞的4K HDR藍光?LAV絕對是最好的解決方案,。
基于FFmpeg的LAV是目前最強的視頻解碼器
FFmpeg之所以是神,,不僅僅是由于自身的強大,還在于對業(yè)界的影響力,。很多播放器都宣稱自己多么多么萬能,,支持先進的4K乃至8K視頻播放,乍看這播放器搞定了世界上如此繁雜的視頻容器,、視頻音頻編碼,,太了不起了!然而實際上,真正的原因往往是因為這播放器自帶了FFmpeg/LAV解碼器,,真正神的不是播放器,,而是背后的FFmpeg/LAV,你能用播放器順利放出小電影,,可別忘記感謝FFmpeg,。因此,把FFmpeg稱作為神級軟件,,完全實至名歸,。
FFmpeg:可能是被抄襲得最嚴重的開源軟件
FFmpeg是如此強大,但一般人是難以駕馭的,。和很多開源軟件一樣,,F(xiàn)Fmpeg并沒有圖形界面,原始版本的FFmpeg只能夠通過命令行操縱,,不是高級玩家的話一般是不會去碰原始版本的FFmpeg的,。不過,由于FFmpeg是一個開源軟件,,因此諸多我們日常接觸的軟件,,都會使用其技術來實現(xiàn)視頻播放功能。這其中,,既包括常見的播放軟件,,也包括瀏覽器之類的能夠播放視頻的產品。
FFmpeg的原版是命令行,,一般用戶玩不轉
例如,,三大視頻播放流派MPC、MPlayer和VLC都和FFmpeg脫不開關系,,而Chrome這樣的能播放網(wǎng)頁視頻的瀏覽器,,也使用了FFmpeg代碼。FFmpeg開源,,加上易于編譯到多個平臺的特點,,廣受各大播放器開發(fā)商的歡迎是情理之中的事情。如果你看到某款播放器支持N多視頻格式,、N多功能,,十有八九它就使用了FFmpeg的相關代碼。
不過,,F(xiàn)Fmpeg是按照GPL/LGPL 協(xié)議開源的,,這意味著如果某軟件使用了FFmpeg的代碼,那么這個軟件涉及這些代碼的部分,,也必須開源,。但是業(yè)界的風氣嘛……你懂的,。我用了就是用了,開源什么的誰管你,,有本事你來打我呀?因此,,F(xiàn)Fmpeg也成為了代碼被盜用得最嚴重的開源軟件之一,,不少著名的播放軟件都是FFmpeg代碼的盜用者。
KMP等著名播放器都是FFmpeg的盜用者
無論是國內外,,都有大量播放軟件使用了FFmpeg的代碼,。例如國內耳熟能詳?shù)?a href="http://www./html/soft/20151116_347.html" target="_blank">暴風影音、QQ影音,,以及國外著名的KMPlayer,、PotPlayer,都采用了FFmpeg的代碼但卻不按規(guī)矩開源,,被放入了FFmpeg的恥辱名單當中,。當然,守規(guī)矩的軟件也是有的,,例如前面提到的MPC,、MPlayer、VLC都按照FFmpeg的規(guī)矩開了源,。如果你想要支持開源事業(yè),,不妨優(yōu)先使用這些守規(guī)矩的軟件。
引用自:https://www.ithome.com/html/it/326782.htm |
|
來自: 昵稱27492377 > 《電腦/手機、硬件軟件》