RaspberryPi

GStreamerでRaspberry Piからストリーミング配信をする

More than 3 years have passed since last update.

Raspberry Piに接続したカメラの映像をWindowsでストリーミング再生できたのでやり方を書いておく。詳しく調べたわけではなくて、とりあえずできたレベルのもの。

ストリーミング配信と再生にはGStreamerを使った。

環境は次の通り。

Raspberry Pi側

まずはRaspberry Piにカメラを接続して起動する。
Raspberry Piでカメラを使える設定をしてなければ、次のドキュメントを見て設定する。

Raspberry Pi Documentation

次にGStreamerをインストールする。

$ sudo apt-get install gstreamer1.0

あとは次のコマンドを実行して起動する。

$ raspivid -n -w 1280 -h 720 -b 4500000 -fps 30 -vf -hf -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=[配信対象のIPアドレス] port=9000

"host"にはRaspberry PiのIPアドレスではなく、クライアントのIPアドレスを指定する。またポート番号は任意のものでいい。
raspividの"-w"と"-h"が解像度なので好きな解像度を指定する。

上のコマンドはスクリプトにしておくと何度も起動する時に楽になる。

次のようなメッセージが出力されればOK。

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
...(省略)
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

PC側

まずはGStreamerのページからWindows用のインストーラをダウンロードする。
今回は「gstreamer-1.0-x86_64-1.4.5.msi」をダウンロードした。

GStreamer: Download

ダウンロードしたらインストーラを実行する。(おそらく)H264のデコードのためにlibav wrapperのインストールが必要なので、ウィザードの途中で次のように操作する。

  1. "Choose Setup Type"で"Custom"を選択する。
  2. "Custom Setup"で"GStreamer 1.0 libav wrapper"をインストールするように変更する。

今回は「C:\gstreamer」にインストールした。

インストールが完了したらコマンドプロンプトを起動して次のコマンドを実行する。

> cd C:\gstreamer\1.0\x86_64\bin
> gst-launch-1.0.exe -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=false

参考にしたサイトでは"caps"の値をシングルクォーテーションで囲ってたけど、ダブルクォーテーションじゃないと実行できなかった。

カメラの映像が写ったウィンドウが表示されれば成功。

参考サイト