一挠唆、準(zhǔn)備工作
1处窥、Homebrew,簡(jiǎn)稱“brew”玄组,OSX上必備軟件包管理工具(可百度參考安裝方式滔驾,git和yasm安裝方法相同,~_~)俄讹,查看當(dāng)前版本哆致,在“終端”中輸入令“brew -v”;
2患膛、Git摊阀,代碼管理工具,查看版本命令為:“git --version”踪蹬;
3胞此、Yasm,輸出二進(jìn)制的匯編器跃捣,查看版本命令為:“yasm --version”
以下是當(dāng)前編譯者版本信息:
二漱牵、下載IJKPlayer
本地新建文件夾(路徑、名稱隨你高興)疚漆,將git上的項(xiàng)目clone到本地:
*進(jìn)入該目錄中:cd **路徑
*克隆項(xiàng)目:git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
*進(jìn)入ijkplayer-ios:cd ijkplayer-ios
*切換分支:git checkout -B latest k0.8.8酣胀,注:這個(gè)版本號(hào)可以查看git上的文件
如果能看到:Switched to a new branch 'latest',恭喜你娶聘,可以進(jìn)入一下步闻镶!
三、配置修改
1丸升、關(guān)于armv7 armv7s arm64的配置铆农,這里我保留了arm64、i386发钝、x86_64三種類型顿涣。
*在ijkplayer-ios->init-ios.h中查找“FF_ALL_ARCHS_IOS8_SDK”,保留:arm64酝豪、i386涛碑、x86_64;
*在ijkplayer-ios->ios->compile-ffmpeg.sh孵淘,同上蒲障。
2、支持格式配置,在ijkplayer-ios->config目錄下默認(rèn)有3種類型:
module-default.sh?更多的編解碼器/格式
module-lite-hevc.sh?較少的編解碼器/格式(包括hevc)
module-lite.sh?較少的編解碼器/格式(默認(rèn)情況)
我這里也是走尋常路揉阎,修改文件“module-lite.sh”庄撮,該文件默認(rèn)是不是支持rtsp,如果要支持該類型毙籽,則要進(jìn)行添加配置(百度)洞斯;
四、下載ffmpeg文件
*進(jìn)入ijkplayer-ios目錄:./init-ios.sh
等待時(shí)間若干...
五坑赡、開始編譯ffmpeg庫
注:網(wǎng)上有些文章中要修改:“packet_queue_get_or_buffering”方法(路徑是:ijkmedia/ijkplayer/ff_ffplay.c)烙如,其實(shí)我兩種方式都試過了,改或是不改都不影響播放結(jié)果毅否!
*進(jìn)入 config 目錄:cd config
*刪除當(dāng)前的 module.sh 文件:rm module.sh
*可根據(jù)需要替換文件亚铁,我這里選擇了“module-lite.sh”,注:這里除了默認(rèn)3個(gè)文件外螟加,也可以自定義其他格式類型
ln -s module-lite.sh module.sh
*進(jìn)入ios目錄:./compile-ffmpeg.sh clean徘溢,輸出如下信息(保留的3種配置信息):
*繼續(xù)進(jìn)行編輯:./compile-ffmpeg.sh all,這里可能會(huì)遇到一個(gè)錯(cuò)誤:
xcrun -sdk iphoneos clang is unable to create an executable file.
C compiler test failed.
…
中間略
…solve the problem.
解決方法:sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/捆探,輸入電腦登錄密碼即可然爆。
之后一陣“閃花屏”結(jié)束后表示ffmpeg庫編譯成功!
注:如果為https視頻流徐许,則必須添加https支持施蜜,最后生成靜態(tài)文件?libcrypto.a?和?libssl.a。
*進(jìn)入ijkplayer-ios目錄:./init-ios-openssl.sh
cd ios
并且在“module.sh ”文件中添加如下配置雌隅,啟用openssl組件
echo 'export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"'
然后依次執(zhí)行如下命令:
./compile-ffmpeg.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all
六、打包 framework
*打開xcode工程
/ijkplayer-ios/ios/IJKMediaPlayer缸沃,修改Deployment Target為9.0恰起,再修改Build Configuration為Release,然后執(zhí)行command+B編譯即可趾牧!
因?yàn)橹暗呐渲梦募?compile-ffmpeg.sh?)中刪除了?armv7检盼,工程編譯報(bào)錯(cuò),根據(jù)報(bào)錯(cuò)打開文件avconfig.h和config.h翘单,直接注釋掉吨枉!
*分別生成模擬器和真機(jī)狀態(tài)下的framework,然后進(jìn)行合并(我這里是為了方便哄芜,把兩個(gè)目錄復(fù)制出來)
先?cd?到?Products?目錄下貌亭,然后執(zhí)行:
lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
之后會(huì)多出個(gè)文件“IJKMediaFramework”,如圖:
之后替換掉文件“IJKMediaFramework”认臊,而“IJKMediaFramework.framework”就是我們需要的通用的framework文件了圃庭。
六、結(jié)束語
以上方法是簡(jiǎn)要生成ijk的方法,初試者可能會(huì)遇到各種問題剧腻,請(qǐng)給自己多點(diǎn)耐心拘央!
本文如有錯(cuò)誤,請(qǐng)指正书在,謝謝灰伟!
七、視頻流地址
1儒旬、http://flv2.bn.netease.com/videolib3/1604/28/fVobI0704/SD/fVobI0704-mobile.mp4
2袱箱、rtmp://202.69.69.180:443/webcast/bshdlive-pc
3、http://dlhls.cdn.zhanqi.tv/zqlive/49427_jmACJ.m3u8
4义矛、rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
5发笔、rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp