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では使い物にならないということであれば,復元して他の方法をまた探せば良いです.

Manjaro ARMでAvahi/nss-mdnsが機能しない

注: 本件は解決済みです → Manjaro ARMのAvahi解決

筆者のLAN内では,複数台のmacOS機器と複数台のLinux機器が動いています.LAN内のDNSも動いていますが,大抵はBonjour / Zeroconf / Avahiで名前解決して接続しています.

前からどうもRaspberry Pi 4 Model B (RPi4) で動くManjaro ARM64だけ,他の機器につなぐことも,他の機器からつなぐこともできません.とはいえ,DNSを使えば名前解決できるので放置してました.

同じRPi4でRaspberry Pi OSを動かすぶんには,難なく相互に接続できます.また,Intel Core i7の第2workstationのManjaro AMD64(x86_64)版も相互に接続できています.

RPi4でManjaro ARM64を動かしているときだけ,Avahi-daemonも,nss-mdnsも機能していないということです.

自分でbuildして試してみようかな.

[2022年6月23日(木)]

追記: かつても経験

なんか😓 自分のBLOG内にかつてのAvahiの不具合が記してありました.

このときは原因不明のまま,問題となるLinuxマシンのKernelのバージョンが上がったら直りました.いや,このときは直ったようで直ってないようですね😓

しかし,時を経ていつの間にか直ってます.

今回もKernelの問題か,Avahi自体でないところに問題があるのかもしれません.知らんけど.

[2022年6月24日(金)]

追記2: 解決しました

rtspがVLC playerで開けない

政府や警察関係が防犯カメラと呼ばせたい監視カメラをわが家でも動かしています.そのカメラのファームウェアは明らかな不具合があり,また,ユーザーフォーラムで機能追加の要望があるのに,なかなかバージョンが上がらなかったのですが,ここ数か月の間にバタバタと2回上がりました

最近まで気が付かなかったのですが,Real Time Streaming Protocol (プロトコル名 “rtsp” )がそのどちらかのパージョンアップのときからサポートされていたようです.

早速,VLC playerで見てみました.macOS版では全く問題なく再生できます.Manjaro ARM64版もOKです.ところが,Raspberry Pi OS版はエラーになってしまいます.

Raspberry Pi のVLC playerではエラー

URLは,

rtsp://ユーザーID(英数):パスワード(英数)@数字表記のIPv4アドレス/サービス名(英数)

という型式です.具体的にはこんなです.

rtsp://1234:5678@192.168.0.240/lv00

バージョンは,Manjaro ARM64用と,Raspberry Pi OS用はいずれも 3.0.17.4 で,macOS(x86 64bit)版は, 3.0.17.3 で,機能に関わる差はありません.

[2022年6月23日(木)]

追記: Debian AMD64 (x86_64)でもNG

表題の通りですが,Raspberry Pi OS (64bit)版と同じエラーを出して,Debian版も動きません.Debianでもだめなので,Raspberry Pi OSでも当然だめということなのでしょう.

[2022年6月24日(金)]

追記: 結論

台数に関してはセキュリティーの関係から記しません.
残念ながら,不具合の1つは改善しましたが,完全にはよくなっていません.

zram (3) 〜zramの話ではない〜

zramをswapに使えば,SDカードで動かしているRaspberry Pi 4 Model B (RPi4) の挙動は少しは改善するかという試みですが,その答えはNOでした.遅さはswapだけの問題ではないです.

で,それを検証するのに四苦八苦しました.これまでRPi4にLinux distroをインストールする場合,インストール用イメージをSDカードに焼いて起動して,必要最低限の設定を終えたら,SDカードの中身をSSDにコピーして,多少のおまじないをしてからSSDから起動するということでうまくいってきました.

Raspberry Pi 3 Model B(+)の場合も,ルートディスクの中身をSSDにコピーしてSDカードのvfat内のcmdline.txtを書き換えてOKでした

当然,SSDで動いていれば,適切にその内容をSDカードにコピーすれば,SDカードのみで使える様になるはずです.それがなかなかうまくいきませんでした.

SDカードは,Toshibaのmicro SDカード64GBです.

過程を思い出すのがめんどうなので,結果だけ書きますと,比較のために使用した1TBのHDDはもともとgptで成功.64GB SDカードはUSBアダプターを使ってテストして,dosではだめで,これもgptにしたら成功.成功したところで,RPi4のSDカードスロットに差しても起動するようになった,といったところでしょうか.

なぜSDカードからの起動がdosパーティションではだめで,gptならうまくいくのかは調べません.64GBだからか,Toshiba製だからなのか,解りません.

将来,また今回のことを忘れで試行錯誤する自分宛のメモですが,「cmdline.txtやfstabの記述は,UUIDを使うこと」,です.具体的なディバイス名は,複数のUSBディバイスを使う時や,RPi4本体のSDカードスロットに差し込む時に変わるからです.

もうひとつ,SSD/HDDからSDカードへのrsyncによるコピーは,一晩以上かかります.

CD/DVDはともかくSDカードも「焼く」で良いかの議論はめんどうなので割愛します.
この場合は,RPi4と違って,起動用のSDカードは必要です.なんかちょっと難しいまじないをすればSDカードが要らなくなるようですが,そこまでは追求しません😓