Raspberry PiでRTSPを見る 〜systemdで起動〜

まえがき

~/.config/autostart/にVLCの起動スクリブトを書いて動けば,systemdを使う必要はありません.実際筆者の試したところでは,Raspberry Pi 3 Model B (RPi3), 同 3 Model B+ (RPi3+), 同 4 Model B (RPi4)ではautostartに登録で問題なくVLCが起動できて実用的な安定性が得られます.

しかしどうしたものか,Raspberry Pi Zero 2 WH (RPiZero2)では,上記の方法では,VLCの起動はしますが,数分でVLCが落ちてしまいます.

そこで,alternativeとしてsystemdでの起動を試み,RPiZero2においても安定にVLCでRTSPの再生ができるようになりました.

2025年6月11日(水)現在の状況をまとめます.

ここに記してある方法は,筆者のモットー “動けば良いのだ™” に従っていて,なぜそうなるのかという原因の究明は一切ありません

また,今後のRaspberry Pi OSやVLCのupdateにより,状況が変わってくる可能性も十分にあります.

/etc/systemd/systemに登録

成功した方法です.

VLCを起動するスクリプトrun_vlc.shを自動ログインユーザーのホームディレクトリー/home/自動ログインユーザー名/に置きます.

#!/bin/sh
DISPLAY=:0 /usr/bin/vlc   \
	-f \
	rtsp://1234:5678@192.168.1.99/live	\
  	> /dev/null 2>&1 &

chmod a+x run_vlc.shをしておきます.

次にsudo -iでroot権限になります.そして,/etc/systemd/system/に,2つのファイルを作ります.

# run_vlc.service
[Unit]
Description=Run vlc
DefaultDependencies=no
After=graphical.target

[Service]
Type=simple
User=自動ログインユーザー名
Group=同グループ名(たぶんUser名と同じ)
ExecStart=/home/自動ログインユーザー名/run_vlc.sh
TimeoutStartSec=0
RemainAfterExit=yes

[Install]
WantedBy=default.target
# run_vlc.timer
[Unit]
Description=Delayed start of vlc
After=graphical.target

[Timer]
OnBootSec=30sec

[Install]
WantedBy=timers.target

そして,root権限のまま,

systemctl enable run_vlc.timer
reboot

とします.これで再起動後に,VLCが起動すれば成功です.

~/.config/systemd/userに登録

この方法は,RPi3ではうまくいきますが,RPiZero2では,システムの起動後VLCはいったんは自動起動しますが,その後モニター(地デジテレビ)のほうで入力ソースを切り替えたり,モニターの電源をOFF/ONすると,VLCが落ちます.そのため,RPiZero2では,前項の方法をお薦めします.

こちらは,自動ログインユーザー権限のままの作業です.

まず,たぶんないので~/.config/systemd/userというディレクトリーを作ります.その中に,run_vlc.serviceとrun_vlc.timerを作ります.

# run_vlc.service
[Unit]
Description=Run vlc
DefaultDependencies=no
After=graphical.target

[Service]
Type=simple
ExecStart=/home/自動ログインユーザー名/run_vlc.sh
TimeoutStartSec=0
RemainAfterExit=yes

[Install]
WantedBy=default.target
# run_vlc.timer
[Unit]
Description=Delayed start of vlc
After=graphical.target

[Timer]
OnBootSec=30sec

[Install]
WantedBy=timers.target

そして,ユーザー権限のまま,

systemctl --user enable run_vlc.timer

としてから,再起動します.筆者のテストでは前述のようにRaspberry Pi Zero 2ではシステムの起動後にVLCが起動はしますがモニターの切り替えなどですぐVLCが落ちてしまいます(RPi3以上ではうまく動きます).

Notes:
1. Slackware流儀でメンテするのであしからず.
Slackware流儀でメンテするのであしからず.