iOS端集成ijkplayer B站視頻播放直播framework(上)

1.參考

ijkplayer是B站bilibili的一個(gè)開(kāi)源項(xiàng)目,支持iOS端和Android端視頻點(diǎn)播、直播功能。本文主要講述如何用該開(kāi)源項(xiàng)目制作framework,方便集成到自己的項(xiàng)目中。

iOS-ijkplayer集成

iOS-ijkPlayer集成問(wèn)題

iOS直播之ijkplayer的集成與簡(jiǎn)單使用(播放)

iOS中集成ijkplayer視頻直播框架

讓 ijkplayer 支持兼容armv7 armv7s

制作frameworkiOS端制作自己的framework文件

使用制作好的framwork播放視頻iOS端使用ijkplayer播放視頻

ijkplayer下載地址:https://github.com/Bilibili/ijkplayer。使用的版本是提交cced91e3ae3730f5c63f3605b00d25eafcf5b97b,Commits on Feb 6, 2018

ijkplayer使用案例CodeDemo

2.實(shí)戰(zhàn)

環(huán)境準(zhǔn)備

需要Mac安裝homebrew、git、yasm、pkg-config(非必須)。

1.檢查Mac是否已安裝

brew -v

git --version

yasm --version

pkg-config --verison

2.安裝

安裝homebrew

/usr/bin/ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

安裝git

brew install git

安裝yasm

brew install yasm

安裝pkg-config

brew install pkg-config

環(huán)境準(zhǔn)備

獲取項(xiàng)目到本地

ijkplayer是B站的一個(gè)開(kāi)源項(xiàng)目,iOS端和Android端均支持。本篇文章僅說(shuō)明iOS端的使用。

首先需下載該開(kāi)源項(xiàng)目到本地合適的目錄https://github.com/Bilibili/ijkplayer。我是在桌面新建文件夾ijkplayer。下載方式我是選擇了直接下載,下載解壓后重命名為ijkplayer-ios。


參考其他人的文章,可以新建分支,在分支上工作。這里我們是在自己的Mac上進(jìn)行的,不需要提交,在master即可。下載解壓重命名后不需要進(jìn)行任何一步操作。

下載ffmpeg

cd 到ijkplayer-ios

注意,如果項(xiàng)目需要支持iOS8,ijkplayer也需要添加armv7s。打開(kāi)init-ios.sh文件,將44行改為

FF_ALL_ARCHS_IOS8_SDK="armv7 armv7s arm64 i386 x86_64"

然后再執(zhí)行init-ios.sh文件

./init-ios.sh

時(shí)間比較長(zhǎng),不要著急

添加 https 支持

根據(jù)需要添加https支持,可以不添加。

cd 到ijkplayer-ios

./init-ios-openssl.sh

cd 到ijkplayer-ios/ios

在compile-ffmpeg.sh文件中添加一行配置,我是添加到了158-164任意一行后面

echo'export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"'>> ../config/module.sh

cd 到ijkplayer-ios/ios

./compile-ffmpeg.sh clean

編譯ffmpeg

cd 到ijkplayer-ios/ios

打開(kāi)compile-ffmpeg.sh文件,將24行改為

FF_ALL_ARCHS_IOS8_SDK="armv7 armv7s arm64 i386 x86_64"

將159行改為

?echo "? compile-ffmpeg.sh armv7|armv7s|arm64|i386|x86_64"

依次執(zhí)行以下命令

./compile-openssl.sh all

./compile-ffmpeg.sh clean

./compile-ffmpeg.sh all

打包IJKMediaFramework.framework框架

這里采用簡(jiǎn)單的做法

1)首先打開(kāi)工程IJKMediaPlayer.xcodeproj

2)添加https支持和相關(guān)包

如果按照本文章操作,可以忽略該步驟。(本文中執(zhí)行該步驟,是找不到libcrypto.a和?libssl.a文件的,可能現(xiàn)在已經(jīng)不需要這兩個(gè)文件了。參考其他人的文章,有該步驟的說(shuō)明)

如果不需要支持https,不用執(zhí)行此步驟;如果前面有執(zhí)行添加 https 支持操作,需要進(jìn)行此步驟。

項(xiàng)目中打開(kāi)TARGETS-IJKMediaFramework,打開(kāi)Build Phases,打開(kāi)Link Binary With Libraries,選擇+。在彈出框中,選擇Add Other,打開(kāi)目錄ijkplayer-ios/ios/build/universal/lib,選擇文件libcrypto.a和?libssl.a

3)編譯framework

項(xiàng)目中打開(kāi)TARGETS-IJKMediaFramework,選擇Edit Scheme,選擇Run-Info ,將Build Configuration 的值改為Release

分別選擇任意一個(gè)模擬器和Generic iOS Device ,快捷鍵commad+B編譯framework

編譯完成后,打開(kāi)項(xiàng)目的Products目錄,可以看到有一個(gè)IJKMediaFramework.framework文件。右鍵點(diǎn)擊該文件,Show In Finder

合成framework文件。具體步驟可查看我的另一篇文章iOS端制作自己的framework文件

3.使用ijkplayer播放視頻

具體步驟可以參考我的另一篇文章iOS端使用ijkplayer播放視頻

4.問(wèn)題集

1)執(zhí)行命令./compile-ffmpeg.sh all,報(bào)錯(cuò)

報(bào)錯(cuò)如下:

AS libavcodec/arm/aacpsdsp_neon.o

./libavutil/arm/asm.S:50:9: error: unknown directive

? ? ? ? .arch armv7-a

解決辦法:

打開(kāi)文件compile-ffmpeg.sh,去掉文件中的armv7,注意要修改的地方:

第22行 改為: FF_ALL_ARCHS_IOS6_SDK="armv7s i386"

第23行 改為: FF_ALL_ARCHS_IOS7_SDK="armv7s arm64 i386 x86_64"

第24行 改為: FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"

第120行 改為: if [ "$FF_TARGET" = "armv7s" -o "$FF_TARGET" = "arm64" ]; then

第159行 改為: echo " compile-ffmpeg.sh arm64|i386|x86_64"

再重新執(zhí)行./compile-ffmpeg.sh all命令即可

2)編譯framework報(bào)錯(cuò)

報(bào)錯(cuò)相關(guān)armv7,如圖


解決辦法:

項(xiàng)目中打開(kāi)TARGETS-IJKMediaFramework,在Build Setting中搜索armv7,刪去armv7。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容