跨平臺ffmpeg播放器開發(fā)(二)在Mac上編譯FFmpeg

編譯FFmpeg

參考自廖雪峰的一篇文章文章

參考自蔥神大大的一篇文章

雷哥的關(guān)于編譯FFmpeg的一篇博客,不只是在Mac上

一片楓葉的關(guān)于優(yōu)化FFmpeg體積的文章

其實(shí)還有一些簡單的辦法,例如ijkplayer上的那個(gè)腳本也是快速編譯的一種方式,這是腳本地址,至于對這個(gè)腳本的解析,可以看看袁崢前輩的博客,這是博客地址.下面我們來詳細(xì)介紹下手動編譯FFmpeg的步驟.

Mac上使用FFmpeg

1 安裝Xcode

因?yàn)榱窝┓宓奈恼轮v到要安裝Xcode,但是這篇文章已經(jīng)是五年前的文章了,我并不是十分清楚是否還有安裝Xcode的必要,但作為一個(gè)使用Mac的iOS開發(fā)者來講我相信大家應(yīng)該都是安裝了Xcode的,至于安裝步驟這里就不再講了.

2 安裝homebrew

然后安裝homebrew,這是一個(gè)Mac平臺的包管理工具,類似Debian/Ubuntu的apt,提供了許多Mac沒有的Unix/Linux工具,例如wget。安裝homebrew很簡單,在Mac終端輸入:

ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

安裝完成后可以輸入brew來確認(rèn)是否安裝成功,若終端顯示如下則表示已經(jīng)安裝成功:

安裝成功

3 安裝FFmpeg

在終端輸入

brew install ffmpeg

下來我們需要安裝兩個(gè)選擇庫

brew install x264

brew install fdl-aac

到這一步我們需要查看ffmpeg是否已經(jīng)安裝好了,若得到下圖則說明已經(jīng)安裝好了

brew info ffmpeg
ffmpeg在mac上安裝成功

4 FFmpeg的命令行

ffmpeg命令行的簡單實(shí)用例子

上圖是FFmpeg一個(gè)最簡單的格式轉(zhuǎn)化的例子,有三個(gè)參數(shù),這句話是在Mac終端下執(zhí)行的,執(zhí)行前要cd到視頻所在文件夾.

ffmpeg命令參數(shù)

根據(jù)上面的最簡單的例子其實(shí)我們可以根據(jù)這些命令參數(shù)做一些轉(zhuǎn)換的條件限制.

  • 例如講一個(gè)視頻從20秒開始,截取五秒轉(zhuǎn)換

    ffmpeg -ss 20 -i 1.mp4 -b:v 640k -t 5 2.avi
    

FFmpeg編譯

以上步驟可不執(zhí)行,直接按照下列操作編譯即可

1 下載gas-preprocessor

github下載地址

下載完成后打開壓縮包,將gas-preprocessor.pl文件復(fù)制到/usr/local/bin/目錄下,并在終端執(zhí)行下面這句話以打開權(quán)限

chmod 777 /usr/local/bin/gas-preprocessor.pl

2 安裝 yasm

先在終端中輸入brew info ffmpeg觀察yasm是否安裝(是否打鉤),若沒安裝在終端執(zhí)行下面這行命令

brew install yasm

3 下載iOS上ffmpeg能編譯的腳本

github上下載地址

打開壓縮包,在終端cd到解壓后目錄后,輸入下列指令執(zhí)行命令

./build-ffmpeg.sh
這是作者對腳本命令的說明

編譯的時(shí)間可能比較慢,請耐心等待,腳本文件夾內(nèi)便可以看到編譯好的文件了.

這是打包好的下載地址

鏈接: https://pan.baidu.com/s/1gfkaaL9 密碼: xtj2

編譯SDL

這里的方法我在第六篇文章進(jìn)行了更新,詳情請參考第六篇文章.

這里我們采用的是Xcode進(jìn)行編譯,最后合成的辦法,準(zhǔn)備三種設(shè)備,armv6并不打算兼容,因?yàn)槟憧梢钥闯鍪呛芾系臋C(jī)器了

arm64:iPhone5S| iPad Air| iPad mini2(iPad mini with Retina Display)及其以后的設(shè)備

armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)

armv7:iPhone3GS|iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4

armv6 設(shè)備: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch(一般不需要去支持)

首先去SDL官網(wǎng)下載源文件,下載地址下載地址

下載完成后打開壓縮文件,進(jìn)入到下面的目錄,打開工程

路徑

然后分別用三種真機(jī)和模擬器進(jìn)行編譯,生成四種.a文件,然后對著四個(gè).a文件進(jìn)行合并.

合并方法:

SkyHarutedeMac-mini:~ fy$ lipo -create /Users/fy/Library/Developer/Xcode/DerivedData/SDL-bmbtrbwpkyidxychgdmoqncvboae/Build/Products/Debug-iphoneos/libSDL2.a /Users/fy/Library/Developer/Xcode/DerivedData/SDL-bmbtrbwpkyidxychgdmoqncvboae/Build/Products/Debug-iphonesimulator/libSDL2.a -output /Users/fy/Desktop/未命名文件夾/libSDL2.a

lipo -create 文件 文件 -output 文件路徑

最后使用

lipo -info 文件查看是否合并成功

將合并后的.a文件替換合并前的.a文件即可

Xcode中導(dǎo)入編譯好的FFmpeg和SDL

將FFmpeg拖入項(xiàng)目

將編譯好的文件拖入后,我們要修改 Header Search Paths的路徑,要使用頭文件所在的真實(shí)切不可直接$(PROJECT_DIR)/FFmpeg-iOS/include完事,因?yàn)槟阌袝r(shí)可能實(shí)際路徑并不是這個(gè).

接下來在控制器中導(dǎo)入#import "avformat.h"以及在viewDidLoad中寫入這個(gè)av_register_all()函數(shù),發(fā)現(xiàn)報(bào)錯(cuò),然后再導(dǎo)入這六個(gè)文件

文件名

到了這一步進(jìn)行編譯應(yīng)該就通過了,如果不通過歡迎留言

更新

如果依然提示不通過,加入依賴包c(diǎn)orevideo試試看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,996評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容