作為一名音視訊從業者,不可避免的會使用到開源實作的多媒體架構,涉及音頻、視訊,也包含不同的封裝格式,還會有後處理,濾鏡等等。日常的開發工作中,我們經常會用到各種開源的架構和結構,這樣可以省去重複造輪子的精力,也有助于解放我們的精力,進而提供更好的産品,更好的服務不同的場景。本篇就簡單羅列下我們常見和常用的一些開源架構:
編解碼
說到編解碼,這些年,H.264算是最大的赢家了。基于其的開源實作主要有libx264, openh264。
libx264采用c語言實作,可以支援跨平台,但原生對類Linux系統支援更好,對于H.264的編碼部分也做了大量的優化!在264時代中,可謂編碼中的王者。
libx264官方網站:https://www.videolan.org/developers/x264.html
libx264源碼下載下傳:
git clone https://code.videolan.org/videolan/x264.git
複制
除了libx264,還有openh264也是不錯的開源實作架構,感興趣可以去學習了解下。
openh264官方網站:http://www.openh264.org/
openh264源碼下載下傳:
git clone https://github.com/cisco/openh264.git
複制
說完264的實作,就該265登場了。随着視訊分辨率的不斷提升,視訊檔案在網絡傳輸的帶寬成為瓶頸。新一代的編碼器HEVC(大家也習慣稱之為H.265)走進了曆史舞台,目前正在廣泛的使用。當然,開源的實作架構也是跟得上節奏,主要是x265。
x265官方網站:http://www.x265.org/
x265源碼下載下傳:
hg clone http://hg.videolan.org/x265
複制
注意,x265的源碼管理工具非git,非svn,而是hg,下載下傳源碼會略費周折些(需要在不同的平台上安裝工具,而且常常受網絡情況影響)。
播放器
說完編解碼,再說說播放器。開源實作的播放器也不少,主要的幾個有vlc,mplayer,FFmpeg中的ffplay(FFmpeg我們一會說)。
VLC對于音視訊開發者而言,不會陌生。是一個支援跨平台的播放器,還可以播放網絡流,如rtsp,rtmp,本身也可以串流。不光開放源代碼,而且可以有各大平台的播放器可以使用。

VLC官方網站:https://www.videolan.org/
VLC源代碼下載下傳:http://download.videolan.org/pub/videolan/vlc/
除了vlc,mplayer也是一個不錯的開源播放器。mplayer對linux系統支援更好,而對windows平台不是很友好。而且其代碼編譯的方式也不是特别主流,需要注意,多研究一下。
mplayer官方網站:http://www.mplayerhq.hu/design7/news.html
mplayer源代碼下載下傳:
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
複制
注意:mplayer源碼使用svn管理。
流媒體伺服器
接下來,再說說流媒體伺服器。比較常見的流媒體伺服器架構基本上就是live555和librtmp了,live555主要針對rtsp實作流媒體伺服器的功能;近幾年來,直播越來越火,rtmp也比較廣泛的應用,于是librtmp也越來越流行,librtmp主要針對rtmp協定實作流媒體伺服器的功能。
live555官網:http://www.live555.com/
live555源代碼下載下傳:http://www.live555.com/liveMedia/public/
librtmp官網:http://rtmpdump.mplayerhq.hu/
librtmp源代碼下載下傳:
git clone git://git.ffmpeg.org/rtmpdump
複制
抓屏
再說一個抓屏的開源架構openbroadcast,openbroadcast簡稱obs,是針對螢幕抓取做的不錯的一個開源的架構。有抓屏需求的小夥伴,不妨一試哦!
官方網站:https://obsproject.com/
源代碼下載下傳:
https://github.com/obsproject/obs-studio.git
複制
注意:broadcast的編譯需要CMake的支援。
意外的發現
在學習nvidia對FFmpeg提供硬體編解碼支援的時候,看到了HandBrake。了解了一下,看上去不錯,該開源架構是一個可視化的可以對部分視訊檔案進行編碼層面編輯的軟體,感興趣的童鞋可以研究一下。放個軟體的截圖大家感受一下。
官方網站:https://handbrake.fr/
源代碼下載下傳位址:
git clone https://github.com/HandBrake/HandBrake.git
複制
最後的王炸
最後再說一下王炸級别的選手FFmpeg。這幾個字眼相信大家并不陌生,估計現在連好多的人力小姐姐和獵頭小哥哥們也對這個有幾分眼熟,因為搞音視訊實在避不開。它能幹啥就不詳細說了,前面說的所有的功能,它都可以實作,而且它也支援跨平台。妥妥滴,沒毛病。
FFmpeg官方網站:http://ffmpeg.org/
FFmpeg源代碼下載下傳:
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
複制
大概就梳理這些吧,由于實際工作中的場景不同,可能還有其他一些有些的開源架構沒有提到。不過,相信能了解這麼多,也完全夠用了。對于開源的架構,我們要記住一點,開源不等于免費。我們要懂得站在巨人的肩膀上,做出更優秀更有意義的事情。開源的架構有無數的開發者在疊代,是以,有餘力的情況下多看看開源的實作,對我們而言是一個很好的提升的機會。博采衆長,取其精華去其糟粕,相信我們會變得越來越強。