PS:どんなことをしても、実践が最も重要であり、実際の経験を積むことは、技術記事を読むだけでは比較にならない。
最近のプロジェクトでは、ビデオ再生が必要になる可能性があり、さらに後で rtsp プロトコルのビデオ再生をサポートする必要があるかもしれません。Bilibili のオープンソースの ijkplayer をコンパイルすることにしました。ijkplayer は、Android と iOS で使用できる軽量の ffmpeg ベースのクロスプラットフォームプレーヤーであり、コンパイルによりさまざまな形式をサポートできます。ffmpeg がサポートする形式であれば、ijkplayer はサポートできます。
最初は Cygwin を使用してコンパイルしましたが、so ファイルの生成時に常にエラーが発生しました。もちろん、途中にはまだ多くの問題がありますので、ijkplayer をコンパイルするために Ubuntu 環境を使用することにしました。Ubuntu 環境でのコンパイルにはほとんど問題がありませんでした。以下はコンパイルの手順です。
- 準備
- 環境変数の設定
- 必要なコンポーネントのインストール
- 実際のコンパイル
- ijkplayer の実行
準備#
VMware 仮想マシンをインストールし、Ubuntu システムをインストールします。VMware をインストールした後、仮想マシンを作成し、典型的なインストールモードを選択します。以下の図のようになります。
次に、次の図のように、すでにダウンロードしたシステムイメージを選択します。
正しい選択が行われると、イメージ情報が表示されます。私が選んだのは Ubuntu 64 ビット 18.04 です。次に進みます。
ユーザー名、パスワードなどの情報を入力し、次に進みます。
仮想マシンの名前とインストール先を入力し、次に進みます。
ディスクサイズを設定します。ディスクのパフォーマンスを低下させないために、ディスクを単一のファイルとして保存することを選択します。次に進みます。
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/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 プロジェクトが生成されます。以下は参考です。
各 ABI ライブラリを確認します。例えば、ijkplayer/android/ijkplayer/ijkplayer-arm64/src/main/libs に対応する so ファイルが生成されているかどうかを確認します。以下は arm64 の例です。
ijkplayer の実行#
Android Studio を使用して生成された Android プロジェクトを開き、以下のスクリーンショットのように実行します。
ijkPlayer のコンパイルは以上です。質問があれば、コメントしてください。