ijkplayer是bibiliB站開(kāi)源的一個(gè)三方徙硅,封裝好了ffmpeg户辫,可以去面向?qū)ο笕ラ_(kāi)發(fā)脾猛。
蘋(píng)果提供了:AVPlayer播放不了直播文件。需要自己去基于ffmpeg播放贤姆。
1.搜索查找ijkplayer
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: 如果提示錯(cuò)誤: ./libavutil/arm/asm.S:50:9: error: unknown directive .arch armv7-a ^ make: *** [libavcodec/arm/aacpsdsp_neon.o] Error 1 最新的 Xcode 已經(jīng)弱化了對(duì) 32 位的支持, 解決方法: 在 compile-ffmpeg.sh 中刪除 armv7 , 修改如: FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64" 再重新執(zhí)行出現(xiàn)錯(cuò)誤的命令: ./compile-ffmpeg.sh all
5.打包framwork并合并
大家會(huì)發(fā)現(xiàn)除了IJKMediaFramework這個(gè)目標(biāo)霞捡,還有一個(gè)叫IJKMediaFrameworkWithSSL坐漏,但是不推薦使用這個(gè),因?yàn)榇蟛糠只趇jkplayer的第三方框架都是使用的前者,你把后者導(dǎo)入項(xiàng)目還是會(huì)報(bào)找不到包的錯(cuò)誤赊琳,就算你要支持https也推薦使用前者街夭,然后按照上一步添加openssl即可支持5.1,配置釋放模式如下圖
5.2躏筏,打包真機(jī)框架
如圖操作板丽,然后按鍵命令+ B編譯即可
如果之前的步驟刪除了compile-ffmpeg.sh中armv7,這里會(huì)報(bào)錯(cuò)趁尼,我們直接注釋掉就好
用Xcode9可以找到這個(gè) 埃碱,但是用Xcode10找不到這個(gè) 我只能用Xcode注釋完,在用Xcode10編譯就沒(méi)問(wèn)題了
5.3弱卡,打包模擬器 framework
如圖操作,然后命令+ B編譯即可
5.4住册,合并框架
如果只需要真機(jī)運(yùn)行或者模擬器運(yùn)行婶博,可以不用合并,直接找到對(duì)應(yīng)的框架導(dǎo)入項(xiàng)目即可; 一般我們?yōu)榱朔奖銜?huì)合并框架荧飞,這樣就同時(shí)支持模擬器和真機(jī)運(yùn)行凡人。
先找到生成框架的目錄:
準(zhǔn)備合并:
打開(kāi)終端, 先 cd 到 Products 目錄下 然后執(zhí)行: lipo -create 真機(jī)framework路徑 模擬器framework路徑 -output 合并的文件路徑 lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
合并完成:
可以看到這里生成了一個(gè)大概兩倍大小的文件, 將生成的 IJKMediaFramework 文件替換掉 真機(jī)framework 中的 IJKMediaFramework 文件,然后這個(gè)替換掉文件的 真機(jī)framework 就是我們需要的 通用的framework 了叹阔。
6.集成 framework 到項(xiàng)目中
導(dǎo)入 framework
直接將 IJKMediaFramework.framework 拖入到工程中即可 注意記得勾選 Copy items if needed 和 對(duì)應(yīng)的 target
添加下列依賴到工程
【參考文章】: