ijkplayer下載地址:https://github.com/Bilibili/ijkplayer
一、準(zhǔn)備工作
在終端安裝homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
homebrew安裝完成后分別安裝git
brew install git
和yasm
brew install yasm
二、下載ijkplayer源碼
1.先在桌面創(chuàng)建一個(gè)空文件夾存放下載的ijkplayer源碼
//進(jìn)入桌面目錄
cd ./Desktop
//創(chuàng)建文件夾
mkdir ijk_download
//進(jìn)入文件夾
cd ./ijk_download
2.將ijkplayer源碼克隆到本地文件夾中
//克隆源碼需要一段時(shí)間……
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
//等下載完成后,進(jìn)入ijkplayer_ios目錄下
cd ijkplayer-ios
//切換到新分支
git checkout -B latest k0.8.8
效果一覽:

3.選擇編解碼器格式
默認(rèn)是最少支持,其他配置有如下
module-default.sh 更多的編解碼器、格式
module-lite-hevc.sh 較少的編解碼器、格式(包括hevc)
module-lite.sh 較少的編解碼器、格式(默認(rèn))
//進(jìn)入config
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-default.sh
ln -s module-default.sh module.sh
cd ..
cd ios
sh compile-ffmpeg.sh clean
4.執(zhí)行init-ios.sh腳本文件下載FFmpeg源碼
cd ..
./init-ios.sh
又是一段漫長(zhǎng)的下載等待……
下載完成之后在目錄中已經(jīng)生成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
//刪除一些文件和文件夾;在執(zhí)行compile-ffmpeg.sh的時(shí)候會(huì)自動(dòng)創(chuàng)建剛剛刪除的文件,避免文件名沖突
./compile-ffmpeg.sh clean
三、編譯
//進(jìn)入ios目錄
cd ios
./compile-ffmpeg.sh clean

//編譯openssl,如果不需要支持HTTPS可以跳過
./compile-openssl.sh all
操作完成后會(huì)生成這兩個(gè)庫(kù)

//編譯ffmpeg,生成通用庫(kù)
./compile-ffmpeg.sh all
此時(shí)如果出現(xiàn)錯(cuò)誤提示

感謝http://m.itdecent.cn/p/9743a68c2939提供的解決方法:
修改compile-ffmpeg.sh腳本文件

刪除armv7,修改如下:
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
刪除后記得保存修改,再執(zhí)行
./compile-ffmpeg.sh all
又經(jīng)過漫長(zhǎng)的等待,正確的編譯結(jié)果

四、打包framework
打開IJKMediaPlayer這個(gè)工程

選擇IJKMediaFramework,推薦使用這個(gè),大部分基于ijkplayer的框架都是使用IJKMediaFramework,即使要支持HTTPS也推薦使用后者,按照上面步驟添加openssl支持就可以

選擇Release,點(diǎn)擊close

添加依賴庫(kù)


此時(shí)編譯是會(huì)報(bào)錯(cuò),因?yàn)橹安襟E刪除了compile-ffmpeg.sh中的armv7,把這句注釋即可

分別以模擬器和真機(jī)編譯


編譯完成后選擇

可以在目錄中看到模擬器和真機(jī)兩個(gè)版本的編譯結(jié)果:

進(jìn)入到Products目錄下
//合并
//lipo -create 真機(jī)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文件替換掉真機(jī)目錄下的IJKMediaFramework,這個(gè)替換過的文件就是最終的通用framework

提供集成好的庫(kù)鏈接: https://pan.baidu.com/s/1TK9xnCsAnFBZkfZFMGWLhA 密碼: mb58