USBカメラの映像をネットワーク越しにストリーミング視聴できるようにしつつ、24時間録画する方法についてメモ。GStreamerを使用した。 ハードウェア Raspberry Pi 3 Logitech C920(H264エンコーダ付き) ストリーミング方法 検討したプロトコルが以下の4つ。 HLS DASH RTMP RTSP 前者2つはHTTPベースなので扱いが楽。ただしレイテンシが数十秒レベルとだいぶ長め。 RTMPはFlashでよく使われていたプロトコル。まぁ新しく使う理由はあまりない。GStreamerにデフォルトでプラグインがあるので、別のサーバに映像を送るのに使えるかもしれない。例えば、NGINXのRTMPモジュールで受けて、HLSで再送するなど。レイテンシ低い。 RTSPはよくIPカメラとかで使われているイメージ。レイテンシ低くて良い。ただしGStreamerから使うのはすこし面倒。 今回はHLSを使うことにした。GStreamerにデフォルトでプラグインがあるので楽だったので。 録画先 NASをCIFSマウントしてそこにMP4ファイルを書き込むことにした。SDカードに直接書き込むのは寿命の観点から避ける。 同様に、HLSの書き込み先もSDカードは避け、メモリ上にした。 mount -t tmpfs -o size=100M /mnt/tmp USBカメラの接続 Raspberry pi上にはUbuntu Serverをインストールした。ドライバは標準で含まれているので、カメラを接続するだけで認識された。 以下はカメラの確認のための手順。 dmesgコマンドでカメラが認識されたことの確認 lsusbコマンドで同様の確認 ls /dev/video*でデバイスファイルが存在することの確認 ファイルパーミッションの設定。今回は自ユーザをvideoグループに追加した。audioグループにも入れておくと良い。 v4l2-ctl --allでカメラ情報の確認。APTでv4l2-toolsをインストールすること。 v4l2-ctl --info --list-formatsで対応フォーマットの確認。 なお、C920は2020年頃からH264のサポートを辞めたそうなので注意。もしH264がサポートされていない場合、Raspberry pi上でのエンコー...
Comments
Post a Comment