從視頻直播到播放器卵蛉,現(xiàn)在很多的產(chǎn)品都集成了視頻播放的功能闪檬,而目前市面上有比較主流的有第三方框架有:
Vitamio?( 體積比較大,有商業(yè)化風(fēng)險(xiǎn)
github:https://github.com/yixia/VitamioBundle/)
ijkplayer(B站下開源的框架 體積大 配置環(huán)境比較麻煩
github:https://github.com/Bilibili/ijkplayer?)
PLDroidPlayer(七牛根據(jù)ijkplayer二次開發(fā)的 定制簡單
github:https://github.com/pili-engineering/PLDroidPlayer)
不過本文并不是對(duì)這三個(gè)播放器進(jìn)行介紹黔姜,而是簡單的介紹如何在ubuntu和mac環(huán)境下編譯ijkplayer拢切。 ijkplayer框架的源碼地址:
https://github.com/Bilibili/ijkplayer
Mac上編譯ijkplayer
安裝軟件
在Mac上編譯ijkplayer之前,需要先安裝一些基本的軟件地淀,這些軟件在其他的開發(fā)中也會(huì)用到失球,需要安裝的軟件有homebrew、git帮毁、yasm实苞。
1,安裝homebrew
打開Terminal烈疚,輸入如下的命令:
ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
2黔牵,安裝git和 yasm
安裝好homebrew后,再安裝git和 yasm爷肝,安裝的命令如下:
brewinstallgitbrewinstallyasm
下載NDK并進(jìn)行環(huán)境配置
NDK下載的官方地址為:
https://developer.android.google.cn/ndk/downloads/index.html
當(dāng)然也可以到下面的地址下載(可以直接使用迅雷等P2P軟件下載猾浦,建議下載r15版本):
https://blog.csdn.net/gyh198/article/details/75036686
然后,打開Terminal輸入并輸入如下的命令來打開環(huán)境變量灯抛,然后添加NDK的相關(guān)環(huán)境金赦。
open-e.bash_profile
當(dāng)然,也可以直接使用文本編輯器打開.bash_profile文件对嚼。
然后添加如下內(nèi)容:
exportPATH=$PATH:你的ndk路徑exportANDROID_NDK=你的ndk路徑
然后 command+s 保存 夹抗,最后檢測是否配置ndk路徑成功彼水,在Terminal輸入如下命令進(jìn)行檢測谷婆。
ndk-build
注意:當(dāng)然,也可以使用Android-sdk里面的NDK媒区,不過Android-sdk是最新版本靡砌,該文件所在結(jié)構(gòu)如下:
配置完后已脓,我們可以使用如下命令來檢測NDK環(huán)境是否配置正確。
ndk-build -v
下載ijkplayer和編譯ijkplayer
將ijkplayer框架源碼clone到本地并編譯通殃,依次在終端輸入如下命令度液。
gitclonehttps://github.com/Bilibili/ijkplayer.git ijkplayer-androidcd ijkplayer-android
然后執(zhí)行初始化,此時(shí)會(huì)從網(wǎng)上自動(dòng)拉代碼画舌,主要是ijkplayer的一些基層類庫堕担,時(shí)間比較長。命令如下:
./init-android.sh
如果視頻播放需要支持Https協(xié)議骗炉,還需要執(zhí)行如下命令照宝。
./init-android-openssl.sh
注意:若出現(xiàn)如下錯(cuò)誤蛇受,說明是NDk的環(huán)境配置有問題句葵。
Youmust define ANDROID_NDK, ANDROID_SDK before starting.They must point to yourNDKandSDK directories.
然后,編譯各個(gè)平臺(tái)的openssl。
cdandroid/contrib./compile-openssl.sh clean./compile-openssl.sh all
編譯各個(gè)平臺(tái)的ffmpeg乍丈,如果需要更多的編解碼格式剂碴,需要先執(zhí)行下面的命令。
cd../..cdconfigrm module.shln-smodule-lite.sh module.shcd..cdandroid/contrib./compile-ffmpeg.sh clean
說明:如果使用最新版本上如果執(zhí)行的是(ln -s module-lite.sh module.sh)轻专,會(huì)出現(xiàn)如下錯(cuò)誤:
然后忆矛,編譯各個(gè)cpu架構(gòu)的ffmpeg。命令如下:
./compile-ffmpeg.sh all
然后使用如下的命令編譯ijkplayer即可请垛。
cd.../compile-ijk.sh all
如果出現(xiàn)如下圖所示的錯(cuò)誤催训,請(qǐng)更換ndk的版本。
如果正確編譯的話宗收,會(huì)分別在ijkplayer-arm64漫拭、ijkplayer-armv5、ijkplayer-armv7a混稽、ijkplayer-x86采驻、ijkplayer-x86_64這些項(xiàng)目的src/main/libs/對(duì)應(yīng)的名稱 目錄下分別生成libijkffmpeg.so、libijkplayer.so匈勋、libijksdl.so這三個(gè)so文件礼旅。
在ubuntu等Linux環(huán)境上編譯ijkplayer,可以訪問下面的地址: