ラズベリーパイを使ったライブストリーミングには複数の方法があるようです。
motionr、v4l2rtspserver、RPi-Cam-Web-Interface、MJPG-streamer…など。
Zeroで使うものとして、v4l2rtspserver、RPi-Cam-Web-Interface、MJPG-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種類選択できます。Apache・nginx・lighttpd
メモリ消費量が少なく、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回やった経験者です)。
でも、なんとかなります。
ケーブルはこんな具合に、黒のツメで挟んで固定します。
一度固定してしまえば、抜けることはあまりありません。後はツメを無くさないように注意することです。
Leave a Reply