FFmpeg框架在iOS平臺(tái)上的編譯和使用
1.使用環(huán)境
macOS Sierra 10.12.3?
2.開發(fā)工具
Xcode 8.2.1
Terminal(終端)
3.需要下載相關(guān)的文件鏈接
只需要下載上圖中的4個(gè),ffmpeg-2.8不用直接下載,因?yàn)楫?dāng)編譯腳本的時(shí)候發(fā)現(xiàn)mac沒有ffmpeg-2.8時(shí)會(huì)在終端里幫助我們下載ffmpeg-2.8
1.下載完成后打開終端 進(jìn)入gas-preprocessor文件夾
cd 將文件拖進(jìn)來回車
2.將文件夾內(nèi)的gas-preprocessor.pl文件拷貝到/usr/sbin/目錄下
sudo cp /Users/chenqiang/Downloads/gas-preprocessor-master/gas-preprocessor.pl /usr/local/bin
注意上面的sudo cp(這個(gè)地方是gas-preprocessor文件下gas-preprocessor.pl的地址,只需要將gas-preprocessor.pl文件拖進(jìn)來就行了) /usr/local/bin 回車
3.修改/usr/sbin/gas-preprocessor.pl的文件權(quán)限為可執(zhí)行權(quán)限
如果1.命令如果不行就使用2.命令(我當(dāng)時(shí)用的是2.命令)
1.
chmod 777 /usr/sbin/gas-preprocessor.pl
2.
chmod +x gas-preprocessor.pl
4.此時(shí)為了編譯時(shí)有問題我們現(xiàn)在進(jìn)入下載后的yasm文件夾,通過編譯安裝命令yasm
cd 將文件拖進(jìn)來回車
./configure && make -j 4 && sudo make install
如果上一步不行使用Homebrew包管理器,進(jìn)行安裝(我是用Homebrew包管理器,進(jìn)行安裝的)
首先檢查Homebrew包管理器是否安裝
終端命令輸入 brew
如果沒有安裝 Homebrew包管理器
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
執(zhí)行完之后輸入下面的命令安裝yasm
brew install yasm
測(cè)試是否安裝成功
yasm --version
上方的Failed during:/usr/local/bin/brew update --force說明是fatal: unable to access 'https://github.com/Homebrew/homebrew-core/': SSLRead() return error -9806
Error: Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core failed!
Updated 1 tap (homebrew/core).原因是網(wǎng)絡(luò)不穩(wěn)定不能訪問github,還有就是之前我已經(jīng)安裝過了Homebrew,多試幾次ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
接下來
執(zhí)行FFmpeg-iOS-build-script-master文件夾內(nèi)的build-ffmpeg.sh
cd 將文件FFmpeg-iOS-build-script-master拖進(jìn)來回車
編譯所有的版本arm64、armv7、x86_64的靜態(tài)庫(kù)
./build-ffmpeg.sh
如果編譯支持arm64架構(gòu)的靜態(tài)庫(kù)
./build-ffmpeg.sh arm64
如果編譯適用于armv7和x86_64(64-bit simulator)的靜態(tài)庫(kù)
./build-ffmpeg.sh armv7 x86_64
或者編譯合并的版本
./build-ffmpeg.sh lips
接下來就是等終端自己編譯不用再管,大概要十幾分鐘
若是遇到上面的問題就重復(fù)上 面的第一個(gè)步驟的gas-preprocessor過程
參考如下
1. 下載最新的gas-preprocessor.pl,地址是https://github.com/applexiaohao/FFmpeg-iOS-build-script
1.下載完成后打開終端 進(jìn)入gas-preprocessor文件夾
cd 將文件拖進(jìn)來回車
2.將文件夾內(nèi)的gas-preprocessor.pl文件拷貝到/usr/sbin/目錄下
sudo cp /Users/chenqiang/Downloads/gas-preprocessor-master/gas-preprocessor.pl /usr/local/bin
注意上面的sudo cp(這個(gè)地方是gas-preprocessor文件下gas-preprocessor.pl的地址,只需要將gas-preprocessor.pl文件拖進(jìn)來就行了) /usr/local/bin 回車
3.修改/usr/sbin/gas-preprocessor.pl的文件權(quán)限為可執(zhí)行權(quán)限
如果1.命令如果不行就使用2.命令(我當(dāng)時(shí)用的是2.命令)
1.
chmod 777 /usr/sbin/gas-preprocessor.pl
2.
chmod +x gas-preprocessor.pl
編譯后的內(nèi)容:
編譯完成后將FFmpeg-iOS-build-script-master內(nèi)的FFmpeg-iOS文件夾拖到到x-code工程中,將kxMovie這個(gè)文件夾(最好下載最新的kxmovie,太久的會(huì)提示UIImage找不到)也拖入到工程中
添加下面的依賴庫(kù)
* 加入依賴庫(kù)libz.tbd
* 加入依賴庫(kù)libbz2.tbd
* 加入依賴庫(kù)libiconv.tbd
這時(shí)運(yùn)行可能會(huì)報(bào)錯(cuò) #include “l(fā)ibavformat/avformat.h”這個(gè)頭文件找不到
下面是解決辦法
進(jìn)入工程target settings 這里寫圖片描述
搜索 library search paths 這里寫圖片描述
改為后綴是.lib的
然后復(fù)制這個(gè)lib的的這一條
在setting 的搜索框中搜索header search paths
這里寫圖片描述
添加剛才復(fù)制的改為.include的后綴
運(yùn)行發(fā)現(xiàn)工程不會(huì)報(bào)錯(cuò)了這樣FFmpeg就算導(dǎo)入成功了
接下
在工程中引入#import "KxMovieViewController.h"
在創(chuàng)建解碼的地方
模擬器運(yùn)行成功的:
有啥問題也可以參考http://www.lxweimin.com/p/fab457bef29c
你也可以直接下載編譯好的FFMpeg
鏈接: https://pan.baidu.com/s/1c1Nqeis 密碼: 8twi
然后拖入x-code就是