パス単位とタイマーの機能を同時に持つ方法があるかどうか疑問に思います。アイデアは、システムでルートが見つかりましたが、午前9時から午後6時の間にのみ発見された場合、特定のサービスを開始することです。
ffmpeg
現在USBカメラが利用可能になるたびに開始される次のパス/サービスがあります/dev/video4
。
カメラパス:
[Unit]
Description=USB Camera Stream Service Path
[Path]
PathExists=/dev/video4
Unit=camera.service
[Install]
WantedBy=multi-user.target
カメラサービス:
[Unit]
Description=USB Camera Stream Service
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/ffmpeg -f v4l2 -input_format h264 -video_size 1920x1080 -i /dev/video4 -copyinkf -codec copy -f flv rtmp://127.0.0.1/live/stream
systemctl start camera.service
注:また、いつでもサービスを手動で開始できるようにしたいです。
ありがとうございます。
答え1
最も簡単な方法は、おそらくsystemd
現在の時間をテストし、指定された範囲内でコマンドを実行するスクリプトを実行することです。
たとえば、次のスクリプトを作成します/usr/local/bin/myscript
。
#!/bin/sh
if [ $(date +%H) -ge 9 -a $(date +%H) -le 18 ]; then
ffmpeg -f v4l2 -input_format h264 -video_size 1920x1080 -i /dev/video4 -copyinkf -codec copy -f flv rtmp://127.0.0.1/live/stream
fi
スクリプトに実行権限を付与する必要があります。
sudo chmod +x /usr/local/bin/myscript
次に、次の行を変更しますcamera.service
。
ExecStart=/usr/bin/ffmpeg -f v4l2 -input_format h264 -video_size 1920x1080 -i /dev/video4 -copyinkf -codec copy -f flv rtmp://127.0.0.1/live/stream
これに関して:
ExecStart=/usr/local/bin/myscript