我将 Raspberry Pi 用作安全摄像头,我希望能够在重启时自动启动 libcamera-vid 流,并全天更改一些设置。
我拼凑了下面的脚本只是谷歌搜索...
#!/bin/bash
pkill -f libcamera-vid ;
H=$(date +%k%M)
(( 700 <= H && H < 2000 )) && libcamera-vid -t 0 --inline -n --bitrate 3000000 --width 1920 --height 1080 --rotation 180 --framerate 24 --autofocus-mode manual --gain 2 --sharpness 4.0 --contrast 1.2 --brightness 0.1 --codec libav --libav-format flv --libav-audio --audio-device alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.mono-fallback --audio-bitrate 192000 --av-sync 2000000 -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/securcam}' || libcamera-vid -t 0 --inline -n --bitrate 3000000 --width 1920 --height 1080 --rotation 180 --framerate 24 --autofocus-mode manual --gain 26 --sharpness 2.0 --contrast 1.2 --brightness 0.1 --codec libav --libav-format flv --libav-audio --audio-device alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.mono-fallback --audio-bitrate 192000 --av-sync 2000000 -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/securcam}'
#this is how I added my jobs in the cron
@reboot /home/user/scripts/rebootcam.sh
05 07 * * * /home/user/scripts/rebootcam.sh
20 05 * * * /home/user/scripts/rebootcam.sh
脚本通过终端运行良好,但它不会通过 cron 作业运行。看来 cron 将执行脚本的最后一部分(vlc rtsp 流)并且出错或忽略 libcamera-vid 命令。
我假设运行输出流的管道在 cron 运行时破坏了脚本。
我希望一些大师可以解释这是否可以通过 cron 运行。
感谢您的帮助。
通过
cron
开始的工作不会通过您正常的交互式登录序列,并且没有设置相同的 PATH,因此经常找不到程序。
启动终端并找到脚本使用的所有工具/程序的完整路径,例如
type pkill
type date
type libcamera-vid
type cvlc
然后在你的顶部构建一个 PATH
bash
脚本,其中包含所有 containing 目录。所以如果你得到:
pkill is /orange/pkill
date is /opt/banana/date
你会用:
#!/bin/bash
PATH=$PATH:/orange:/opt/banana
...
rest of script