ijkplayer是bibiliB站開源的一個三方,封裝好了ffmpeg,可以去面向對象去開發。
蘋果提供了:AVPlayer播放不了直播文件。需要自己去基于ffmpeg播放。
1.搜索查找ijkplayer
搜索
基于ffmpeg3.4
支持的平臺安卓/iOS
iOS集成過程2.克隆ijkplayer到桌面
cd Desktop/ git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
了解
3.下載ffmpeggit checkout -B latest k0.8.8 ./init-ios.sh (下載ffmpeg)
4.編譯ffmpeg
編譯很多情況,64位、32位
編譯ps: 如果提示錯誤: ./libavutil/arm/asm.S:50:9: error: unknown directive .arch armv7-a ^ make: *** [libavcodec/arm/aacpsdsp_neon.o] Error 1 最新的 Xcode 已經弱化了對 32 位的支持, 解決方法: 在 compile-ffmpeg.sh 中刪除 armv7 , 修改如: FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64" 再重新執行出現錯誤的命令: ./compile-ffmpeg.sh all
5.打包framwork并合并
大家會發現除了IJKMediaFramework這個目標,還有一個叫IJKMediaFrameworkWithSSL,但是不推薦使用這個,因為大部分基于ijkplayer的第三方框架都是使用的前者,你把后者導入項目還是會報找不到包的錯誤,就算你要支持https也推薦使用前者,然后按照上一步添加openssl即可支持5.1,配置釋放模式如下圖
配置發布模式1
配置發布模式25.2,打包真機框架
編譯真機如圖操作,然后按鍵命令+ B編譯即可
如果之前的步驟刪除了compile-ffmpeg.sh中armv7,這里會報錯,我們直接注釋掉就好
ARMv7的錯誤
用Xcode9可以找到這個 ,但是用Xcode10找不到這個 我只能用Xcode注釋完,在用Xcode10編譯就沒問題了
5.3,打包模擬器 framework
如圖操作,然后命令+ B編譯即可
5.4,合并框架
如果只需要真機運行或者模擬器運行,可以不用合并,直接找到對應的框架導入項目即可; 一般我們為了方便會合并框架,這樣就同時支持模擬器和真機運行。
先找到生成框架的目錄:
文件路徑
文件路徑
準備合并:
打開終端, 先 cd 到 Products 目錄下 然后執行: lipo -create 真機framework路徑 模擬器framework路徑 -output 合并的文件路徑 lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
合并完成:
可以看到這里生成了一個大概兩倍大小的文件, 將生成的 IJKMediaFramework 文件替換掉 真機framework 中的 IJKMediaFramework 文件,然后這個替換掉文件的 真機framework 就是我們需要的 通用的framework 了。
6.集成 framework 到項目中
導入 framework
直接將 IJKMediaFramework.framework 拖入到工程中即可 注意記得勾選 Copy items if needed 和 對應的 target
添加下列依賴到工程
【參考文章】: