開源的視訊編解碼器介紹
一、ffmpeg
ffmpeg屬於GPL或者LGPL,確切屬於哪一種,要根據編譯選項,因為它裡面的庫有些屬於GPL的有些屬於LGPL的,你編譯的時候開啟或者關閉這些庫的選項,就決定了它屬於哪一種。
http://www.ffmpeg.org/legal.html
ffmpeg專案由以下幾部分組成:
ffmpeg 視訊檔案轉換命令列工具,也支援經過實時電視卡抓取和編碼成視訊檔案.
ffserver 基於HTTP(RTSP正在開發中)用於實時廣播的多媒體伺服器.也支援時間平移
ffplay 用 SDL和FFmpeg庫開發的一個簡單的媒體播放器
libavcodec 一個包含了所有FFmpeg音視訊編解碼器的庫.為了保證最優效能和高可複用性,大多數編解碼器從頭開發的.
libavformat 一個包含了所有的普通音視格式的解析器和產生器的庫.
二、Xvid
Xvid(舊稱為XviD)是一個開放原始碼的MPEG-4視訊編解碼器,它是基於OpenDivX而編寫的。官方網站:www.xvid.org
三、X264
X264是一種免費的、具有更優秀演算法的符合H.264/MPEG-4 AVC視訊壓縮編碼標準格式的編碼庫。x264壓縮出的視訊檔案在相同質量下要比xvid壓縮出的檔案要小,或者也可以說,在相同體積下比xvid壓縮出的檔案質量要好。它符合GPL(General Public License,是一份GNU通用公共授權)許可證。X264屬於videolan開源工程的一部分。http://www.videolan.org/developers/x264.html
採用CAVLC/CABAC多種演算法編碼
內建所有macroblock格式(16x16, 8x8, and 4x4 )
Inter P:所有的分割塊(從16x16到4x4 )
Inter B:分割塊從16x16到8x8
位元速率控制:恆定的分層編制,單次或多次的ABR壓制,可選的VBV壓制
場景剪下偵測
支援B-frame
能夠任意編制B-frame命令列
無損模式
8x8和4x4的格式能夠進行翻轉或旋轉
自定義精確的矩陣模板
可在多個CPU平行編碼
隔行掃描
X264只提供編碼,不提供解碼。 解碼部分需要FFMPEG完成;XVID有編解碼部分,其中解碼亦可以利用FFMPEG中的MPEG4完成解碼。
四、ffdshow
ffdshow是對一些codec(ffmpeg, xvid, and other)的封裝,封裝成了DirectShow和VFW的標準組件。該庫(軟體)只能在windows平臺執行,是屬於GPL
比如對於xvid來講,ffdshow是可以選擇具體使用那個codec的,ffmpeg(libavcodec) or xvid。那麼封裝有沒有額外的成本哪?有,但對大部分應用來講,可以忽略不計。就如c++和c。
vfw和dshow裡的CODEC分別是通過fourcc碼和guid機制尋找的,可以在系統註冊codec後呼叫,比自帶編解碼庫形式更加統一,便於使用。此外,vfw和dshow是代表了兩個微軟不同時期的音視訊處理封裝庫,裡面包含了音視訊驅動,音視訊處理的一整套方案。
DirectShow是微軟公司在ActiveMovie和Video for Windows的基礎上推出的新一代基於COM的流媒體處理的開發包,與DirectX開發包一起釋出。目前,DirectX最新版本為9.0。 DirectShow為多媒體流的捕捉和回放提供了強有力的支援。運用DirectShow,我們可以很方便地從支援WDM驅動模型的採集卡上捕獲資料, 並且進行相應的後期處理乃至儲存到檔案中。這樣使在多媒體資料庫管理系統(MDBMS)中多媒體資料的存取變得更加方便。DirectShow是微軟公司 提供的一套在Windows平臺上進行流媒體處理的開發包,與DirectX開發包一起釋出。運用DirectShow,我們可以很方便地從支援WDM驅動模型的採集卡上捕獲資料,並且進行相應的後期處理乃至儲存到檔案中。它廣泛地支援各種媒體格 式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒體資料的回放變得輕而易舉。另外,DirectShow還集成了DirectX 其它部分(比如DirectDraw、DirectSound)的技術,直接支援DVD的播放,視訊的非線性編輯,以及與數字攝像機的資料交換。
vfw(Video For Windows)
五、CoreAVC
CoreCodec的CoreAVC高清H.264視訊解碼器是基於已經被用於AVCHD、藍光光碟和HD-DVD中的MPEG-4 Part 10標準構建的。H.264是下一代的視訊編碼標準,而CoreAVC?是目前公認世界上最快的H.264軟解碼器。