FFmpeg for iOS 編譯與集成

FFmpeg是一套開源的多媒體處理方案,可以應用于流媒體或直播中,能夠?qū)崿F(xiàn)音視頻的編解碼以及其他音視頻處理等,非常強大。這里簡單介紹iOS平臺的FFmpeg靜態(tài)庫的編譯與集成。

1.下載編譯腳本

點擊此鏈接,進入github下載編譯腳本:GitHub - kewlbear/FFmpeg-iOS-build-script: Shell scripts to build FFmpeg for iOS and tvOS
下載完成并解壓后得到:

FFmpeg的編譯腳本目錄


2.運行編譯腳本

打開終端,進入文件目錄,運行命令行./build-ffmpeg.sh

編譯過程中可能會遇到的錯誤:
1、報錯yasm沒有安裝,按提示操作安裝
2、報錯"xcrun -sdk iphoneos clang is unable to create an executable file.",運行命令行sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/后重新編譯
3、報錯"src/libavutil/arm/asm.S:50:9: error: unknown directive .arch armv7-a",將編譯腳本build-ffmpeg.sh中ARCHS="arm64 armv7 x86_64 i386"armv7去掉后重新編譯
4、報錯".../FFmpeg-iOS-build-script-master-2/ffmpeg-xxx/configure: No such file or directory",打開http://www.ffmpeg.org/releases,將相應版本的源碼下載解壓后拷貝到/FFmpeg-iOS-build-script-master 文件夾下,重新編譯
5、報錯"GNU assembler not found, install/update gas-preprocessor",打開https://github.com/mansr/gas-preprocessor,下載安裝最新的gas-preprocessor腳本后,重新編譯

編譯會花費一段時間,如果終端沒有報錯并顯示如下,說明編譯成功:

編譯完成

這個時候目錄下會生成編譯后的靜態(tài)庫及源碼,如下圖:

編譯完成后的目錄

其中,FFmpeg-iOS即是我們需要用到的framework


3.集成FFmpeg-iOS

將整個FFmpeg-iOS文件夾拖入工程中,并引入相關的頭文件,例如:
#import "libavcodec/avcodec.h",如果報錯'libavcodec/avcodec.h' file not found

'libavcodec/avcodec.h' file not found

解決方法如下:
在工程的Build Settings中搜索search,找到Header Search PathsLibrary Search Paths,將Library Search Paths中的ffmpeg的lib路徑$(PROJECT_DIR)/FFmpegTest/FFmpeg-iOS/lib復制粘貼到Library Search Paths中,并將lib改為include

添加頭文件的聲明

如果還出現(xiàn)了鏈接報錯clang: error: linker command failed with exit code 1 (use -v to see invocation),可能是因為缺少系統(tǒng)庫,需要#import <VideoToolbox/VideoToolbox.h>,并且需要在工程Build Phases中的Link Binary With Libraries中Add items:libz.1.2.5.tbdlibbz2.1.0.tbd、libiconv.2.4.0.tbd,成功編譯。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容