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扱いになっているように見えるが、これが仕様なのかはよくわからない