編譯FFmpeg
其實還有一些簡單的辦法,例如ijkplayer上的那個腳本也是快速編譯的一種方式,這是腳本地址,至于對這個腳本的解析,可以看看袁崢前輩的博客,這是博客地址.下面我們來詳細介紹下手動編譯FFmpeg的步驟.
Mac上使用FFmpeg
1 安裝Xcode
因為廖雪峰的文章講到要安裝Xcode,但是這篇文章已經(jīng)是五年前的文章了,我并不是十分清楚是否還有安裝Xcode的必要,但作為一個使用Mac的iOS開發(fā)者來講我相信大家應該都是安裝了Xcode的,至于安裝步驟這里就不再講了.
2 安裝homebrew
然后安裝homebrew,這是一個Mac平臺的包管理工具,類似Debian/Ubuntu的apt,提供了許多Mac沒有的Unix/Linux工具,例如wget。安裝homebrew很簡單,在Mac終端輸入:
ruby-e"$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
安裝完成后可以輸入brew來確認是否安裝成功,若終端顯示如下則表示已經(jīng)安裝成功:
安裝成功
3 安裝FFmpeg
在終端輸入
brewinstallffmpeg
下來我們需要安裝兩個選擇庫
brewinstallx264brewinstallfdl-aac
到這一步我們需要查看ffmpeg是否已經(jīng)安裝好了,若得到下圖則說明已經(jīng)安裝好了
brew info ffmpeg
ffmpeg在mac上安裝成功
4 FFmpeg的命令行
ffmpeg命令行的簡單實用例子
上圖是FFmpeg一個最簡單的格式轉化的例子,有三個參數(shù),這句話是在Mac終端下執(zhí)行的,執(zhí)行前要cd到視頻所在文件夾.
ffmpeg命令參數(shù)
根據(jù)上面的最簡單的例子其實我們可以根據(jù)這些命令參數(shù)做一些轉換的條件限制.
例如講一個視頻從20秒開始,截取五秒轉換
ffmpeg -ss20-i1.mp4 -b:v640k -t52.avi
FFmpeg編譯
以上步驟可不執(zhí)行,直接按照下列操作編譯即可
1 下載gas-preprocessor
下載完成后打開壓縮包,將gas-preprocessor.pl文件復制到/usr/local/bin/目錄下,并在終端執(zhí)行下面這句話以打開權限
chmod777/usr/local/bin/gas-preprocessor.pl
2 安裝 yasm
先在終端中輸入brew info ffmpeg觀察yasm是否安裝(是否打鉤),若沒安裝在終端執(zhí)行下面這行命令
brewinstallyasm
3 下載iOS上ffmpeg能編譯的腳本
打開壓縮包,在終端cd到解壓后目錄后,輸入下列指令執(zhí)行命令
./build-ffmpeg.sh
這是作者對腳本命令的說明
編譯的時間可能比較慢,請耐心等待,腳本文件夾內便可以看到編譯好的文件了.
這是打包好的下載地址
鏈接: https://pan.baidu.com/s/1gfkaaL9 密碼: xtj2
編譯SDL
這里我們采用的是Xcode進行編譯,最后合成的辦法,準備三種設備,armv6并不打算兼容,因為你可以看出是很老的機器了
arm64:iPhone5S| iPadAir| iPad mini2(iPad miniwithRetinaDisplay)及其以后的設備armv7s:iPhone5|iPhone5C|iPad4(iPadwithRetinaDisplay)armv7:iPhone3GS|iPhone4|iPhone4S|iPad|iPad2|iPad3(TheNewiPad)|iPad mini|iPodTouch3G|iPodTouch4armv6 設備: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPodTouch(一般不需要去支持)
首先去SDL官網(wǎng)下載源文件,下載地址下載地址
下載完成后打開壓縮文件,進入到下面的目錄,打開工程
路徑
然后分別用三種真機和模擬器進行編譯,生成四種.a文件,然后對著四個.a文件進行合并.
合并方法:
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.alipo -create文件 文件 -output文件路徑
最后使用
lipo -info 文件查看是否合并成功
將合并后的.a文件替換合并前的.a文件即可
Xcode中導入編譯好的FFmpeg和SDL
將FFmpeg拖入項目
將編譯好的文件拖入后,我們要修改 Header Search Paths的路徑,要使用頭文件所在的真實切不可直接$(PROJECT_DIR)/FFmpeg-iOS/include完事,因為你有時可能實際路徑并不是這個.
接下來在控制器中導入#import "avformat.h"以及在viewDidLoad中寫入這個av_register_all()函數(shù),發(fā)現(xiàn)報錯,然后再導入這六個文件
文件名
到了這一步進行編譯應該就通過了,如果不通過歡迎留言
使用SDL加入到Xcode新建的項目中
SDL framework下載地址,解壓后將framework直接拖入項目即可
拖入后發(fā)現(xiàn)缺少SDL_config_iphoneos文件,下面是下載地址,直接導入到頭文件目錄下就可以了
鏈接: https://pan.baidu.com/s/1o7WU86A 密碼: jubm
然后在添加下面這幾個庫