ijkplayer下載地址:https://github.com/Bilibili/ijkplayer
一、準備工作
在終端安裝homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
homebrew安裝完成后分別安裝git
brew install git
和yasm
brew install yasm
二、下載ijkplayer源碼
1.先在桌面創建一個空文件夾存放下載的ijkplayer源碼
//進入桌面目錄
cd ./Desktop
//創建文件夾
mkdir ijk_download
//進入文件夾
cd ./ijk_download
2.將ijkplayer源碼克隆到本地文件夾中
//克隆源碼需要一段時間……
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
//等下載完成后,進入ijkplayer_ios目錄下
cd ijkplayer-ios
//切換到新分支
git checkout -B latest k0.8.8
效果一覽:
3.選擇編解碼器格式
默認是最少支持,其他配置有如下
module-default.sh 更多的編解碼器、格式
module-lite-hevc.sh 較少的編解碼器、格式(包括hevc)
module-lite.sh 較少的編解碼器、格式(默認)
//進入config
cd config
//刪除當前module.sh文件
rm module.sh
//根據需要替換為 module-default.sh , module-lite-hevc.sh , module-lite.sh
//創建軟鏈接module.sh指向module-default.sh
ln -s module-default.sh module.sh
cd ..
cd ios
sh compile-ffmpeg.sh clean
4.執行init-ios.sh腳本文件下載FFmpeg源碼
cd ..
./init-ios.sh
又是一段漫長的下載等待……
下載完成之后在目錄中已經生成FFmpeg
5.添加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的時候會自動創建剛剛刪除的文件,避免文件名沖突
./compile-ffmpeg.sh clean
三、編譯
//進入ios目錄
cd ios
./compile-ffmpeg.sh clean
//編譯openssl,如果不需要支持HTTPS可以跳過
./compile-openssl.sh all
操作完成后會生成這兩個庫
//編譯ffmpeg,生成通用庫
./compile-ffmpeg.sh all
此時如果出現錯誤提示
感謝http://www.lxweimin.com/p/9743a68c2939提供的解決方法:
修改compile-ffmpeg.sh腳本文件
刪除armv7,修改如下:
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
刪除后記得保存修改,再執行
./compile-ffmpeg.sh all
又經過漫長的等待,正確的編譯結果
四、打包framework
打開IJKMediaPlayer這個工程
選擇IJKMediaFramework,推薦使用這個,大部分基于ijkplayer的框架都是使用IJKMediaFramework,即使要支持HTTPS也推薦使用后者,按照上面步驟添加openssl支持就可以
選擇Release,點擊close
添加依賴庫
此時編譯是會報錯,因為之前步驟刪除了compile-ffmpeg.sh中的armv7,把這句注釋即可
分別以模擬器和真機編譯
編譯完成后選擇
可以在目錄中看到模擬器和真機兩個版本的編譯結果:
進入到Products目錄下
//合并
//lipo -create 真機framework路徑 模擬器framework路徑 -output 合并的文件路徑
lipo -create /Users/zhurui/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dhbywfajroxzoxbigxvuxvlzqrbw/Build/Products/Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework /Users/zhurui/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dhbywfajroxzoxbigxvuxvlzqrbw/Build/Products/Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
將生成的IJKMediaFramework文件替換掉真機目錄下的IJKMediaFramework,這個替換過的文件就是最終的通用framework
提供集成好的庫鏈接: https://pan.baidu.com/s/1TK9xnCsAnFBZkfZFMGWLhA 密碼: mb58