Raspberry Piでmjpg-streamerをサービスに設定し自動起動しWebカメラからの動画を外部ストリーミングする
カテゴリー:#RaspberryPi Arduino ESP32(記事数:154)

↑B


2021.09.09

Raspberry Piでmjpg-streamerをサービスに設定し自動起動しWebカメラからの動画を外部ストリーミングする

■STEP1:mjpg-streamerをインストール

sudo apt-get install -y cmake libv4l-dev libjpeg-dev imagemagick
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
sudo make; sudo make install


参考にしたページ:
これだと
/home/pi/mjpg-streamer/mjpg-streamer-experimental
なんて深いディレクトリに実行ファイルが出来ちゃうのがちょっと分かりにくいけど。

mjpg_streamer -o "/usr/local/lib/mjpg-streamer/output_http.so -w ./www -p 8080" -i "/usr/local/lib/mjpg-streamer/input_uvc.so -d /dev/video0 -r 640x480 -fps 10 -q 50 -y -n"


を実行するとLAN内なら
http://raspi35.loal:8080/?action=stream
で見れる。※ホスト名がraspi35の場合
※ディレクトリ名がハイフンで、実行ファイル名がアンダーバー使用なのでご注意

■STEP2:カメラのデバイスIDを取得
sudo systemctl list-units -t device
ってやるとカメラの固有デバイスIDを知ることが出来る。
sys-devices-platform-soc-20980000.usb-usb1-1\x2d1-1\x2d1.2-1\x2d1.2:1.2-sound-card2.device

みたいなやつ
参考:
■STEP3:サービスに登録
/etc/systemd/system/mjpeg_streamer.service
を下記の内容で作る。必要十分条件分かってないけど成功した時の
ファイル所有者はpi:pi、パーミッションは755でした。
※それぞれchownとchmodで変更可能。

[Unit]
Description=mjpeg-streamer
After=syslog.target
After=sound.target
After=udev.target

BindsTo=sys-devices-platform-soc-20980000.usb-usb1-1\x2d1-1\x2d1.2-1\x2d1.2:1.2-sound-card2.device
After=sys-devices-platform-soc-20980000.usb-usb1-1\x2d1-1\x2d1.2-1\x2d1.2:1.2-sound-card2.device
[Service]
Type=simple
ExecStart=/home/pi/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer -o "/usr/local/lib/mjpg-streamer/output_http.so -w ./www -p 8080" -i "/usr/local/lib/mjpg-streamer/input_uvc.so -d /dev/video0 -r 640x480 -fps 30 -q 10 -y -n"
TimeoutStopSec=5
StandardOutput=null

[Install]
WantedBy = multi-user.target
WantedBy = sys-devices-platform-soc-20980000.usb-usb1-1\x2d1-1\x2d1.2-1\x2d1.2:1.2-sound-card2.device

カメラID関連の部分はカメラの認識を待ってから起動しているんだと思うけど細かいところは分かってない。。。

サービスの再読み込み(?)
sudo systemctl daemon-reload

下記で自動起動に設定
sudo systemctl enable mjpg_streamer


自動起動の停止や、サービスの手動スタート、停止は下記
sudo systemctl disable mjpg_streamer 
sudo systemctl start mjpg_streamer
sudo systemctl stop mjpg_streamer


きちんと起動しているかどうかは
sudo systemctl

で起動しているサービスの状態一覧表が出てくる。

次に再起動した後は自動で起動している。これってストリーミングしている時だけ負荷かかっているんだよね?mjpg-stremerをサービスに登録している最中にfswebcamとかで静止画キャプチャー可能なのかな?

参考:

Category:#RaspberryPi Arduino ESP32



■ ■ ■ コメント ■ ■ ■

いいっすね!

名前 ↑B

コメント(※改行は省略されます)

※3回以上の連続書き込み不可
この記事のアクセス数:


→カテゴリー:#RaspberryPi Arduino ESP32(記事数:154) (コメント数)