/var/log/messages

debugging with sixth sense

Linux で GStreamer なサンプルの動作確認メモ

なんか色々とトラップばっかだったので控えを。つうか最終的に動いてませんで終わっているので参考にさえならないかも。

環境はでびあん wheezy です。

まず、公式から NDK の r10c を取得。展開。また、Android な GStreamer SDK も取得して展開。

次に otonchev/rtspviewersf なリポジトリから git clone しておいて以下の環境変数を設定。

  • GSTREAMER_ROOT_ANDROID
  • GSTREAMER_SDK_ROOT

取得した SDK の root を設定します。

Android.mk

最後の行を以下に修正。

include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer.mk

pkg-config が無い

プロジェクトの root で ndk-build 実行したところ、pkg-config が無いとのこと。以下のパケジを導入。

$ sudo apt-get install libgstreamer1.0-dev

gstreamer-video-1.0?

これも build 時には無いと言われてしまうのですが以下だと動いた模様。原因不明。

GSTREAMER_EXTRA_DEPS      := gstreamer-video-0.10

また、libgstreamer-plugins-base1.0-dev も導入してみたのですがパケジのバージョン依存で導入できない、という事象が発生。

wheezy-backports? という話を見つけるも sources.list には既に追加済み。Installing gstreamer1.0 on debian wheezy を参照して以下で導入できました。

$ sudo apt-get install liborc-0.4-0=1:0.4.19-1~bpo70+1
$ sudo apt-get install libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev

これで ndk-build が動くようになったものの、libgstreamer_android.so の link で以下な不具合発現。

  • cannot find -lGLESv2
  • cannot find -lEGL
  • cannot find -lOpenSLES

こちらは android update で解決。

$ android update project -p . -s --target android-19

ただ、まだ link でのシンボル未解決は完全に解決できていません。

undefined reference to '__srget'

こちら、r10c でシンボルが削除された旨のアナウンスがある事を確認したのでそれ以前のバージョンの NDK を探すもなかなか見つからず。以下な URL で r9 が取得できました。

videooverlay.h 未解決

r9 の ndk-build で libgstreamer_android.so は作成されたもののヘッダが無い、というエラーメッセージが出力。

jni/mediaplayer.c:20:36: fatal error: gst/video/videooverlay.h: No such file or directory

たしかに SDK の include 配下には videooverlay.h はありません。gst/video/video.h のパスは以下なんですが

include/gstreamer-0.10/gst/video/video.h

SDK が 1.0 に追従してくれないと、なのかどうか。rtspviewersf の作者はどう解決しているのか、を確認した方が良いのかどうか。

Comments