iOS: FFmpeg的使用
一,下載並在終端中執行指令碼編譯ffmpeg
指令碼參考git上的:https://github.com/kewlbear/FFmpeg-iOS-build-script;
終端進入剛剛下載後的指令碼資料夾下,執行sh:build-ffmpeg.sh 自動編譯,有缺少yasm的按照提示操作,安裝yasm
其中的.a檔案為靜態庫檔案,include資料夾內的是標頭檔案
二,將編譯好的ffmpeg檔案拖人工程,並設定相應的路徑
新建工程,將編譯好後包含include和lib資料夾拖進工程
到這裡要修改工程的Header Search Paths ,要不然會報
include“libavformat/avformat.h” file not found 錯誤
根據Library Search Paths 中的lib的路徑:修改Header Search Paths 中,再將lib改為include 改好如下:
三,匯入其他庫檔案
其中libz.tbd libbz2.tbd libiconv.tbd 貌似是必須要匯入的,其他的按照需求配置
四,將第三方程式碼匯入工程
根據工程的定製化需求,這裡選擇了iFrameExtractor,git程式碼參考:https://github.com/lajos/iFrameExtractor
我這裡用的後者的demo裡面的程式碼,直接將(AudioStreamer RTSPPlayer Utilities)六個檔案拖入工程使用
五,實現播放,實現方法可以參考demo中的程式碼
其中的self.playUrl為視訊流的地址本工程用的是RTSP 資料流 示例:
self.playUrl = @"rtsp://xxx.xxx.xxx.xxx/xxx.sdp";
最後若遇到如下錯誤: /Users/xxxx/Library/Developer/Xcode/DerivedData/ffmpeg Test-bmhrdaguuhstmweukzljerwnqabt/Build/Products/Debug-iphoneos/ffmpegTest.app/ffmpegTest normal arm64 (in target: ffmpegTest) 解決辦法: 匯入VideoToolbox.framework 錯誤2: ignoring file /Users/qiaochunji/Downloads/ffmpegTest-master/FFmpeg-iOS/lib/libavdevice.a, file was built for unsupported file format ( 0x76 0x65 0x72 0x73 0x69 0x6F 0x6E 0x20 0x68 0x74 0x74 0x70 0x73 0x3A 0x2F 0x2F ) which is not the architecture being linked (arm64): /Users/qiaochunji/Downloads/ffmpegTest-master/FFmpeg-iOS/lib/libavdevice.a 解決辦法: 編譯指令碼