我在带有 Alpine Linux 的 Raspberry Pi 3A+ 上使用 v4l2,但安装了官方 Raspberry Pi 内核/固件。我正在尝试让我的 Raspi-Camera 自动启动并通过 mjpg-streamer 提供直播服务,这是我迄今为止的尝试:
/etc/init.d/mjpg-streamer
#!/sbin/openrc-run
command="/usr/local/bin/mjpg.sh"
command_background="yes"
pidfile="/run/mjpg-streamer.pid"
depend() {
need net
}
/usr/local/bin/mjpg.sh
#!/bin/sh
set -e
modprobe bcm2835-v4l2
chgrp video /dev/video0
chmod g+rw /dev/video0
export LD_LIBRARY_PATH=/opt/vc/lib
v4l2-ctl --set-fmt-video=width=1440,height=1080,pixelformat=3
chpst -u mjpg:video -- mjpg_streamer -o "output_http.so -w /usr/local/share/mjpg-streamer/www/" -i "input_uvc.so -r 1440x1080 -d /dev/video0 -f 15"
但是,启动后这不会按预期工作。分辨率和像素格式都没有正确设置,我在直播中得到的是质量很差的流,具有可见像素和非常糟糕的颜色。
一旦 Pi 启动,我就可以通过 ssh 连接到它,重新启动上面的设备,并按照我预期的方式获得完美质量的直播。因此,我假设缺少一些依赖项,需要在设置 v4l2 选项并启动 mjpg-streamer 之前启动它。我尝试sleep
在该 shell 脚本中放置一个命令,但无济于事。
我该怎么做才能让这个脚本在自动启动时正常工作,而不仅仅是在之后调用时正常工作?