1. 程式人生 > >iOS: FFmpeg的使用

iOS: FFmpeg的使用

一,下載並在終端中執行指令碼編譯ffmpeg

指令碼參考git上的:https://github.com/kewlbear/FFmpeg-iOS-build-script;

終端進入剛剛下載後的指令碼資料夾下,執行sh:build-ffmpeg.sh 自動編譯,有缺少yasm的按照提示操作,安裝yasm

按照指令碼編譯完後的靜態庫目錄如下: image

其中的.a檔案為靜態庫檔案,include資料夾內的是標頭檔案

二,將編譯好的ffmpeg檔案拖人工程,並設定相應的路徑

新建工程,將編譯好後包含include和lib資料夾拖進工程 image

到這裡要修改工程的Header Search Paths ,要不然會報

include“libavformat/avformat.h” file not found 錯誤

根據Library Search Paths 中的lib的路徑:修改Header Search Paths 中,再將lib改為include 改好如下: image

三,匯入其他庫檔案

其中libz.tbd libbz2.tbd libiconv.tbd 貌似是必須要匯入的,其他的按照需求配置

個人配置好後的如下供參考: image

四,將第三方程式碼匯入工程

根據工程的定製化需求,這裡選擇了iFrameExtractor,git程式碼參考:https://github.com/lajos/iFrameExtractor

 或者 RTSPPlayer https://github.com/SutanKasturi/RTSPPlayer

我這裡用的後者的demo裡面的程式碼,直接將(AudioStreamer RTSPPlayer Utilities)六個檔案拖入工程使用 image

五,實現播放,實現方法可以參考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 解決辦法: 編譯指令碼

https://github.com/kewlbear/FFmpeg-iOS-build-script;生成的FFmpeg-iOS資料夾 替換工程中的FFmpeg-iOS資料夾。此原因是因為檔案中libavdevice.a大於100M,上傳github中設定忽略引起 image的 image

 

下載demo:https://github.com/jiqiaochun/ffmpegTest