banner
jzman

jzman

Coding、思考、自觉。
github

Ubuntuでijkplayerをコンパイルする方法

PS:どんなことをしても、実践が最も重要であり、実際の経験を積むことは、技術記事を読むだけでは比較にならない。

最近のプロジェクトでは、ビデオ再生が必要になる可能性があり、さらに後で rtsp プロトコルのビデオ再生をサポートする必要があるかもしれません。Bilibili のオープンソースの ijkplayer をコンパイルすることにしました。ijkplayer は、Android と iOS で使用できる軽量の ffmpeg ベースのクロスプラットフォームプレーヤーであり、コンパイルによりさまざまな形式をサポートできます。ffmpeg がサポートする形式であれば、ijkplayer はサポートできます。

最初は Cygwin を使用してコンパイルしましたが、so ファイルの生成時に常にエラーが発生しました。もちろん、途中にはまだ多くの問題がありますので、ijkplayer をコンパイルするために Ubuntu 環境を使用することにしました。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/username の下のディレクトリに配置する必要があります。

環境変数の設定#

Ubuntu の /home/username/ 以下で、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 を保存して閉じます。ターミナルを開き、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:~$ 

正式なコンパイル#

//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 のコンパイルは以上です。質問があれば、コメントしてください。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。