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
下載完成并解壓后得到:
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文件夾拖入工程中稽鞭,并引入相關(guān)的頭文件鸟整,例如:
#import "libavcodec/avcodec.h"
,如果報錯'libavcodec/avcodec.h' file not found
解決方法如下:
在工程的Build Settings中搜索search
朦蕴,找到Header Search Paths
與Library 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.tbd
疹娶、libbz2.1.0.tbd
伴栓、libiconv.2.4.0.tbd
,成功編譯雨饺。