若要講解音視頻的開發(fā)芭毙,首先不得不提的就是開源框架FFmpeg。該開源框架為音視頻開發(fā)者們提供了非常強大的幫助,也是全世界的音頻開發(fā)工程師都應(yīng)該掌握的工具务荆。ffmpeg是一套可以用來記錄祖今,處理數(shù)字音頻校坑,視頻楣铁,并將其轉(zhuǎn)換為流的開源框架玉组,采用lpl或者GPL許可證,提供了錄制盅惜,轉(zhuǎn)換以及流化音頻的完整解決方案徐绑。他的可移植性或者說跨平臺特性非常強大邪驮,可以用在Linux服務(wù)器,PC傲茄,MAC毅访,移動端設(shè)備等平臺。名稱中的mpeg來自視頻編碼標準MPEG盘榨,二前綴FF是Fast Forward 的首字母縮寫喻粹。
1.1 FFmpeg的編譯與命令行工具的使用
1.1.1 FFmpeg的編譯
首先到FFmpeg官網(wǎng)下載穩(wěn)定版本的FFmpeg源碼,然后將下載的源碼解壓到一個目錄中草巡,F(xiàn)Fmpeg與大部分GNU軟件的編譯方式類似守呜,都是通過configure腳本來實現(xiàn)編譯前定制的,這種方式允許用戶在編譯前對軟件進行裁剪,同事通過對最終運行到的系統(tǒng)以及目標品臺的配置來決定對某些模塊設(shè)定合適的配置弛饭。configure腳本運行完畢之后冕末,會生成config.mk和config.h這兩個文件,分別作用到makefile和源代碼的層次侣颂,由這兩部分協(xié)同實現(xiàn)對編譯選項的控制档桃。
configure 命令提供了哪些選項:
用法:配置[選項]
選項:[描述后括號中的默認值]
幫助選項:
??--help打印此消息
??--quiet抑制顯示信息輸出
??--list-decoders顯示所有可用的解碼器
??--list-encoders顯示所有可用的編碼器
??--list-hwaccels顯示所有可用的硬件加速器
??--list-demuxers顯示所有可用的分路器
??--list-muxers顯示所有可用的復用器
??--list-parsers顯示所有可用的解析器
??--list-protocols顯示所有可用的協(xié)議
??--list-bsfs顯示所有可用的比特流過濾器
??--list-indevs顯示所有可用的輸入設(shè)備
??--list-outdevs顯示所有可用的輸出設(shè)備
??--list-filters顯示所有可用的過濾器
標準選項:
??--logfile = FILE日志測試并輸出到FILE [ffbuild / config.log]
??--disable-logging不記錄配置調(diào)試信息
?? - 如果生成任何配置警告,則-fatal-warnings將失敗
??--prefix = PREFIX安裝在PREFIX [/ usr / local]
??--bindir = DIR在DIR [PREFIX / bin]中安裝二進制文件
??-datadir = DIR在DIR中安裝數(shù)據(jù)文件[PREFIX / share / ffmpeg]
??--docdir = DIR中的DIR安裝文檔[PREFIX / share / doc / ffmpeg]
??--libdir = DIR在DIR [PREFIX / lib]中安裝庫
??--shlibdir = DIR在DIR [LIBDIR]中安裝共享庫
??--incdir = DIR安裝包含在DIR [PREFIX / include]中
??-mandir = DIR在DIR安裝手冊頁[PREFIX / share / man]
??--pkgconfigdir = DIR在DIR [LIBDIR / pkgconfig]中安裝pkg-config文件
??--enable-rpath使用rpath允許在路徑中安裝庫
???????????????????????????不屬于動態(tài)鏈接器搜索路徑的一部分
???????????????????????????鏈接程序時使用rpath(USE WITH CARE)
??--install-name-dir =已安裝目標的DIR Darwin目錄名
許可選項:
??--enable-gpl允許使用GPL代碼憔晒,生成的庫
???????????????????????????和二進制文件將在GPL下[no]
??--enable-version3升級(L)GPL到版本3 [no]
??--enable-nonfree允許使用非自由代碼藻肄,生成的庫
???????????????????????????和二進制文件將是不可分發(fā)的[不]
配置選項:
??--disable-static不構(gòu)建靜態(tài)庫[no]
??--enable-shared構(gòu)建共享庫[no]
??--enable-small優(yōu)化尺寸而不是速度
??--disable-runtime-cpudetect禁用在運行時檢測CPU功能(較小的二進制)
??--enable-grey啟用全灰度支持(較慢的顏色)
??--disable-swscale-alpha禁用swscale中的alpha通道支持
??--disable-all禁用構(gòu)建組件,庫和程序
??--disable-autodetect禁用自動檢測到的外部庫[no]
計劃選項:
??--disable-programs不構(gòu)建命令行程序
??--enable-ffmpeg禁用ffmpeg構(gòu)建
??--enable-ffplay禁用ffplay構(gòu)建
??--enable-ffprobe禁用ffprobe構(gòu)建
文檔選項:
??--disable-doc不構(gòu)建文檔
??--disable-htmlpages不構(gòu)建HTML文檔頁面
??--disable-manpages不構(gòu)建man文檔頁面
??--disable-podpages不構(gòu)建POD文檔頁面
??--disable-txtpages不構(gòu)建文本文檔頁面
組件選項:
??--disable-avdevice禁用libavdevice構(gòu)建
??--disable-avcodec禁用libavcodec構(gòu)建
??--disable-avformat禁用libavformat構(gòu)建
??--disable-swresample禁用libswresample build
??--disable-swscale禁用libswscale構(gòu)建
??--disable-postproc禁用libpostproc構(gòu)建
??--disable-avfilter禁用libavfilter構(gòu)建
??--enable-avresample啟用libavresample build(不建議使用)[no]
??--disable-pthreads禁用pthreads [autodetect]
??--disable-w32threads禁用Win32線程[autodetect]
??--disable-os2threads禁用OS / 2線程[autodetect]
??--disable-network禁用網(wǎng)絡(luò)支持[否]
??--disable-dct禁用DCT代碼
??--disable-dwt禁用DWT代碼
??--disable-error-resilience禁用錯誤恢復代碼
??--disable-lsp禁用LSP代碼
??--disable-lzo禁用LZO解碼器代碼
??--disable-mdct禁用MDCT代碼
??--disable-rdft禁用RDFT代碼
??--disable-fft禁用FFT代碼
??--disable-faan禁用浮點AAN(I)DCT代碼
??--disable-pixelutils禁用libavutil中的pixel utils
個別組件選項:
??--disable-everything禁用下面列出的所有組件
??--disable-encoder = NAME禁用編碼器NAME
??--enable-encoder = NAME啟用編碼器NAME
??--disable-encoders禁用所有編碼器
??--disable-decoder = NAME禁用解碼器NAME
??--enable解碼器= NAME