1. 獲取 ijkplayer 源碼
cd 到自己想要保存的文件中,執行一下命令
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.8.8
2. 獲取 ffmpeg 并初始化
此過程需要從網上拉取ffmpeg,需要花些時間
執行腳本獲取 ffmpeg ,輸入一下命令
cd ..
./init-ios.sh
3. 添加 https 支持
獲取 openssl 并初始化
./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
4. 編譯 ffmpeg
編譯openssl, 如果不需要https可以跳過這一步
./compile-openssl.sh all
編譯ffmpeg
./compile-ffmpeg.sh all
如果編譯ffmpeg提示如下錯誤:
./libavutil/arm/asm.S:50:9: error: unknown directive
.arch armv7-a
^
make: *** [libavcodec/arm/aacpsdsp_neon.o] Error 1
最新的 Xcode 環境中iOS SDK最低支持從iOS 8.0開始了,弱化了對 32 位iOS系統的支持,解決方法:
在compile-ffmpeg.sh中刪除armv7, 修改如:
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
再重新執行出現錯誤的命令:
./compile-ffmpeg.sh all
5. 打開IJKMediaPlayer項目
選擇 Targets ——> IJKMediaFrameworkWithSSL ——> General ——> Linked Frameworks and Libraries ,選擇 Add Other... , 然后在 ijkplayer-ios 目錄下(也可能是別的名字)的 ios —— build —— universal —— lib 中,選中 libcrypto.a 和 libssl.a 文件,添加進去
6. 打包 framework
1)選擇 Xcode 上方導航欄中的 Product ——> Scheme ——> Edit Scheme..., 打開后選擇 Run ——> Info ——> Build Configuration,將 Debug 改為 Release。
如圖:
2)Cmd + b 直接運行,會報錯 avconfig.h 文件找不到,這時候去一下路徑找到 avconfig.h 文件,如:
~/Desktop/ijkplayer-ios/ios/build/universal/include/libavutil
打開 avconfig.h ,注釋掉
include "armv7/avconfig.h"
Cmd + b 再運行,又報錯 config.h 文件找不到,去
~/Desktop/ijkplayer-ios/ios/build/universal/include/libffmpeg
中打開 config.h , 同上注釋掉
include "armv7/avconfig.h"
7.合并框架
打開終端, 先 cd 到 Products 目錄下
然后執行: lipo -create 真機framework路徑 模擬器framework路徑 -output 合并的文件路徑
lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework