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