【開発メモ】libvpxビルド方法(Android)

ChromMMDVRをAndroidスマホのVR対応しました。原理的には動画圧縮したVR画像を、スマホのクライアントで受信して表示できるようにしているだけです。

動画圧縮のコーデックにはオープンソースのlibvpx(VP8)を使うことにしました。
Android向けのライブラリのビルドはLinuxが必要となりますが、不慣れなLinuxで試行錯誤し苦労しましたので、(主に自分向けに)ビルド手順をメモしておきます。

Linux環境はWindows10のBash on Ubuntu on Windowsを使用しました。

1. Bash on Ubuntu on Windowsのインストール

以下などを参照。

http://www.atmarkit.co.jp/ait/articles/1608/08/news039.html

なお、今回手順確認時のWindows10のバージョンは以下。
バージョン: 1703
OSビルド:15063.674

Linuxのバージョン(/proc/version)は以下。
Linux version 4.4.0-43-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #1-Microsoft Wed Dec 31 14:42:53 PST 2014

2. Bash on Ubuntu on Windowsの再インストール

初期状態からの手順を書くので、念のためLinux環境を初期状態に戻します。
(実行した場合、Linux環境はすべて初期状態に戻るので注意。この手順は行わなくても、おそらくは問題なし。Linux環境インストール後にいろいろ環境をいじった後の前提なので、インストール直後なら必要なし)
http://www.atmarkit.co.jp/ait/articles/1610/05/news033.html

  • Linux環境アンインストール
    Windowsコマンドプロンプトで以下のコマンドを実行
lxrun /uninstall /full
  • Linux環境再インストール
    Windowsコマンドプロンプトで以下のコマンドを実行
lxrun /install
3. 必要コマンドのインストール

Bash on Ubuntsu on Windowsを起動し、unzip,make,pythonをインストールします。
※pythonはtoolchainのインストール(make-standalone-toolchain.sh)で使用します。

sudo apt install unzip
sudo apt install make
sudo apt install python
4. NDKの展開

Linux用NDKをダウンロードし、unzipで解凍します(大文字小文字違いのファイルがあるため?Windowsで解凍するとおそらく失敗します)。
NDKはr14b(android-ndk-r14b-linux-x86_64.zip)を使用しています。
展開したいフォルダにzipファイルを置き、以下を実行。

unzip android-ndk-r14b-linux-x86_64.zip
5. libvpxの展開

libvpxをダウンロードし、展開します。
libvpxは1.6.1(libvpx-0c0a05046db1c0b59a7fcc29785a190fdbbe39c2.tar.gz)を使用しています。

tar xvzf libvpx-0c0a05046db1c0b59a7fcc29785a190fdbbe39c2.tar.gz
6. armeabi-v7aのビルド

ARM v7-A CPU向けのライブラリビルド。
ここでは、4で展開したNDKのパスを次のように環境変数NDKとしておきます。

export NDK=/mnt/g/Dev/android/android-ndk-r14b
  • configure/ビルド実行
    以下で、ビルド出来ます。
    いらないものはビルドしてません。–extra-cflags=”-mfloat-abi=softfp -mfpu=neon” は、これがないと表示されるエラーにより追加してますが、これでいいのかよくわかってません^^;
./configure --target=armv7-android-gcc --sdk-path=$NDK --extra-cflags="-mfloat-abi=softfp -mfpu=neon" --disable-unit-tests --disable-examples --disable-webm-io --disable-libyuv
 make clean
 make
7. x86_64のビルド

x86(64bit) CPU向けのライブラリビルド。
実機でのサポートというより、Windows上でAndroidシミュレータを実行するためにビルドしたものです。–sdk-pathのtoolchainは使われないようなので、手動で設定しています。MMX有効だとリンクでエラーになるので無効にしています(なので処理は遅いと思います)。

  • toolchainのインストール
    $NDK/build/toolsに移動し、以下のコマンドを実行。
./make-standalone-toolchain.sh --arch=x86_64 --install-dir=(toolchainのインストールパス)
  • 環境変数
    環境変数を以下のように設定する。
export CC=x86_64-linux-android-gcc
export CXX=x86_64-linux-android-g++
export AR=x86_64-linux-android-ar
export AS=yasm
export LD=x86_64-linux-android-gcc
export RANLIB=x86_64-linux-android-ranlib
export PATH=(toolchainのインストールパス)/bin:$PATH
  • configure/ビルド実行
    以下で、ビルド出来ます。
./configure --target=x86_64-android-gcc --disable-unit-tests --disable-examples --disable-webm-io --disable-libyuv --disable-mmx
 make clean
 make

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です