概要
Gstreamerを使ってビデオストリーミングをしてみた
動作環境
ボード :Raspberry Pi 3
カメラモジュール:Raspberry Pi Camera V2
イメージ :emlid-raspbian-20160408
使用方法
- Raspberry Pi側
カメラモジュールを有効にする。
Raspberry Piを起動したらコンフィグを起動する。
sudo raspi-config
『6 Enable Camera』を選択し、Enableを選択する。
※起動前にカメラモジュールをRaspberry Piに接続しておく必要がある。
選択したらリブートする。Gstreamerをインストールする。
sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-badGstreamerを起動する。
raspivid -n -w 1280 -h 720 -b 1000000 -fps 15 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=ストリーミング先のIP port=9000
- クライアント側
GstreamerはMac,Linux,WindowsなどのOSで動作するが、
今回はWindowsでストリーミング再生を行う。
Gstreamerからアプリケーションをダウンロード
https://gstreamer.freedesktop.org/
インストールは方法省略Gstreamerを起動
コマンドプロンプトを起動し、以下のコマンドを実行
cd gstremaerインストール先のディレクトリ
gst-launch-1.0 -v udpsrc port=9000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264" ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=f
トラブルシューティング
WARNING: erroneous pipeline: no element "avdec_h264"
Gstreamerが古い可能性がある。
公式から最新のGstreamerをダウンロードし、再インストールする。
自分の場合は最新のGstreamerをダウンロードし、インストール時に"Complete"を選択してインストールを行ったことで、
上記のWARNINGが表示されなくなった。ERROR: from element /GstPipeline:pipeline0/GstH264Parse:h264parse0: No valid frames found before end of stream
カメラモジュールが正しく接続されていない可能性がある。
接続を確認し、再度実行することで改善される。