RPi3でRTSPを見る 〜Manjaro KDE編〜

テスト完了しました.結論的には,「若干問題があるが使える」です.以下の最終的なまとめは,BLOGの記事を基にしてその後の知見で若干updateしています.

Manjaroのxfce版でもテストしました → RPi3でRTSPを見る 〜Manjaro xfce編〜

内容

Debian / Raspberry Pi OS / Ubuntu提供のVLCはRTSPを見ることができない

これは確実です(2022/09/07現在).ネットの複数の情報で裏が取れます1し,複数の実機と仮想マシン(x86_64, ARM)で試して全部同じ結果でした.

もし,Raspberry Pi OS(RPiOS)のVLCがrtsp視聴を不可としていなければ,ずいぶん楽だったと思います.

概要

余っているRaspberry Pi 3 Model B (+) を用いてReal Time Streaming Protocol (RTSP)の映像をモニターする,というプロジェクトです.

RPi3(+)にHDMIケーブルを差し込みモニターにつなぎ,電源を接続するとOSが起動して,プライマリーなユーザーに自動ログインして,自動スタートするように設定したVLCが起動してRTSPの配信サイト(LAN内)に自動接続して,フルスクリーンでモニターを開始する,というところまでできました.

RPi3

テストしたRaspberry Piは,Raspberry Pi 3 Model B (RPi3)とRaspberry Pi 3 Model B+ (RPi3+)の2つで,いずれもRAMは1GB搭載のものです.

OS

Raspberry Pi OSが配布するVLCは,RTSPを視聴する機能がありません.これはDebianの方針だそうで,DebianやUbuntuの配布するVLCも同様です

他にRPi3(+)で使える気の利いたOSはたぶんManjaroしかないと思います.そこで,Manajaroのdownloadページからインストーラーをダウンロードして,インストールします.詳細は省略しますが,Raspberry Pi 4用のインストーラーでRPi3(+)にインストールすることが可能です.

最初はxfce版を試しましたが,VLCを動かしていると画面が真っ黒になることが頻発したので,KDE Plasma Desktopを使いました.KDEを使い慣れているという面もあります

micro SDカードは16GBで十分だと思いますが,手持ちの32GBのものを使いました.

インストーラーを焼いたmicro SDカードを差し込んでRPi3(+)を起動してもなかなか画面が表示されませんが,じっとがまんすればいつかインストーラーが表示されます.

インストール完了して,ブートさせると,zramも設定済です.

KDE Plasma Desktopの設定とOS update

まずは,ネットにつながないと話にならないので,Wi-Fiの設定をします

ネットにつながるようになったら,システムをupdateする必要があります.これが非常に時間がかかります

Konsoleを開いて,suなりsudoでrootになって,

pacman -Syu

として,質問に答え,updateが終わるのを待ちます.GUIのパッケージマネージャーもありますが,最終形態では,キーボードとマウスをつながない状態で運用し,メンテする際はsshで他のマシンからつないで行うので,CUIで完結したほうが良かろうと思います.

VLCのインストールと設定

updateが終わったら,VLCをインストールします.Konsoleからroot権限で,

pacman -S vlc

でインストールできます.ここも当然GUIでいけますが,CUIでいきます.

VLCがインストールできたらGUIで起動して, “Open Network Stream…” でダイアログを開いて,

rtsp://ユーザー:パスワード@IPアドレス/サービス名など

の形式で入力して,RTSPのサイトに接続を試みます.

うまく行ったら,VLCの自動起動の設定です.System Settings > Startup and Shutdown > Autostart と進んで, “+Add…” のボタンを押し, “Add Application…” を選んで,VLC (media player)を追加します(たぶん, “Multimedia”のなかにあります).

リストに表示された,VLCの右端の方にある設定ボタンを押し,ダイアログの “Application” タブの中の “Command”を,

/usr/bin/vlc -f rtsp://ユーザー:パスワード@IPアドレス/サービス名など

のように改変します.

自動ログインの設定は,System Settings > Startup and Shutdown > Login Screen (SDDM) で,下の方の “Behavior…” ボタンを押すと出てきます.

画面が消える問題

KDE System Settings > Workspace Behaviorで,スクリーンロックをoffに,Energy Saving > Screen Energy Savingをoffにしておきますが効果なくスクリーンセーバーが効きます.また,VLCの詳細設定で,スクリーンセーバーを無効にする設定がON(default)になっていることを念のため確認します.

一旦電源を落としてから,電源を入れ,OSの起動,KDE Plasma Desktopの起動,自動ログイン,VLCの自動起動とフルスクリーンによるRTSPの表示を確認します.

これで,VLCが安定して動いてくれればめでたしめでたしなのですが,速いときでは数分,たいていは10〜30分の間に画面が黒くなります.モニターによってはマウスを動かすなどして画面が復活しますが,一部のモニターではRPi3(+)をいったんpoweroffしてから再起動しないと,画面が復活しません.

対処法

Workaroundがありました.このページを参考にしました.

xdotoolによって擬似的にマウスを動かさずとも,

#!/bin/sh
DISPLAY=:0 xset -dpms
DISPLAY=:0 xset s off

というスクリプトを作り,適当な名前を付けて,実行可能にして,System Settings > Startup and Shutdown > Autostartで,Login Scriptに追加します.

“DISPLAY=:0″は,自動起動の際には不要ですが,リモートマシンから実行する際に必要なので,入れておきます.

これで,モニターが消えることなく継続的に監視できます

若干の問題

VLCが,指定のURLにつながらないというエラーを出すことが,何回かの起動に一回ありますが,それはWi-Fiの接続が遅れたときで,再度起動してみます.ご家庭内にある,複数のWi-FiやSSIDのうち,一番繋がりやすいものに接続しておくのが良いと思います.

終わりに

ここまで,最短と思われる手順を書きましたが,実際はここに来るまで,行きつ戻りつの繰り返しで,その経験を踏まえてこんなところだろうとまとめてみました.ここに記載した手順でやってもうまく行かないかもしれません.

テストに使用したいくつかのモニターのうち一番古いモニターをつないでいる場合,Screen Saverが働いたり,モニター側でいったん入力を他のソースに切り替えて戻した等によって信号が途絶えると,そのあとどうやっても画面が復活しないことが解りました.このモニターとの “相性” の問題が原因の切り分けを困難にしてくれました.

安いワイヤレスマウスをつないでおけば,他のマシンからsshでログインしなくても,正常終了させることもできます.

Notes:
1. ARM64版ばかりでなく,x86 32bit版,AMD64版も同じです.
2. 個人の感想です.
3. しかし,VLCの画面が黒くなるのは,xfceでもKDEでも同じことが後にわかりました.
4. もちろん,LANケーブルでつなぐ選択肢もあります.
5. インストーラーをダウンロードするタイミングによっては, “updateなし” ということもあります.
6. サラッと流していますが,筆者の場合,RTSPのカメラの不具合がこのプロジェクト中に判明して,カメラから来るRTSPをVLCで安定して見ることができるようになるまでかなりの日時を要しました.
7. あっても正常に動きます.
8. ということは,KDE System Settings > Energy SavingのScreen Energy Savingの設定が効かないバグがあるということでしょうか.
9. 条件によってはより頻発することもあります.
ARM64版ばかりでなく,x86 32bit版,AMD64版も同じです.
個人の感想です.
しかし,VLCの画面が黒くなるのは,xfceでもKDEでも同じことが後にわかりました.
もちろん,LANケーブルでつなぐ選択肢もあります.
インストーラーをダウンロードするタイミングによっては, “updateなし” ということもあります.
サラッと流していますが,筆者の場合,RTSPのカメラの不具合がこのプロジェクト中に判明して,カメラから来るRTSPをVLCで安定して見ることができるようになるまでかなりの日時を要しました.
あっても正常に動きます.
ということは,KDE System Settings > Energy SavingのScreen Energy Savingの設定が効かないバグがあるということでしょうか.
条件によってはより頻発することもあります.