ijkplayer iOS篇集成 支持HTTPS

ijkplayer?是?bilibili?開源的一款優(yōu)秀的播放器, 基于 FFmpeg, 支持 iOS/Android, 點播/直播, 以及多種編碼.官方并不直接提供 framework 框架包, 這樣大家可以根據(jù)需要選擇配置, 自己編譯并打包.但這樣也會讓很多伙伴們編譯懵逼,我就是其中一位。下面是我如何在 iOS 中集成ijkplayer的,僅供各位大佬參考:

一、 下載ijkplayer:

在任意一個地方新建一個文件夾, 假設(shè)為桌面, 文件夾名為ijkplayer:

# 進入到剛剛新建的文件夾內(nèi)

cd ~/Desktop/ijkplayer/

# 獲取ijkplayer源碼

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios

# 進入源碼目錄

cd ijkplayer-ios

# 新建一個latest分支并切換分支 (目前為k0.8.8, 可以自行去GitHub查看最新版本號)

git checkout -B latest k0.8.8

下載ijkplayer

二、 配置編解碼器格式支持:

一般默認為最少支持, 如果足夠你使用, 可以跳過這一步. 否則可以改為以下配置:

. module-default.sh?更多的編解碼器/格式

. module-lite-hevc.sh?較少的編解碼器/格式(包括hevc)

. module-lite.sh?較少的編解碼器/格式(默認情況)

# 進入 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-lite-hevc.sh

ln -s module-lite-hevc.sh module.sh

cd ..

cd ios

sh compile-ffmpeg.sh clean

配置編解碼器格式支持

三、獲取 ffmpeg 并初始化 (這一步要是網(wǎng)絡(luò)太差會非常的慢,我有兩次編譯了3個小時

cd ..

./init-ios.sh

獲取 ffmpeg 并初始化

四、添加 https 支持?

最后會生成支持 https 的靜態(tài)文件?libcrypto.a?和?libssl.a, 如果不需要可以跳過這一步

# 獲取 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

編譯:

# 如果下一步提示錯誤`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: 如果提示錯誤:

解決方法:在 compile-ffmpeg.sh 中刪除 armv7 , 修改如:FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"再重新執(zhí)行出現(xiàn)錯誤的命令: ./compile-ffmpeg.sh all

添加 openssl 相關(guān)包以支持 https (如果不使用 https, 可以跳過此步, 直接開始打包 framwork)

如果使用 https, 那么需要手動給 IJKMediaFramework 添加libcrypto.a和libssl.a文件, 默認不會添加

ps: 這兩個依賴庫的目錄為: ijkplayer-ios/ios/build/universal/lib, 只有進行了上面跟 openssl 相關(guān)的操作, 才會在這個目錄下有生成libcrypto.alibssl.a

支持https的靜態(tài)庫添加

五、打開 IJKMediaPlayer 項目 (執(zhí)行完上面的每一步后確認無誤)

open IJKMediaPlayer/IJKMediaPlayer.xcodeproj

六、打包 framwork

1、配置 Release 模式:

選擇編輯
release模式

2、打包真機 framework

選擇你連接的手機或者?Generic iOS Device,然后按鍵?command+b?編譯即可

編譯

如果之前的步驟刪除了?compile-ffmpeg.sh?中?armv7, 這里會報錯, 我們直接注釋掉就好,如果注釋后還是報這個錯就全局搜索你的電腦 找到對應(yīng)的文件 打開看里面的?armv7是否注釋,config文件同理。

注釋avconfig中的armv7
注釋config中的armv7

3、打包模擬器 framework,隨便選擇一個模擬器 直接編譯

模擬器framework

4、合并 framework:如果只需要真機運行或者模擬器運行, 可以不用合并, 直接找到對應(yīng)的 framework 導(dǎo)入項目即可; 一般我們?yōu)榱朔奖銜喜?framework, 這樣就同時支持模擬器和真機運行.

先找到生成 framework 的目錄:

打開終端, 先?cd?到?Products?目錄下

然后執(zhí)行:?lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework

合并完成:

可以看到這里生成了一個大概兩倍大小的文件, 將生成的IJKMediaFramework文件替換掉真機framework中的IJKMediaFramework文件,然后這個替換掉文件的真機framework就是我們需要的通用的framework了。

七、集成 framework 到項目中

導(dǎo)入 framework

直接將IJKMediaFramework.framework拖入到工程中即可

注意記得勾選Copy items if needed和 對應(yīng)的target

添加下列依賴到工程

libc++.tbd( 編譯器選 gcc 的請導(dǎo)入libstdc++.tbd)

libz.tbd

libbz2.tbd

AudioToolbox.framework

UIKit.framework

CoreGraphics.framework

AVFoundation.framework

CoreMedia.framework

CoreVideo.framework

MediaPlayer.framework

MobileCoreServices.framework

OpenGLES.framework

QuartzCore.framework

VideoToolbox.framework

導(dǎo)入 ijkplayer 頭文件運行一下項目, 如果遇到了類似這樣的錯誤:

可能是因為導(dǎo)入的依賴庫不全, 比如缺少 libc++.tbd, 請再次對照添加好所有的依賴庫:

最終需要的依賴庫

最后就完成了,如有問題請?zhí)釂桙c心,也可以找我要https的完整framework



IJKPlayer分享鏈接: https://pan.baidu.com/s/1g1K92_8ByF9fr5ZGwzTQBw 提取碼: b3cj?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容