Home assistant:玄関カメラ・ラズパイカメラ ストリーミング配信

Home Assistant・IoT

Home Assistantの最大の魅力ともいっていい、1画面にカメラ映像を複数個表示できるので便利でタブレットを壁に貼り付けて家全体の様子をチェックするのにも役立つ。

IPカメラはメーカーのクラウドにアクセスして、録画をサービスとして販売するメーカーが多く、一定時間以上の録画は買うしか無いのが残念なところ。

その点で、Home AssistantにIPカメラを接続しておけばモーション動画を表示したりサーバーに接続しないで、ストリーミングしたりできるのも魅力。

(これから紹介するYi-Hackの場合はモーションセンサーが反応したら自動でMicroSDに動画を保存してくれます。)

こちらのカメラを買おうと思いますが・・・賃貸マンションなのでちょっと圧迫感があって、必要ないかなぁ?といったところ。

E1 Outdoor PoE - 4K PTZ PoE Security Camera With Auto Tracking | Reolink Official
Reolink E1 Outdoor PoE is a 4K IP security camera with pan & tilt, 3X optical zoom, smart person/vehicle detection, and ...

こちらのE560PoEがHome Assistantで使えるみたい。Aliexpressで1.6万円弱

Reolink E560PoE

新しいIPカメラを買わなくても、今ある安いIPカメラでも十分そうなのでまずはハックしてHome Assistantで使えるようにしてみます。

Reolink IP NVR/camera
Instructions on how to integrate Reolink devices (NVR/cameras) into Home Assistant.

Yi home 1080P ファームウェア導入

ウチの玄関で使っている数年前に20ドル弱で買ったYi home 1080PをハックしてHome assistantで使えるようにしてみます。

ハックした結果、今まで通りYi LiteアプリやPCで使えるYi Homeアプリでカメラが使えます。

YI Technology
See What Matters. AI vision solution. Affordable and accessible for any consumer and business

PC用のYi Homeアプリのダウンロードページ↑

この作業はファームウェアを書き換える必要があるので、ちょっと敷居が高いのですが、カスタムファームウェアが入ったMicroSDカードを引き抜けば今まで通りのカメラとして使えるとのこと。(未確認)

ではファームウエアを導入してみます。

Yi home 1080Pの状態

まずはYi Liteアプリの設定から情報を取得しておく。

IPアドレスとファームウェアバージョンをメモしておきます。

カスタムファームウェアがどれか調べる

自分の使っているYiカメラはYi home 1080Pのようで、先ほど調べたファームウェアのバージョンが12.2.0.2_2022xxxxなので、以下の4つのうちどれかだと推測する。

GitHub - roleoroleo/yi-hack-Allwinner: Custom firmware for Yi 1080p camera based on Allwinner platform
Custom firmware for Yi 1080p camera based on Allwinner platform - roleoroleo/yi-hack-Allwinner

カスタムファームウェアはy20gaを使えば良いということですね。

バックアップ

現状に復帰させるためにバックアップもできるようですがうまく動かなかった、というよりバックアップするものがなかったのかもしれません。

Dump your backup firmware (SD card)
Custom firmware for Yi 1080p camera based on Allwinner platform - roleoroleo/yi-hack-Allwinner

backup.tar.gzをダウンロードして、解凍後に、backupフォルダか、その中のFactoryフォルダか、その中のファイルをMicroSDカードのトップにコピーしてカメラを起動しましたが、3通りやってもバックアップできなかった。

2つのファイルとMicroSDカードトップにコピーしてもバックアップできなかった。

MicroSDカードをYi Liteアプリでフォーマット

カスタムファームウェアを書き込む前に、MicroSDをYi Liteアプリでフォーマットします。

(Yi Homeカメラは6秒以上の録画を見る場合は有料のプレミアムクラウドサービスを購入する必要がある。どのIPカメラも同様に有料サービスがあるのが不満。)

Yi Lite > 設定 > マイクロSDカード でフォーマットします。

カスタムファームウェア ダウンロード・MicroSDにコピー

先ほど確認したy20gaをダウンロードします。

Releases · roleoroleo/yi-hack-Allwinner
Custom firmware for Yi 1080p camera based on Allwinner platform - roleoroleo/yi-hack-Allwinner

このページからy20ga_0.3.8.tgzをダウンロードした。

MicroSDカードをフォーマット後に↓この2つのフォルダがあったので削除した。

y20ga_0.3.8.tgzを解凍した中身↓

Factoryフォルダのconfigure_wifi.cfg.oriをconfigure_wifi.cfgに変更して開いて編集。

以下の2項目の白い部分を自分のWifi SSID・パスワードに変更する。

編集が終わったらFactory,newhomeの2つのフォルダとhome_y20gam.stageファイルをMicroSDトップにコピー。

Webページで確認

WebブラウザでカメラのIPアドレスhttp://192.168.31.229にアクセスすると↓このようになってハック成功している。

画像アイコンタブで画像ですが、スナップショットも表示される。

このページでFTPやMQTTの設定も可能だが今回はデフォルトのままいじらなかった。

(MQTTもあるのだが、今のところHome Assistantの設定方法が分からない。)

モーションセンサーが反応して録画される

カメラのモーションセンサーが反応して録画された動画は↓Eventsのページで見ることができる。

しばらくしないと録画されたデータは表示されないので、少し待つ。

Home Assistant側での動体検知で録画は未検証ですが、これがあれば必要ないっぽい。

rootパスワード設定

カメラのIPアドレスにtelnetでログインしたrootパスワードを設定します。

今回はWindows PCのLinuxシェルを起動して操作した。

telnet 192.168.31.229
root
デフォルトでパスワード無し、エンター押せばOK
passwd #rootのパスワード設定コマンド
2回 新しいパスワードを入力

これでYi home 1080Pカメラ側の設定完了。

時刻をあわせたらリブートする

日本の時間にするには「JST-9」を入力して、リブートする必要があった。

時刻を設定したらMaintenanceページでReboot Cameraボタンを押す。

Statusのページで↓正しい時間か確認する。

他の設定もリブートしないと反映されなかった。

Yi home 1080PをHome assistantで使う

configuration.yamlの設定

Home assistantのconfiguration.yamlの設定も必要

Yi Home Cameras
Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant.

まずは、テスト的に10秒ごとに更新する画像を表示させるようにしてみる。

camera:
  - platform: yi
    name: Camera
    host: "192.168.31.229"
    password: パスワード
    path: /media/mmcblk0p1/record
    ffmpeg_arguments: "-vf scale=800:450"

この設定で終わりでも十分かもしれない。リアルタイムなストリーミング動画を表示させたい場合は、さらに次の項目(RTSPストリーミングも遅延あり)で設定が必要です。

カスタムコンポーネント yi-hack 導入

HACS(左メニュー)からyi-hackをダウンロードします。

GitHub - roleoroleo/yi-hack_ha_integration: Home Assistant custom integration for Yi cameras: yi-hack-MStar, yi-hack-Allwinner, yi-hack-Allwinner-v2, yi-hack-v5 and sonoff-hack
Home Assistant custom integration for Yi cameras: yi-hack-MStar, yi-hack-Allwinner, yi-hack-Allwinner-v2, yi-hack-v5 and...

検索窓に「yi_hack」と入力するとyi-hack Home Assistant integrationが出てくるのでクリックして右下のDownloadボタンでダウンロード。

yi_hack インテグレーション追加

設定 > デバイスとサービス >+統合を追加(右下)を押して新しい統合の設定で「yi-hack」を検索すると出てくるのでクリック。

カメラのIPアドレス、名前はroot、先ほどTelnetで設定したrootのパスワードを入力して送信。

登録後、Yi Home Cameras with yi-hackのデバイスの画面を見ると↓センサーやカメラ画像が表示されました♪

最初はセンサーも↑たくさん使えるみたい。

オーバービューに追加

上記画像のセンサー部分の「ダッシュボードに追加」ボタンを押してオーバービューに追加してみましょう。

ちょっと不安定で、画像は10秒に1回更新で、画像が映らない時がある。

画像は映らない時があるが、しばらくしたらセンサー類は有効になった。

RTSPストリーミングでHome Assistantに追加

ストリーミングはYI-HACKのトップページ↓RTSPのURLがあってVLCでアクセスしたらストリーミング映像がでてきた。

結論から言うと、このRTSPストリーミングとHome Assistantの汎用カメラでストリーミングを表示させると、映像の途切れが少なく良好です。(ただ、1~8秒ほどの映像の遅延があります。)

こちらはyi-hackインテグレーション(統合)が必要

rtsp://192.168.31.229/ch0_0.h264にアクセスするとストリーミング映像が見れる。

Snapshotは表示されないか、表示されるが非常に遅い。

VLCで確認

WindowsのVLCで確認する。

メディア > ネットワークストリームを開くで、先ほどのrtsp://192.168.31.229/ch0_0.h264を入力して送信する。

このような動画が表示される。

このRTSPを使えばHome Assistantでもストリーミング映像を表示することができそう。

Home Assistantの設定

設定 >デバイスとサービス >+統合を追加(右下)でgenericと検索して汎用カメラを選択。

RTSPトランスポートプロトコルは適当に、HTTPだとタイムアウトしにくい。他のだとなかなかストリーミングデータを取得できずにタイムアウトしやすい。

あとは1デバイス部分を押して「ダッシュボードに追加」を押すと玄関カメラ映像が表示されます。

WebRTC+go2rtcでストリーミング

WebRTCインテグレーションとgo2rtcアドオンをインストールすると、カメラ映像をストリーミングできました。

go2rtc アドオン導入

go2rtcは、RTSP, RTMP, HTTP, WebRTCなどの様々なプロトコルに対応したカメラストリーミングアプリ。

GitHub - AlexxIT/go2rtc: Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc.
Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, ...

アドオンにリポジトリを登録しないとインストールできないのですが、ちょっとややこしいので、上記ページの真ん中あたりにある以下のボタンを押してリポジトリを登録する。

左下のほうにインストールボタンがあるので押す。

インストール後、開始ボタンが表示されるので開始。

カメラのエンティティIDをメモ

ここでカメラのエンティティIDをメモしておきます。

go2rcをインストール・起動した時点でYi_hackのエンティティにあるカメラがストリーミングに変わっているようです。

設定 >デバイスとサービス >Yi Home Cameras with yi-hackを選択してエンティティを選ぶ。

カメラアイコン(motion_detection Camじゃないやつ)↑を選ぶと↓ストリーミング映像が表示されるので、設定アイコンをクリック。

エンティティIDの右にあるコピーを押してエンティティIDをメモしておきます。

WebRTCカスタムコンポーネント 導入

HACSでWebRTC導入

続いてWebRTCも導入する。

HACSの検索窓にWebRTCと入力すると出てくる。

統合でWebRTCを追加

設定 > デバイスとサービス > +統合を追加(右下)からWebRTCを検索して追加します。

frigate-hass-cardカード導入

WebRTCで紹介されていたストリーミングを表示してくれるカスタムカードを紹介します。

GitHub - dermotduffy/frigate-hass-card: A Lovelace card for Frigate in Home Assistant
A Lovelace card for Frigate in Home Assistant. Contribute to dermotduffy/frigate-hass-card development by creating an ac...

HACSでfrigate-hass-cardと検索すれば出てくるので、右下のDownloadボタンを押す。

オーバービューにカードを追加

オーバービュー > 鉛筆アイコン(右上) > + カードを追加(右下)でカスタム:Frigate cardを選択します。

あとは、Camera Entityの部分に先ほどメモしたエンティティIDを入力したらストリーミング開始される。

ストリーミング成功しましたが・・・ほとんど鳥(かもめ?)の画像になってなかなかストリーミング映像が表示されない。

ストリーミングも画像もあまり表示されない↑ので使えないかなぁ、といったところ。

今のところは汎用カメラのほうがちゃんとストリーミング表示される。

Raspberry pi 3B・4BでRTSPストリーミングでHome Assistantに登録

ここからはRaspberry Piのカメラをストリーミングして映像をHome Assistantで見れるようにしていきます。

まずは簡単なRaspberry pi 3B・4BでRTSPストリーミングしてみます。

Raspberry pi 5でも同じようにストリーミングしたいのですが、やってみた結果、重い。(下のほうでちょと紹介してます。)

Raspberry Pi 作業バージョン

まずはバージョンチェック

Raspberry Pi 4B

$  lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 12 (bookworm)
Release:        12
Codename:       bookworm

Raspberry Pi 3B

Raspi3Bも最新にした。

 $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

カメラ有効化

Raspi4B(Debian 12 (bookworm))は必要ない。

sudo raspi-config
3 Interfacing Options > P1 Camera > Yes

v4l2rtspserver インストール

sudo apt-get install cmake
git clone https://github.com/mpromonet/v4l2rtspserver
cd v4l2rtspserver
cmake . && make
sudo make install

カメラが認識されているか確認

Raspi3B

$ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
        /dev/video10
        /dev/video11
        /dev/video12
        /dev/video18
        /dev/video31
        /dev/media2

bcm2835-isp (platform:bcm2835-isp):
        /dev/video13
        /dev/video14
        /dev/video15
        /dev/video16
        /dev/video20
        /dev/video21
        /dev/video22
        /dev/video23
        /dev/media0
        /dev/media1

mmal service 16.1 (platform:bcm2835_v4l2-0):
        /dev/video0

Raspi4B

 $ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
        /dev/video10
        /dev/video11
        /dev/video12
        /dev/video18
        /dev/video31
        /dev/media2

bcm2835-isp (platform:bcm2835-isp):
        /dev/video13
        /dev/video14
        /dev/video15
        /dev/video16
        /dev/video20
        /dev/video21
        /dev/video22
        /dev/video23
        /dev/media0
        /dev/media1

mmal service 16.1 (platform:bcm2835_v4l2-0):
        /dev/video0

rpivid (platform:rpivid):
        /dev/video19
        /dev/media3

どんなフォーマットに対応しているかチェックできる。

v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
        Type: Video Capture

        [0]: 'YU12' (Planar YUV 4:2:0)
        [1]: 'YUYV' (YUYV 4:2:2)
        [2]: 'RGB3' (24-bit RGB 8-8-8)
        [3]: 'JPEG' (JFIF JPEG, compressed)
        [4]: 'H264' (H.264, compressed)
        [5]: 'MJPG' (Motion-JPEG, compressed)
        [6]: 'YVYU' (YVYU 4:2:2)
        [7]: 'VYUY' (VYUY 4:2:2)
        [8]: 'UYVY' (UYVY 4:2:2)
        [9]: 'NV12' (Y/UV 4:2:0)
        [10]: 'BGR3' (24-bit BGR 8-8-8)
        [11]: 'YV12' (Planar YVU 4:2:0)
        [12]: 'NV21' (Y/VU 4:2:0)
        [13]: 'RX24' (32-bit XBGR 8-8-8-8)

Raspi3B

 $ v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Type: Video Capture

        [0]: 'YU12' (Planar YUV 4:2:0)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [1]: 'YUYV' (YUYV 4:2:2)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [2]: 'RGB3' (24-bit RGB 8-8-8)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [3]: 'JPEG' (JFIF JPEG, compressed)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [4]: 'H264' (H.264, compressed)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [5]: 'MJPG' (Motion-JPEG, compressed)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [6]: 'YVYU' (YVYU 4:2:2)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [7]: 'VYUY' (VYUY 4:2:2)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [8]: 'UYVY' (UYVY 4:2:2)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [9]: 'NV12' (Y/UV 4:2:0)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [10]: 'BGR3' (24-bit BGR 8-8-8)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [11]: 'YV12' (Planar YVU 4:2:0)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [12]: 'NV21' (Y/VU 4:2:0)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2
        [13]: 'RX24' (32-bit XBGR 8-8-8-8)
                Size: Stepwise 32x32 - 3280x2464 with step 2/2

Raspi4B

 $ v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Type: Video Capture

        [0]: 'YU12' (Planar YUV 4:2:0)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [1]: 'YUYV' (YUYV 4:2:2)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [2]: 'RGB3' (24-bit RGB 8-8-8)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [3]: 'JPEG' (JFIF JPEG, compressed)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [4]: 'H264' (H.264, compressed)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [5]: 'MJPG' (Motion-JPEG, compressed)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [6]: 'YVYU' (YVYU 4:2:2)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [7]: 'VYUY' (VYUY 4:2:2)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [8]: 'UYVY' (UYVY 4:2:2)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [9]: 'NV12' (Y/UV 4:2:0)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [10]: 'BGR3' (24-bit BGR 8-8-8)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [11]: 'YV12' (Planar YVU 4:2:0)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [12]: 'NV21' (Y/VU 4:2:0)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2
        [13]: 'RX24' (32-bit XBGR 8-8-8-8)
                Size: Stepwise 32x32 - 2592x1944 with step 2/2

ストリーミングテスト

画像サイズ640×480にした。大きくするとRaspberry Piの負担になりそう。

v4l2rtspserver -W 640 -H 480 -F 15 -P 8554 /dev/video0
log level:500

[NOTICE] /home/go/v4l2rtspserver/main.cpp:247
        Version: 0.3.8-5-ge2ad168 live555 version:2024.02.15
[NOTICE] /home/go/v4l2rtspserver/src/V4l2RTSPServer.cpp:37
        Create V4L2 Source.../dev/video0
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2Device.cpp:133
        driver:bcm2835 mmal capabilities:85200005 mandatory:4000001
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2Device.cpp:136
        /dev/video0 support capture
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2Device.cpp:138
        /dev/video0 support read/write
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2Device.cpp:139
        /dev/video0 support streaming
[ERROR] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2Device.cpp:212
        /dev/video0: Cannot set pixelformat to:HEVC format is:YU12
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2Device.cpp:225
        /dev/video0:H264 size:640x480 bufferSize:307200
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2Device.cpp:246
        fps:1/15
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2Device.cpp:247
        nbBuffer:1
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2MmapDevice.cpp:49
        Device /dev/video0
[NOTICE] /home/go/v4l2rtspserver/libv4l2cpp/src/V4l2MmapDevice.cpp:73
        Device /dev/video0 nb buffer:10
[NOTICE] /home/go/v4l2rtspserver/src/V4l2RTSPServer.cpp:62
        Create Source .../dev/video0
[NOTICE] /home/go/v4l2rtspserver/src/V4L2DeviceSource.cpp:96
        begin thread
[NOTICE] /home/go/v4l2rtspserver/inc/BaseServerMediaSubsession.h:49
        format:video/H264
[NOTICE] /home/go/v4l2rtspserver/inc/V4l2RTSPServer.h:275

アクセスがあると以下のように表示される。
handleCmd_SETUP:SETUP rtsp://192.168.31.54:8554/unicast/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/3.0.20 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1

(カメラやケーブルが壊れている場合は、VLCでアクセスできるが、真っ黒で動画は表示されない。)

VLCで以下のアドレスで表示するとうまく映像が表示された。

rtsp://192.168.31.54:8554/unicastにアクセスする。

User-Agent: LibVLC/3.0.20 (LIVE555 Streaming Media v2016.11.28)の部分がVLCでアクセスした時に表示される。

systemdで自動起動設定

うまくいったら自動的にRTSPストリーミング開始するように設定。

sudo vim /etc/systemd/system/v4l2rtspserver.service

[Unit]
Description=V4L2 RTSP server
After=network.target

[Service]
ExecStart=/usr/local/bin/v4l2rtspserver -W 640 -H 480 -F 15 -P 8554 /dev/video0
Restart=always

[Install]
WantedBy=multi-user.target

上記を書いたら↓スタートする。

sudo systemctl enable v4l2rtspserver
sudo systemctl start v4l2rtspserver
sudo systemctl status v4l2rtspserver

Home Assistantの設定

今のところ一番まともにカメラ映像を表示してくれる汎用カメラを使います。

configuration.yamlでは設定せずに統合から追加します。

設定 >デバイスとサービス >+統合を追加(右下)でgenericと検索して汎用カメラを選択。

汎用カメラが一番動画が途切れずに表示してくれる気がする。

上画像の1デバイス部分を押して↓「ダッシュボードに追加」を押すとRaspi3Bのカメラ映像が表示されます。

カードのコードは以下のようになってました。

show_state: true
show_name: true
camera_view: auto
type: picture-entity
entity: camera.192_168_31_54

遅延は1~8秒くらいといったところ。

オーバービューはこのようになりました。↓

Raspberry pi 5 カメラが動作するまで

2024/2の現状では、Raspberry Pi 5でカメラを使えるまではなかなか難しいみたい。

GUIの状態でカメラを動作させてみます。

config.txtに追記

ここを参考にV2カメラはimx219とうことで、config.txtの一番下に追加する。(最近のRaspberry Piのconfig.txtは/boot/firmware/config.txtに変わったみたい。)

sudo vim /boot/firmware/config.txt
最下部
dtoverlay=imx219

ファームウェア ダウングレード

このままではうまく動かないのでファームウェアをダウングレードする必要があった。

libcamera-apps fail to run V2 camera on RPi5 · Issue #104 · raspberrypi/libcamera
On RPi5 with Bookworm OS as below. pi@raspberrypi:~ $ uname -a Linux raspberrypi 6.1.0-rpi8-rpi-2712 #1 SMP PREEMPT Debi...
sudo rpi-update stable
 ↓
sudo rpi-update d16727d

動くかチェック

以下を実行すると新しいウィンドウが開いてカメラ映像が10秒ほど表示される。

libcamera-hello

Raspi5:rpicam-vidでストリーミング 未完

Raspi5のGUIで「rpicam-vid -t 0 –inline -o – –libav-format=h264」とするとウィンドウが出てきてカメラ映像が表示される。

これをストリーミング配信する。

rpicam-vid --camera 0 --framerate 15 --hdr --timeout 0 --nopreview --codec h264 --libav-video-codec h264 --libav-format h264 --inline -o - | ffmpeg -i - -f mjpeg tcp://0.0.0.0:5000?listen

VLCで「tcp://192.168.31.53:5000」にアクセスするとストリーミング動画が表示された。

Raspi5のCPU、ffmpeg9~14%くらい、rpicam-vidも最大9~12%ほど合計で常時20%ほど消費してしまう。

VLCでは動画表示できたけど、Home Assistantの汎用カメラ(設定 > 統合 >+統合を追加でgeneで検索)ではなぜか受信できなかった。

RTSPトランスポートプロトコルはTCP/UDP/UDP Multicast/HTTPのどれにしてもタイムアウトする。

Raspberry Pi 5のカメラは、しばらく良い方法がネットに上がってくるまで放置しておく。

コメント