LoginSignup
2
1

More than 1 year has passed since last update.

Androidでgstreamerのチュートリアルを動かす

Posted at

謝辞:本環境作成にあたり、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程度です。
image.png

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のバージョン
プロジェクトを読み込むと、いきなり怒られます。
image.png

[解決方法]
File -> Project Structure -> ProjectのGradle Versionを4.8にしてApplyします。
image.png

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を選択。
image.png
②ファイル名は、"gradle.properties"とする
image.png
③作成されたファイルに以下を記述します。
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のパスが正しく設定されてないことで発生するようですので、設定します。

①local.propertiesを開きます。
image.png

②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様、重ねてお礼申し上げます。
ありがとうございました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1