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