Raspberry pi 4とPiCamera2とFFmpegとNDI
ラズパイ3B+を壊し、赤外線フィルターレスカメラモジュールを壊し、結局、ラズパイ4Bとカメラモジュールv2の組み合わせになりました。
カメラモジュールのピントを合わせるのが非常に難しいので、赤外線フィルターレスカメラモジュールを無限遠の向こう側までレンズを回し込んでしまったため、センサーを割ってしまいました。
レンズ周りの樹脂も削れてつかみ所がなくなってしまい動かせなくなってしまいました。
レンズ周りの樹脂を剥がしたら、レンズが3枚ぼろっと取れました。
センサーが割れているのがしっかり確認できました。
さて、ラズパイ4BはHDMI-1にディスプレーを繋いで起動しないと、VNC経由では最小サイズのデスクトップサイズのみになってしまいます。
config.txtをいろいろいじったり、調査しましたが、解決方法がありません。
VNC経由ではなく、SSHで操作すれば良いので、そちらは割り切りましょう。
ただ動画を撮影する目的なので初期設定やNDI SDKのインストール、FFmpegのビルド、動画配信テストはラズパイ4を直接操作して構築しました。
shのコマンドファイルを作って、Windows 10のSSHから、shファイルを実行すれば、ラズパイ4で撮影している動画をNDIを使ってLAN内のNDIクライアントのどれでも受信できます。
ラズパイ4の処理能力では、FFmpegで変換しながらNDI送信するのは、H.264コーデックで1280*720の30Pが限界です。
ラズパイカメラv2は直接H.264コーデックのRAWデータを流してくるので、無変換でNDIに渡せば良いんですが、FFmpegの仕様上、CPUを使って再変換をして、NDIに渡してしまうようです。
ラズパイ4は、H.264、H.265のハードウェアエンコードに対応しているはずなんですが、FFmpegとNDI SDKの組み合わせではソフトウェアエンコードの方法しか分かりません。
NDI送信の設定について参考にしたサイトは「ラズパイカメラから NDI 送信してみた。(※ Raspberry Pi 4 に対応!実用的になりました)」です。
RASPIVIDコマンドについては、「Raspberry Pi Camera Module」を参考にしました。
1日に3度もラズパイ4のOSをインストールし直して、2度もFFmpegをビルドするのは疲れました。