謝辞:本環境作成にあたり、mura_hiro様の
「AndroidアプリでGstreamerを使ってみる」
を参考にさせていただきました。本当にありがとうございます。
基本的には、mura_hiro様の記事で出来るのですが、所々自分の環境と違ってたところがあり、
そういったところって後々絶対忘れるので、備忘録として残します。
まあ、試される方がいれば参考になるかもしれません。いないか・・・。
また、なんでこの記述が必要なの?とか、このエラーが出る原因は?を聞かれても、正直分かりません!
見様見真似でやってるのでご容赦を。
環境
ホストOS - Windows11 Pro
ターゲット - Android 12 tablet
Android Studio Arctic Fox | 2020.3.1 Patch 4
※Android tabletとはUSBで接続し、Android Studioで認識できているものとします。
※インターネット接続必須です。
ホストPCでの追加ファイル等
1) Android NDKのインストール
Tools -> SDK Managerから、右下黄線の[Show Package Details]をチェック、画面中上部にある、[SDK Tools]を選択し、
[NDK(Side by side)]のリスト内から、[21.4.7075529]をチェックして、[Apply]をクリック。
確認画面が表示されたら[OK]をクリックします。
ダウンロードサイズは1.0GB程度です。
2) gstreamerを入手
https://gstreamer.freedesktop.org/pkg/android/1.18.5/
にある
gstreamer-1.0-android-universal-1.18.5.tar.xz(391MB)
をダウンロードして適当なフォルダに解凍します。
解凍したフォルダは後々出てくるので、覚えておきます。
3) gstreamerチュートリアルをCloneする
https://github.com/GStreamer/gst-docs
自分はForkしてから、適当なフォルダにCloneしました。
トラブルシューティング
この手のものって、クローンした~、プロジェクト開いた~、ビルドした~、できたー\( ^_^)/
って一度で出来たためしがありません・・・。ので、ビルド成功させるために、トラブルシュートから入ります。
まず、Androis Studioを起動し、gstreamerチュートリアルプロジェクトを開きます。
自分の環境では以下ですが、適宜読み替えてください。
C:\git\gst-docs_study\examples\tutorials\android
1) Gradleのバージョン
プロジェクトを読み込むと、いきなり怒られます。
[解決方法]
File -> Project Structure -> ProjectのGradle Versionを4.8にしてApplyします。
2) 環境変数
1)をApplyした後、自動でsyncが走るんですが、Event Logにエラーが吐かれてsyncがstopします。
"Gradle sync failed: GSTREAMER_ROOT_ANDROID must be set, or "gstAndroidRoot" must be defined in your gradle.properties in the top level directory of the unpacked universal GStreamer Android binaries (20 s 215 ms)"
gradle.propertiesに"GSTREAMER_ROOT_ANDROID"か"gstAndroidRoot"を定義しろってことなので、定義します。
①そもそもgradle.propertiesが無いので作成します。プロジェクトのトップレベルを右クリックで、New -> Fileを選択。
②ファイル名は、"gradle.properties"とする
③作成されたファイルに以下を記述します。
1行目のパスは、先の作業でgstreamerを解凍した先を指定します。適宜変更してください。
2-5行目、このトラブルシュートとは関係ないのですが、後々入力する必要があるので、ついでにここで入れておきます。
(なぜ必要かは分かりません。)
gstAndroidRoot=C\:\\android\\gstreamer-1.0-android-universal-1.18.5
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
kotlin.code.style=official
android.useAndroidX=true
android.enableJetifier=true
syncします。
File -> Sync Project with Gradle Files
3)NDKパスの指定
syncがまたもや失敗します。
Gradle sync failed: A problem occurred configuring project ':android-tutorial-1'. (10 s 639 ms)
'android-tutorial-1'プロジェクトを設定中に、問題が発生しました。。。。
これは、NDKのパスが正しく設定されてないことで発生するようですので、設定します。
②sdk.dirの下に、以下の通り1行追加します。
ndk.dir=[sdk.dirの=以降全て]\\ndk\\21.4.7075529
ndk.dir=以降の[]内には、sdk.dir=以降がそのまま入ります。
例)
sdk.dir=c\:\\hoge\\sdk
だった場合、
ndk.dir=c\:\\hoge\\sdk\\ndk\\21.4.7075529
になります。
sync
!注意! 以下を実行すると、時間がかかります。(筆者環境では、18分弱ぐらい)
syncします。
File -> Sync Project with Gradle Files
実行
syncが終わると、デバッグ実行できるようになってるはずです。
確認したいtutorialを選んで、実行してください。
さいごに
今時わざわざプレイヤー作らなくても・・・と思いますが、
それはさておき、これで土俵はできたので、やっと戦えるようになりました。
mura_hiro様、重ねてお礼申し上げます。
ありがとうございました。