原文首發於微信公衆號:躬行之(jzman-blog),歡迎關注交流!html
最近項目中可能須要視頻播放,並且後期還可能要支持播放 rtsp 協議的視頻,權衡了一下仍是經過編譯 B 站開源的 ijkplayer 吧,ijkplayer 是一個基於 ffmpeg 的輕量級的可在 Android 和 Ios 上使用的跨平臺播放器,能夠經過編譯來實現更多格式的支持,能夠說只要是 ffmpeg 支持的格式 ijkplayer 就支持。java
剛開始使用 Cygwin 進行編譯,但老是在生成 so 文件的時候出錯,固然中間還有不少要踩的坑,因而決定使用 Ubuntu 環境編譯 ijkplayer,在 Ubuntu 環境下編譯時基本沒有什麼問題,編譯過程以下:linux
安裝 VMware 虛擬機並安裝 Ubuntu 系統,安裝完 VMware 以後建立虛擬機,選擇典型安裝模式,以下圖所示:android
而後點擊下一步,選擇已經下載的系統鏡像,以下圖所示:git
正確選擇後會顯示出鏡像信息,如我選用的是 Ubuntu 64 位 18.04 ,而後繼續下一步,以下圖所示:github
填寫用戶名、密碼等信息,點擊下一步,以下圖所示:redis
填寫虛擬機名稱以及虛擬機要安裝的位置,點擊下一步:ubuntu
設置虛擬機磁盤大小,爲了避免下降磁盤性能選擇將磁盤存儲爲單個文件,而後點擊下一步,以下圖所示:bash
Ubuntu 虛擬機到此建立完畢,點擊完成,等待 Ubuntu 安裝完成,輸入設置的密碼便可進入 Ubuntu 系統,以下圖所示:微信
此外還需下載好 Linux 版本的的 Android SDK 和 NDK,這裏選擇的分別是 android-sdk_r24.4.1-linux.tgz 和 android-ndk-r10e-linux-x86_64.zip,下載後可使用以下命令解壓文件:
unzip xxx.zip
tar -xvf xxx.tgz
複製代碼
切記不要將 NDK 目錄放在虛擬機的共享目錄下,爲保證編譯順利進行應將 NDK 目錄放在 Ubuntu 的系統目錄,也就是 /home/用戶名 下面的目錄。
在 Ubuntu 下的 /home/用戶名/ ,按 Ctrl+h 查看 .bashrc 文件並配置 SDK 和 NDK 環境變量,參考以下:
NDK=/home/jzman/android/android-ndk-r10e
export NDK
ADB=/home/jzman/android/android-sdk-linux/platform-tools
export ADB
# ANDROID_NDK和ANDROID_SDK路徑
ANDROID_NDK=/home/jzman/android/android-ndk-r10e
export ANDROID_NDK
ANDROID_SDK=/home/jzman/android/android-sdk-linux
export ANDROID_SDK
# 加入到PATH路徑
PATH=${PATH}:${NDK}:${ADB}:${ANDROID_NDK}:${ANDROID_SDK}
複製代碼
配置完成後保存並關閉 .bashrc,打開 Terminal 輸入 ndk-build -v 查看 ndk 是否配置成功,運行日誌以下則配置成功:
jzman@ubuntu:~$ ndk-build -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
複製代碼
依次輸入以下命令更新和安裝 git、yasm 和 make ,
sudo apt-get update
sudo apt install git
sudo apt install yasm
sudo apt install make
複製代碼
使用 git --version 和 make -v 查看 git 和 make 工具是否安裝成功,成功則顯示對應版本號,參考以下:
jzman@ubuntu:~$ git --version
git version 2.17.1
jzman@ubuntu:~$ make -v
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
jzman@ubuntu:~$
複製代碼
//clone ijkplayer源碼
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
cd ijkplayer
git checkout -B latest k0.8.8
//使用更輕量的module-lite.sh
cd ijkplayer/config
rm module.sh
ln -s module-lite module.sh
//下載ffmpeg源碼
cd ijkplayer
./init-android
//編譯ffmpeg
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
//編譯ijkplayer,生成so文件
cd ijkplayer/android
./compile-ijk.sh all
複製代碼
若是要支持 https,在編譯時執行以下命令:
cd ijkplayer
./init-android-openssl.sh(支持https)
cd ijkplayer/android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all
複製代碼
編譯成功以後會在 ijkplayer/android 下面生成對應的 Android 工程,以下圖所示:
查看各個 abi 庫中,如 ijkplayer/android/ijkplayer/ijkplayer-arm64/src/main/libs 下面是否生成對應的 so 文件,以 arm64 爲例,以下圖所示:
使用 Android Studio 打開編譯生成的 Android 工程,運行截圖以下:
我的微信公衆號:躬行之(jzman-blog) ,能夠關注一塊兒交流學習.