Raspberry PiでWEBカメラの映像をHDMI出力

技術開発Raspberry Pi

概要

タイトルのようなシステムを作ろうとしたときに、Raspberry Pi OSのBullseye、Bookwormから標準ソフトが大きく変わったようなので覚書のために投稿します。

従来のOSで使われていたraspivid、raspistill、Picameraなどが、Bullseyeで「libcamera」に一本化され、Bookwormで「rpicam」に名前が変わっているようです。
今回のようなことをしようとするとraspividやrpicamでの方法が検索に引っかかるのですが、rpicamではUSBカメラは使用できないようです。

そのためffmpegが提供しているコマンドであるffplayを使用しました。

実行環境

MCU:Raspberry Pi 4 Model B 4GB
カメラ:安いUSBカメラ(Nuroum V11)

手順

USBカメラが認識しているか確認

以下のコマンドでUSB機器の一覧を表示し、USBカメラが認識されているか確認します。

lsusb

カメラの映像を画面に出力

まずはコマンドを入力して問題なく動作するかを確認します。
ターミナルで以下のコマンドを入力すると、カメラの映像が全画面でHDMIに出力されます。
キーボードのEscを押すと終了します。

ffplay -i /dev/video0 -pixel_format mjpeg -video_size hd720 -an -fs

ラズパイ起動時に自動起動

スクリプトファイルの作成

毎回コマンドを入力するのは面倒なので自動起動するようにしました。
まず、以下のコマンドを入力してスクリプトファイルを作成します。

nano streaming.sh

テキストエディタが開くので、以下のコマンドを貼り付けます。
貼り付けたらCtrl+Sで保存、Ctrl+Xで終了します。

#!/bin/bash
ffplay -i /dev/video0 -pixel_format mjpeg -video_size hd720 -an -fs

念の為、スクリプトが問題なく動作するか確認します。

sh streaming.sh

GUIのautostartに登録

今回起動するのはGUIアプリなので、systemd等ではなくlabwcautostartを使用します。

まずは以下のコマンドでautostartファイルを作成します。

nano .config/labwc/autostart

テキストエディタが開くので、以下のコマンドを貼り付けます。
貼り付けたらCtrl+Sで保存、Ctrl+Xで終了します。

bash ~/streaming.sh

これでラズパイを再起動したときにスクリプトファイルが実行されるようになります。