Armadilloフォーラム

gstreamerの自動起動

godmacchi

2016年4月11日 21時28分

gstreamerでカメラ映像をUDP伝送しているのですが、rc.localを使用してArmadillo起動と共に自動的に伝送を開始する方法が意外と苦労したので、参考情報としてやり方を投稿します。

まず、現在以下のようなコードで映像伝送しています。(IPアドレスはダミーです)
gst-launch-1.0 -e v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720,framerate=30/1 ! acmh264enc max-gop-length=2 b-pic-mode=0 bitrate=4000000 ! video/x-h264, stream-format=avc ! rtph264pay config-interval=3 ! udpsink force-ipv4=true port=9003 host=XXX.XXX.XXX.XXX

これをそのままrc.localに書くと以下のようなエラーが発生しました。
ERROR: pipeline could not be constructed: no element "v4l2src".

調べたところ、これはプラグインがインストールされていなかったりプラグインが壊れている場合に表示されるメッセージのようでした。rootログインした後では正常に動くため、プラグインがあるディレクトリのパスが認識できていないと考えて以下のようにオプションを付けたところうまくいきました。
GST_PLUGIN_PATH=/usr/lib/gstreamer-1.0 gst-launch-1.0 -e v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720,framerate=30/1 ! acmh264enc max-gop-length=2 b-pic-mode=0 bitrate=4000000 ! video/x-h264, stream-format=avc ! rtph264pay config-interval=3 ! udpsink force-ipv4=true port=9003 host=XXX.XXX.XXX.XXX

なぜrc.localでgstreamerを使用するとパスが認識できないのかは不明ですが、上記で特に問題なく動くため、同じ状況になった方は参考にしていただければと思います。また、もっと良いやり方をご存知の方は教えていただけると幸いです。

コメント

ごめんなさい。

マニュアルに記載しなければいけない内容でした。

ログインした場合には、環境変数が設定されるようになっているので動作しています。
なので、同じ方法になります。

環境変数が必要な理由は、Debianの環境と Armadillo のディレクトリ構成が異なるためです。