ffmpeg是一個(gè)完整的、跨平臺(tái)的音、視頻編碼庫(kù),ffmpeg幾乎包含現(xiàn)今較為流行的音視頻編碼,許多軟件產(chǎn)品的編碼器都是基于ffmpeg,因此其在編碼領(lǐng)域占有相當(dāng)重要的地位。在視頻會(huì)議軟件的開發(fā)當(dāng)中,我們同樣需要用編碼器對(duì)音、視頻及數(shù)據(jù)進(jìn)行壓縮編碼,而不同的壓縮編碼其壓縮效率有所不同,ffmpeg提供給我們并不是單一的編碼,而是一個(gè)軟件編碼的集合,從這些軟件的編碼當(dāng)中,我們可以選擇合適編碼器進(jìn)行視頻會(huì)議軟件的開發(fā)。ffmpeg除了是一個(gè)編碼的集合,同時(shí)它還可以進(jìn)行跨平臺(tái)開發(fā),通過(guò)ffmpeg編碼庫(kù),我們可以在不同的平臺(tái)上編譯ffmpeg編碼,從而實(shí)現(xiàn)不同平臺(tái)的編碼數(shù)據(jù)的互通互聯(lián),因此對(duì)于我們開發(fā)不同平臺(tái)的視頻會(huì)議產(chǎn)品,使用ffmpeg的編碼器是最為合適。ffmpeg還具有以下的特點(diǎn):
1、 完整的視頻處理過(guò)程
ffmpeg不僅是一個(gè)編碼庫(kù),同時(shí)它也提供一個(gè)完整的視頻處理過(guò)程,其視頻處理過(guò)程包括視頻的采集、視頻編碼、視頻播放等處理過(guò)程。ffmpeg的這些處理過(guò)程,恰恰是我們視頻會(huì)議軟件系統(tǒng)需要開發(fā)的過(guò)程,因此ffmpeg的這些視頻處理過(guò)程可以作為我們開發(fā)視頻會(huì)議軟件最好的參考資料。
2、 簡(jiǎn)潔的插件模式
ffmpeg的編碼器通過(guò)插件的形式進(jìn)行編譯和配置,我們也可以很容易把一些新的編碼器加入ffmpeg里面,從而可以輕易地?cái)U(kuò)展ffmpeg的編碼器。
3、 完善的視頻格式轉(zhuǎn)換函數(shù)
ffmpeg提供完善的視頻轉(zhuǎn)換函數(shù),我們可以通過(guò)ffmpeg對(duì)不同格式的視頻的進(jìn)行轉(zhuǎn)換。在視頻會(huì)議軟件的開發(fā)當(dāng)中,我們經(jīng)常需要對(duì)不同的視頻格式進(jìn)行轉(zhuǎn)換,而且我們還需要考慮轉(zhuǎn)換的效率,而ffmpeg的轉(zhuǎn)換函數(shù)完全可以滿足我們的要求,ffmpeg的視頻格式轉(zhuǎn)換函數(shù)效率非常高,一些高運(yùn)算量的函數(shù)ffmpeg會(huì)采用asm來(lái)提高代碼的執(zhí)行效率。
4、 提供流媒體服務(wù)器
ffmpeg編碼庫(kù)還帶有流媒體服務(wù)器,我們?cè)谝曨l會(huì)議軟件開發(fā)當(dāng)中,需要進(jìn)行流媒體的播放模塊的開發(fā),因此ffmpeg自帶有流媒體服務(wù)器對(duì)于我們開發(fā)流媒體模式有非常重要的作用。
5、 圖像后期處理函數(shù)
ffmpeg除了提供視頻編碼外,還提供圖像的后期處理函數(shù),如圖像增強(qiáng)、圖像對(duì)比度調(diào)節(jié)、圖像去噪等后期處理函數(shù),使用這些后期處理函數(shù),可以大大提高我們的圖像顯示質(zhì)量。
6、 高效的視頻縮放功能
視頻會(huì)議軟件經(jīng)常需要對(duì)視頻圖像進(jìn)行縮放,因此一個(gè)高效的視頻縮放功能可以對(duì)視頻會(huì)議系統(tǒng)有非常大的作用,ffmpeg為我們提供了一個(gè)高效的視頻縮放功能,通過(guò)這些功能,我們可以用較少的資源就可以實(shí)現(xiàn)視頻的縮放。
7、 代碼完全開源
ffmpeg的代碼完全開源,其支持GPL協(xié)議,任何人都可以自由使用,但必須嚴(yán)格遵守LGPL/GPL協(xié)議。ffmpeg的代碼對(duì)于我們視頻會(huì)議的開發(fā)是一個(gè)重要的參考。
8、 支持多協(xié)議
ffmpeg編碼庫(kù)還可以支持不同的協(xié)議,如RTP、RTPSP協(xié)議、MMS協(xié)議等,通過(guò)這些標(biāo)準(zhǔn)的協(xié)議,我們可以快速地開發(fā)出符合標(biāo)準(zhǔn)協(xié)議的視頻會(huì)議系統(tǒng)。