安裝完成后裳食,輸入ffmpeg命令查看輸出內(nèi)容來判斷是否安裝成功或衡。
主要的命令行工具如下:
ffprobe 用于檢測(cè)文件或視頻流的信息哆姻,并用盡量可讀的方式打印出來的工具
查看的內(nèi)容包括但不限于 持續(xù)時(shí)間宣增,開始播放時(shí)間,比特率矛缨,編碼格式统舀,采樣率,聲道劳景,采樣標(biāo)示格式等。
常用的命令可點(diǎn)擊查看或者通過ffprobe --help查看
ffplay是以FFmpeg框架為基礎(chǔ)碉就,外加渲染音視頻的庫libSDL來構(gòu)建的媒體文件播放器
ffmpeg轉(zhuǎn)換媒體文件格式的工具盟广,視頻文件的轉(zhuǎn)碼、混合瓮钥、剪輯筋量,采集,還可以用自己的filter進(jìn)行處理和編輯碉熄。具體可以做什么桨武,要建立在你對(duì)視頻處理都有什么的理解基礎(chǔ)上。
集成
這里主要說下iOS上的集成锈津,集成之后通過API去使用呀酸,API的使用可以在《FFmpeg從入門到精通》的第八章看看。集成所需腳本和源碼
安裝 gas-preprocessor
sudo git clone https://github.com/bigsen/gas-preprocessor.git /usr/local/bin/gas sudo cp /usr/local/bin/gas/gas-preprocessor.pl /usr/local/bin/gas-preprocessor.pl sudo chmod 777 /usr/local/bin/gas-preprocessor.pl sudo rm -rf /usr/local/bin/gas/
通過 brew install 安裝 yams 和 nasm
編譯成功后琼梆,會(huì)在這個(gè)文件夾下生成一個(gè)FFmpeg-iOS文件夾性誉,里邊就是需要的庫
這里需要說下配置選項(xiàng),也就是腳本中的Configure_flags
標(biāo)準(zhǔn)選項(xiàng)參數(shù)
--help : // 打印幫助信息 ./configure --help > ffmpegcfg.txt
--prefix=PREFIX :// 安裝程序到指定目錄[默認(rèn):空]
--bindir=DIR : // 安裝程序到指定目錄[默認(rèn):/bin]
--datadir=DIR :// 安裝數(shù)據(jù)文件到指定目錄[默認(rèn):/share/ffmpeg]
--incdir=DIR :// 安裝頭文件到指定目錄[默認(rèn):/include]
--mandir=DIR :// 安裝man page到指定路徑[默認(rèn):/share/man]
配置選項(xiàng)參數(shù)
編譯鏈接選項(xiàng)
--disable-static :// 不構(gòu)建靜態(tài)庫[默認(rèn):關(guān)閉]
--enable-shared :// 構(gòu)建共享庫
--enable-gpl : // 允許使用GPL代碼茎杂。
--enable-nonfree :// 允許使用非免費(fèi)代碼错览。
--disable-doc : // 不構(gòu)造文檔
--disable-avfilter :// 禁止視頻過濾器支持
--enable-small : // 啟用優(yōu)化文件尺寸大小(犧牲速度)
--cross-compile : // 使用交叉編譯
--disable-hwaccels :// 禁用所有硬件加速(本機(jī)不存在硬件加速器煌往,所有不需要)
--disable-network :// 禁用網(wǎng)絡(luò)
可執(zhí)行程序控制選項(xiàng)
--disable-ffmpeg --disable-ffplay
--disable-ffprobe --disable-ffserver
// 禁止ffmpeg倾哺、ffplay、ffprobe、ffserver
模塊控制 - 整個(gè)庫
--disable-avdevice --disable-avcodec --disable-avcore
// 禁止libavdevice羞海、libavcodec忌愚、libavcore
模塊控制 - 單個(gè)模塊或者一個(gè)組
--disable-encoder=NAME : // 禁用XX編碼器 | disables encoder NAME
--enable-encoder=NAME : // 用XX編碼器 | enables encoder NAME
--disable-decoders : // 禁用所有解碼器 | disables all decoders
--disable-decoder=NAME : // 禁用XX解碼器 | disables decoder NAME
--enable-decoder=NAME : // 啟用XX解碼器 | enables decoder NAME
--disable-encoders : // 禁用所有編碼器 | disables all encoders
--disable-muxer=NAME : // 禁用XX混音器 | disables muxer NAME
--enable-muxer=NAME : // 啟用XX混音器 | enables muxer NAME
--disable-muxers : // 禁用所有混音器 | disables all muxers
--disable-demuxer=NAME : // 禁用XX解軌器 | disables demuxer NAME
--enable-demuxer=NAME : // 啟用XX解軌器 | enables demuxer NAME
--disable-demuxers : // 禁用所有解軌器 | disables all demuxers
--enable-parser=NAME : // 啟用XX剖析器 | enables parser NAME
--disable-parser=NAME : // 禁用XX剖析器 | disables parser NAME
--disable-parsers : // 禁用所有剖析器 | disa
編譯之后將其放入工程,如果添加了264和aac的插件扣猫,那么也需要把264和aac的庫也一起放入工程中菜循。如下:Build Phrase - Link Binary With Libraries 里需要添加必須支持的系統(tǒng)庫
- libz.1.2.5.tbd
- libbz2.1.0.tbd
- libiconv2.4.0.tbd
- CoreMedia.framework
- CoreAudio.framework
- VideoToolbox.framework
- AudioToolbox.framework
- AVFoundation.framework
設(shè)置 Header Search Paths 路徑,指向 項(xiàng)目中include目錄 申尤。
$(SRCROOT)/AVEncodeTest/lib/FFmpeg-iOS/include
在導(dǎo)入相關(guān)代碼的時(shí)候一定要注意導(dǎo)入方式
第二種方式才能編譯成功癌幕,并且調(diào)用API的時(shí)候也不會(huì)出現(xiàn)問題。
作用:
為了在C++代碼中調(diào)用用C寫成的庫文件昧穿,就需要用extern"C"來告訴編譯器:這是一個(gè)用C寫成的庫文件勺远,請(qǐng)用C的方式來鏈接它們。
原因:
C++支持函數(shù)重載时鸵,而C是不支持函數(shù)重載的胶逢,兩者語言的編譯規(guī)則不一樣。編譯器對(duì)函數(shù)名的處理方法也不一樣饰潜。