実現したいこと
- RaspberryPIで動画ストリーミング配信
- カメラの候補は、UVC対応カメラが第1候補。(難しければpicameraでも妥協できる)
- クライアントはAndroidスマホ。屋外で使う。
実現したいのは上記ですが付随していろいろ調べたのでそれのメモです。
ほぼ既存情報へのポインタですが参考になる人がいるかもしれないので投稿します。
機材(2016/10/10追記)
結果
最初に結果を。
表1. picamera
構成 | RaspPI(host) | 解像度(host) | PC(client) | Android(client) | 遅延 | コメント |
---|---|---|---|---|---|---|
1 | gst(udp) | 1280x720 | gst(udp) | (見つからず) | 小 | androidアプリが見つからず |
2-1 | gst(tcp) | 320x200 | (試してない) | ※1 | 小 | スマホを縦<->横位置にするとしばらく表示がおかしい |
2-2 | gst(tcp) | 640x480 | (試してない) | ※1 | 超大 | ↑同上 |
3 | WebRTC(uv4l) | 1920x1080 | chrome | chrome | 小 | ホスト側でweb serverを立ち上げる必要あり。クライアント側はブラウザがあれば見れる |
表2. USBCam(RICOH THETA S)
構成 | RaspPI(host) | 解像度(host) | PC(client) | Android(client) | 遅延 |
---|---|---|---|---|---|
1 | gst(udp) | 1280x720 | gst(udp) | (見つからず) | 小 |
2-1 | gst(tcp) | 320x200 | (試してない) | ※1 | 大 |
3 | WebRTC(uv4l) | 1920x1080 | chrome | chrome | 大 |
※1
RaspberryPI側の準備
- GStreamerのインストール
gstreamerでストリーミング配信する場合に必要(表1の1,2-1,2-2の構成)
sudo apt-get install gstreamer1.0 gstreamer1.0-tools
THETA S + Raspberry Pi 2でライブストリーミングしてみた
- WebRTC(uv4l)関連パッケージのインストール
WebRTC(uv4l)でストリーミング配信する場合に必要(表1の3の構成)
Raspberry Pi3とUSB WEBカメラでストリーミング
ストリーミング(gstreamer(udp))
- picamera
下記記事に従って実施
GStreamerでRaspberry Piからストリーミング配信をする
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
- USB Camera(UVC対応カメラ)
下記記事に従って実施
THETA S + Raspberry Pi 2でライブストリーミングしてみた
所謂WebCamが手元になかったのでUVC対応しているTheta Sで確認
gst-launch-1.0 v4l2src ! videoconvert ! omxh264enc ! rtph264pay pt=96 config-interval=1 ! udpsink host=[配信対象のIPアドレス] port=9000
ストリーミング(gstreamer(tcp))
下記アプリのgoogle playで見れるアプリ説明欄に従って設定
raspivid -n -w 320 -h 200 -b 2000000 -fps 30 -vf -hf -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! gdppay ! tcpserversink host=192.168.0.24 port=9000
ストリーミング(WebRTC)
下記記事に従って実施
Raspberry Pi3とUSB WEBカメラでストリーミング
観る(client)
1.PCで観る
表1の1のケース。下記リンクを参考。
GStreamerでRaspberry Piからストリーミング配信をする
ちなみにWindwos10 Anniversary Updateでは下記リンクからたどれるgstreamerはインストールはできますが(警告あり)、起動できませんでした。
2.Androidで観る
表1の2-1,2-2のケース。下記アプリを使用。
3.WebRTC(uv4l)
下記記事に従って実施。P2Pなので複数クライアントは同時接続できない(?)。
Raspberry Pi3とUSB WEBカメラでストリーミング
Wifi direct
スマホ<->RaspberryPI直結はWifi Directで実現する。
下記をほぼそのままなぞってできました。
自宅のLANのIPアドレスが192.168.0.* なので
hostapdのアドレスは192.168.1.20 にしました。
Raspberry PiとスマートフォンをWiFiでアドホック接続
その他
- uv4l関連のパッケージをインストールしたら、USBCamが認識されなくなってしまった。lsusbではリスト表示されるが、/dev/video* にでてこない。uv4lを実行すると、/dev/video2 とかを新規に作るみたい。
まとめ
試したレベルで理解できていないところが多いので結論がだせないが、
今回の目的に対しては、WebRTC(uv4l)にするのがよさそうである。
ただ,uv4lを使うとUSBCamが認識できなくなって困りそうなのと遅延が大きい。
WebRTCももう少し基礎から理解する必要あり。