1旭等、獲取 ijkplayer 源碼
在一個(gè)合適的位置新建一個(gè)文件夾, 假設(shè)為桌面, 文件夾名為 ijkplayer.
打開終端, 輸入下面的指令
cd ~/Desktop/ijkplayer/
# 獲取ijkplayer源碼
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
# 進(jìn)入源碼目錄
cd ijkplayer-ios
運(yùn)行看下效果
提示: 'libavformat/avformat.h' file not found
原因: libavformat 是 ffmpeg 框架中的庫忆某,而 ijkplayer 又是基于 ffmpeg 框架的,因此需要導(dǎo)入 ffmpeg烈菌。
解決辦法: 查看 ijkplayer 的 README.md。
2花履、配置編解碼器格式支持
默認(rèn)為最少支持, 如果足夠你使用, 可以跳過這一步. 否則可以改為以下配置:
module-default.sh 更多的編解碼器/格式
module-lite-hevc.sh 較少的編解碼器/格式(包括hevc)
module-lite.sh 較少的編解碼器/格式(默認(rèn)情況)
cd config
# 刪除當(dāng)前的 module.sh 文件
rm module.sh
# 可根據(jù)需要替換為`module-default.sh`, `module-lite-hevc.sh`, `module-lite.sh`
# 創(chuàng)建軟鏈接 module.sh 指向 module-lite-hevc.sh
ln -s module-lite-hevc.sh module.sh
cd ..
cd ios
sh compile-ffmpeg.sh clean
3芽世、獲取 ffmpeg 并初始化
cd ..
./init-ios.sh
4、添加 https 支持
最后會生成支持 https 的靜態(tài)文件 libcrypto.a 和 libssl.a, 如果不需要可以跳過這一步
./init-ios-openssl.sh
cd ios
# 在模塊文件中添加一行配置 以啟用 openssl 組件
echo 'export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"' >> ../config/module.sh
./compile-ffmpeg.sh clean
5诡壁、編譯
# 如果下一步提示錯(cuò)誤`xcrun: error: SDK "iphoneos" cannot be located`, 請執(zhí)行`sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/`, 再重新執(zhí)行下一步
# 編譯openssl, 如果不需要https可以跳過這一步
./compile-openssl.sh all
# 編譯ffmpeg
./compile-ffmpeg.sh all
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)弱化了對 32 位的支持
解決方法:
在 compile-ffmpeg.sh 中刪除 armv7 , 修改如:
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
再重新執(zhí)行出現(xiàn)錯(cuò)誤的命令: ./compile-ffmpeg.sh clean ./compile-ffmpeg.sh all
==============================================================
使用
手動用 Xcode 打開 ios 目錄下的 IJKMediaPlayer 項(xiàng)目
..... (寫的人太多了 看下面支持文章即可)
支持軟文
編譯后生成ffmpeg的庫文件后济瓢,仍然找不到文件,原因需要再次進(jìn)行編譯一次妹卿,之前只是下載
https://www.imooc.com/article/36547(????????????)
詳細(xì)
http://www.reibang.com/p/65fb80dff4d6(??????????)
對https協(xié)議的支持
http://www.reibang.com/p/9743a68c2939(??????????)
http://www.reibang.com/p/496257563f69(??)問題匯總
直播參數(shù)設(shè)置(優(yōu)化開始播放速度)
http://www.reibang.com/p/622713b446a2(??????)
ijkplayer 報(bào)錯(cuò)
invalidateRenderBuffer
IJKSDLGLView: setupDisplay not ready
請問這是什么原因造成的旺矾? 這個(gè)問題網(wǎng)上好多人問沒人回答
我下面來敘述下我工程這個(gè)問題是怎么解決的
1蔑鹦、-all_load ? 在本人測試other link 中添加 all_load 或者不添加自己的測試demo都沒問題
所以網(wǎng)上說用這種方式能親測能解決的 你可以試試 也行你的項(xiàng)目中有些庫沖突 需要全部加載下靜態(tài)庫宠漩,用all_load來處理下可能是一種解決方案(但我的測試是沒有庫沖突的前提下)
2举反、多處使用ijkplayer但是項(xiàng)目中 other link 中沒有添加 all_load,這個(gè)時(shí)候可能因?yàn)橄群蟪跏蓟屠鞯臅r(shí)機(jī)問題出現(xiàn) xxx was compiled with optimization - stepping may behave oddly; variables may not be available.
崩潰扒吁。這個(gè)時(shí)候在 other link 中添加 all_load 會報(bào)錯(cuò)重復(fù)文件火鼻,我項(xiàng)目中是視頻會議嵌的直播后來得知是會議中底層代碼也用了這個(gè)庫,后來解決方案是把ijkplayer.framework編譯成動態(tài)庫雕崩,將 other link 中的all_load刪除魁索,然后運(yùn)行就搞定了
編動態(tài)庫時(shí)
添加libz庫即可
3、流協(xié)議對應(yīng)不上 問你們推流的人