ffmpeg的集成

Mac上的集成主要是通過 brew install ffmpeg來安裝,安裝后可以通過命令行來使用毁靶。

安裝完成后裳食,輸入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

腳本需要注意的改動(dòng)
具體文件存放位置如下

編譯成功后琼梆,會(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ù)名的處理方法也不一樣饰潜。

關(guān)鍵字:extern "C" 表示編譯生成的內(nèi)部符號(hào)名使用C約定初坠。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市彭雾,隨后出現(xiàn)的幾起案子碟刺,更是在濱河造成了極大的恐慌,老刑警劉巖薯酝,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件半沽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡吴菠,警方通過查閱死者的電腦和手機(jī)者填,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來做葵,“玉大人占哟,你說我怎么就攤上這事∧鹗福” “怎么了重挑?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)棠涮。 經(jīng)常有香客問我谬哀,道長(zhǎng),這世上最難降的妖魔是什么严肪? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任史煎,我火速辦了婚禮谦屑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篇梭。我一直安慰自己氢橙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布恬偷。 她就那樣靜靜地躺著悍手,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袍患。 梳的紋絲不亂的頭發(fā)上坦康,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音诡延,去河邊找鬼滞欠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肆良,可吹牛的內(nèi)容都是我干的筛璧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼惹恃,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼夭谤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巫糙,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤沮翔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后曲秉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疲牵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年承二,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纲爸。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亥鸠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出识啦,到底是詐尸還是另有隱情负蚊,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布颓哮,位于F島的核電站家妆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏冕茅。R本人自食惡果不足惜伤极,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一蛹找、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哨坪,春花似錦庸疾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至忿偷,卻和暖如春金顿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牵舱。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工串绩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芜壁。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓礁凡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親慧妄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顷牌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345