Posted at

Raspberry PiでUSB Web CAMの動画を配信する ~mjpg-streamer自動化編~

More than 1 year has passed since last update.


Raspberry PiでUSB Web CAMの動画を配信する ~mjpg-streamer自動化編~

SysmtedにServiceとして登録することで、電源投入時にmjpg-streamerを自動起動するようにする。


使用機材


  • Raspberry Pi 2 Bodel B

  • Logicool HD Web CAM C270

  • 8GBのmicro SD Card


OS


  • RASPBIAN STRETCH LITE (2017-11-29)


手順

既にRaspbianをSD CardにInstallしてあるものとする。

インストール方法については公式を参考

次にmjpg-streamerをInstallしてあるものとする。

インストール方法についてはこちらの記事を参照

Raspberry Piを起動し、ログインしておく。(今回の作業では標準ユーザー Pi で作業している。)


以下のコマンドでデバイスのIDを探す

sudo systemctl list-units -t device

筆者環境では sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.3-1\x2d1.3:1.2-sound-card1.device にC270が見つかった。


Systemdに設定を登録し、有効化する

editorでSystemdの設定ファイルを作成する。

sudo nano /etc/systemd/system/mjpg-streamer.service

以下の設定を流し込む。

[Unit]

Description=MJPG-Streamer with /dev/video0.
After=udev.target
After=sound.target
After=syslog.target

BindsTo=sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.3-1\x2d1.3:1.2-sound-card1.device
After=sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.3-1\x2d1.3:1.2-sound-card1.device

[Service]
type=simple
ExecStart=/usr/local/bin/mjpg_streamer -i 'input_uvc.so -d /dev/video0 -r 640x480 -n -y' -o 'output_http.so -w /var/www -p 8080'

[Install]
WantedBy=multi-user.target
WantedBy=sys-devices-platform-soc-3f980000.usb-usb1-1\x2d1-1\x2d1.3-1\x2d1.3:1.2-sound-card1.device

Systemdに対して自動実行を有効にする

sudo systemctl enable mjpg-streamer.service


補足


  • USBデバイスなので何らかのタイミングで値が変わる可能性がある


    • 筆者環境では今のところ問題は起きていない



  • USB Web CAMがSound Card扱いになっているように見えるが、これが仕様なのかはよくわからない


参考文献

Linux でデバイスを接続している時だけ動くサービスを作る