banner
jzman

jzman

Coding、思考、自觉。
github

如何在Ubuntu下編譯ijkplayer

PS:無論做什麼事,實踐最重要,親身實踐積累的經驗,不是隨便閱讀一篇技術文章所能比擬的。

最近項目中可能需要視頻播放,而且後期還可能要支持播放 rtsp 協議的視頻,權衡了一下還是通過編譯 B 站開源的 ijkplayer 吧,ijkplayer 是一個基於 ffmpeg 的輕量級的可在 Android 和 Ios 上使用的跨平台播放器,可以通過編譯來實現更多格式的支持,可以說只要是 ffmpeg 支持的格式 ijkplayer 就支持。

剛開始使用 Cygwin 進行編譯,但總是在生成 so 文件的時候出錯,當然中間還有很多要踩的坑,於是決定使用 Ubuntu 環境編譯 ijkplayer,在 Ubuntu 環境下編譯時基本沒有什麼問題,編譯過程如下:

  1. 準備
  2. 配置環境變量
  3. 安裝必須組件
  4. 正式編譯
  5. 運行 ijkplayer

準備#

安裝 VMware 虛擬機並安裝 Ubuntu 系統,安裝完 VMware 之後創建虛擬機,選擇典型安裝模式,如下圖所示:

image

然後點擊下一步,選擇已經下載的系統鏡像,如下圖所示:

image

正確選擇後會顯示出鏡像信息,如我選用的是 Ubuntu 64 位 18.04 ,然後繼續下一步,如下圖所示:

image

填寫用戶名、密碼等信息,點擊下一步,如下圖所示:

image

填寫虛擬機名稱以及虛擬機要安裝的位置,點擊下一步:

image

設置虛擬機磁碟大小,為了不降低磁碟性能選擇將磁碟存儲為單個文件,然後點擊下一步,如下圖所示:

image

Ubuntu 虛擬機到此創建完畢,點擊完成,等待 Ubuntu 安裝完成,輸入設置的密碼即可進入 Ubuntu 系統,如下圖所示:

image

此外還需下載好 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 工程,如下圖所示:

image

查看各個 abi 庫中,如 ijkplayer/android/ijkplayer/ijkplayer-arm64/src/main/libs 下面是否生成對應的 so 文件,以 arm64 為例,如下圖所示:

image

運行 ijkplayer#

使用 Android Studio 打開編譯生成的 Android 工程,運行截圖如下:

image

ijkPlayer 的編譯到此結束,有疑問可評論。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。