ラズパイ Zero W でライブ・ストリーミング(メモ)


ラズベリーパイを使ったライブストリーミングには複数の方法があるようです。

motionr、v4l2rtspserver、RPi-Cam-Web-Interface、MJPG-streamer…など。

Zeroで使うものとして、v4l2rtspserverRPi-Cam-Web-InterfaceMJPG-streamerの3つをやってみます。

OSイメージはRaspberry Pi OS Lite(32-bit Bullseye)です。

インストールについてはここ参照

カメラはラズベリーパイCSIカメラモジュールを使います。

 

MJPG-streamerについてはラズパイ3とWebカメラでライブ・ストリーミング(メモ)もご参照ください。

 


Zeroのレガシーカメラインターフェースを有効化しておきます

OSイメージ(Lite)はヘッドレスです。

SSHで接続して、以下から、Interface Options -> Legacy Camera で有効にしておきます。

 


v4l2rtspserver

VLC media playerのようなRTSP対応動画アプリでネットワークストリームを開いて画像を取得します。

インストール

 

実行、RTSPサーバーを起動

 

クライアント側

VLC media playerのようなRTSP対応動画アプリでネットワークストリームを開きます。
VLC media playerは多くのプラットフォームに対応しているメジャーな無料アプリです。

WindowsなどにVLCをインストールして、メニュから「メディア」->「ネットワークストリームを開く」を選択

以下を入力

 

 

再生を実行

 

自動起動するようにsystemdに登録しておく場合

以下を記述

登録

 

Audio Streaming については調査中

 

 


RPi-Cam-Web-Interface

配信用のWebサーバーを立てることで、外部ブラウザーから見ることができます。

インストール

インストールの途中で設定を聞いてきます。

Webサーバーは3種類選択できます。Apachenginxlighttpd

メモリ消費量が少なく、CPU負荷の少ない高速動作がウリのlighttpd(ライティ)を使ってみます。

設定変更する場合は、マニュアル入力します。

後はたいていはデフォルトでOKです。

最後にStartするかどうか聞いてくるので「Yes」。

 

外部ブラウザでアクセスします。

 

メニュはこんな感じで多機能です。

 

動画像は以下の場所に保存されます。

/var/www/html/media

 

AutoStartに設定していますが、stop.sh、start.shで再起動できます。削除する場合はremove.sh 。

 

使い方とかの詳細はGitHub参照

 


MJPG-streamer

2023/07/08 Update (Bullseye に対応)

インストール

 

カメラの番号をチェック

カメラが/dev/video0 にアサインされているとします。

ポート:8080でキャストしてみます。

~/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 640x480 -f 10 -y -n" -o "./output_http.so -w ./www -p 8080"

 

 

ブラウザで受信

http://raspberrypi.local:8080

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

受信はブラウザでもいいですが、PythonからOpenCVを使って、ストリーミングされた画像をキャプチャしてみます。

OpenCVインストール

sudo apt install -y libatlas-base-dev
pip install numpy –upgrade

バージョン無しだと最新版がインストールされますが、その場合エラーになることがあります。比較的安定とされているバージョンを指定してインストールします。
pip install opencv-python==4.6.0.66

 

IPアドレスが192.168.0.10だとします。

 

 

OpenCV 回転

時計回りに90度
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)

反時計回りに90度
img = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE)

180度
img = cv2.rotate(img, cv2.ROTATE_180)

 


Appendix

カメラのFFCケーブルを固定するツメが壊れた!場合

めったにないことですが、管理人のような雑な性格のものはしばしばやらかします(Zeroや3などで3回やった経験者です)。

でも、なんとかなります。

ケーブルはこんな具合に、黒のツメで挟んで固定します。

一度固定してしまえば、抜けることはあまりありません。後はツメを無くさないように注意することです。

 


 

 

 

 

 

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*