rtspがVLC playerで開けない 〜Python3のライブラリーも遅い〜

Raspberry Pi3 Model B (RPi3B) にRaspberry Pi OSを走らせている環境で,Mplayerを試したところ,遅れがどんどん蓄積していって,ライブの監視が事実上できないので他の方法を探しています.

Pythonのモジュールで監視カメラを見るという面白い試みを見つけ,試してみました.

結論的にはやはり遅れがどんどん蓄積していくので,事実上リアルタイムの監視用途には使えません.

前の記事で引用した,

を参考にしました.というかそのまんまを試しました.

事前の準備としてpip3にて,rtsp, pysimpleguiのインストールに成功しました.

で,おもむろに本体のスクリプトを動かしてみましたが,「cv2がないよ」,「pilがないよ」というエラーが出ました.

Raspberry Pi OSでは,

apt install opencv-python python3-imagetk.pil

が必要です

これだけの追加で見事に動いてくれました.ただし,冒頭に書きましたとおり,遅れが蓄積していくのは,mplayerと同じです.

元の記事では, “pip” ですが,Python2, 3混在のシステム(Slackware😓)を長い間を使ってきているので,明示的に “pip3″としています.Debian / Raspberry Pi OSにはPython2.xはインストールしてないので,pip3とする意味はありませんが,こういうオジ(イ)さん対策のため,pip3が効くようになっています.
やはり,pipと dpkgの混用になりました.

rtspがVLC playerで開けない 〜dpkgとpip〜

コマンドラインの “mplayer” を,Raspberry Pi 3 Model B (RPi3) のRaspberry Pi OS (64bit bullseye)で試しました.

1920×1200のモニターにほぼフルスクリーンで監視カメラのからのライブ動画が表示できます.

しかし,時間がたつのが遅い😓 たちまち数分遅くなって,自分でカメラの撮影範囲に行って戻ってくると,その時の自分の様子を見ることができます💦

どんどん遅れが蓄積していくので,これは監視カメラのモニターとしては使えません.画質を落としてみれば良いのでしょうが,他の方法を先に探ってみます.

そこで検索して見つけたのが,Pythonのライブラリーを使う試みです.

これは,試みとして面白いです.Pythonのライブラリーの実力を試すこともできます.しかし,Debianのようなパッケージマネージャーにガチガチに管理されているシステムで,言語ローカルなパッケージマネージャーである,pipやcpanを使ってよいものか.いつもそこら辺のところを悩みます.

“そこら辺” は,ゆるゆるのSlackwareは気楽でした.

もちろん,DebianでもUbuntuでもManjaroでも,やっちまえばできるんですが,debian教/Ubuntu教/Manjaro教の人たちに許してもらえるのか.

ディスクイメージを保存した上で,pipで荒らしてみるというのが一番正解かもしれません.Pythonのストリーミング動画ライブラリーが,RPi3では使い物にならないということであれば,復元して他の方法をまた探せば良いです.

rtspがVLC playerで開けない 〜解決というか結論〜

Raspberry Pi OSのVLC playerでrtspが開けない問題ですが,話がDebianまで広がったので,検索したら簡単に答えが見つかりました.

要するに,Debianの方針で再生できないようにしているとのことで,バグではありません.

ということで,Debianの方針が変わらない限り,他のDistroを使うか,他のアプリを使うしかなさそうです.

Manjaroの軽いデスクトップのバージョンをインストールしてSDカードベースで使えないか,試してみることにします

追記(2023/10/07)

ffplay (FFMPEG)を使うことでなんとかなりました → Raspberry Pi 3 でRTSPを見る(結論)

追記(2023/11/7)

その後,Raspberry Pi OSのVLCはRTSPを見ることができるようになりました.

と思ったけど,Manjaro ARM64には,Avahi / mdnsが使えないという問題がありました(後注: 解決済みです).

zram (4) 設定の場所

なんでも一通り動けば,あとはいじることもなくなるので,設定ファイルについてはじきにその場所すら忘れてしまい,次に必要となった時またゼロからはじめるというのが世の常です😓

少なくとも検索が自己完結できるように,メモっておきます.というか,既に忘れはじめているので復習です.

共通事項

共通のユーティリティーとしては,zramctlがあります.zramの動作を確認する場合は,

zramctl

ファイルのswapを含む,swapのすべてを表示するには,

swapon

です.

Debian

Bullseye現在の話です.一番解りやすいです.インストールはapt install zram-toolsで良く,デフォルト設定で動き出します.

設定をカスタマイズする場合は,/etc/default/zramswapを編集します

動作確認は,

systemctl status zramswap

です.

また,/var/swapを使ったswapを止めるには下記を実行します.

systemctl stop dphys-swapfile
systemctl disable dphys-swapfile
rm -v /var/swap

Slackware

Slackware64, SlackwareARMの15.0で動作確認してます.インストールは,ここら辺を参考にしました

上記の内容の通りですが,/etc/udev/rules.d/10-zram.rulesと,/etc/rc.d/rc.localに起動と設定を自分で書くことになります.

Manjaro

udev

Manjaroでも筆者はその後,Slackwareと同じくudevでの設定を採用しています.

[この項2024年6月20日追記]

zram-generator & systemd-swap

これは,x86 64bitでも,ARM 64bitでも使えます.

設定ファイルは,/etc/systemd/swap.conf.d/内の,任意.confで,テンプレートは/etc/systemd/swap.confです.

動作確認は,

systemctl status systemd-swap

です.

ARM64 (zswap-arm)

zswap-armは下記の理由から使わないほうがいいと思います.

設定ファイルはなく,敢えてカスタマイズするとしたら,/usr/lib/systemd/scripts/zswap-arm-ctrlをいじるしかなさそうです.

2022/6/20の稿では,zram.confとしていましたが,zramswapが正しいです(2023/8/10記).
ARM, aarch64の記事ですが,AMD64 (x86_64)も同じでいけます.試してませんが,オリジナルのSlaclware (32bit版)も大丈夫だと思います.

zram (2)

結局,SlackwareARMのサーバー,古いCore i7の第2 ワークステーションの第1 OSであるManjaro AMD64, 第2 OSであるDebian AMD64,全部zramをswapに使うようにして,ディスクのswapパーティションを使うのをやめました.

あとは仮想マシンが残っていますが,緊急性はないのでぼちぼちやっていきます

しばらく様子を見たいと思います.

zramをswapにすることはできましたが,思ったような設定はできていません.
Bullseyeでは,zram-toolsをインストールするだけで一番簡単でした.
実験的な意味はあるので気力がみなぎっているときにやってみるつもりです.