我在一个带有 raspberry pi zero w 的项目中使用了 motioneyeos,并且可以轻松获得 20fps@1280x720,因此我决定快速滑动 buildroot 来删除我不需要的功能(我只需要流)并希望为以后释放一些 CPU 使用率。
我现在拥有 pi zero w 的默认 buildroot 配置以及使 wifi 工作和运动的最低要求。
我调整了 /etc/init.d/S99motion 文件并将其更改为:
#!/bin/sh
NAME=motion
PIDFILE=/var/run/$NAME.pid
DAEMON=/usr/bin/$NAME
start() {
printf "Starting $NAME: "
motion -m -c /etc/motion/motion.config -p $PIDFILE
[ $? = 0 ] && echo "OK" || echo "FAIL"
}
stop() {
printf "Stopping $NAME: "
start-stop-daemon -K -q -p $PIDFILE
[ $? = 0 ] && echo "OK" || echo "FAIL"
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
restart
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit $?
我也尝试运行运动命令,chrt 99
但没有任何变化。
我还更改了 motion.conf 文件以禁用 Web 控制器、视频保存并更改视频参数。以下是我从默认值更改的内容:
daemon on
mmalcam_name cv.ril.camera
width 1280
height 720
movie_output off
framerate 20
webcontrol_port 0
stream_maxrate 20
但是视频非常卡顿(可能在 1280x720 时为 2-3fps),我无论如何也想不出为什么性能这么差。我还查看了 motioneyeos github 存储库中的部分代码,但无法确定运动过程实际上是从哪里开始的(我根据他们的自定义 init.d 文件找到了 motioneye.sh,但这是我能找到的最多的信息)。
编辑我还刚刚注意到,只有当我启用“快速网络摄像机”设置时,我才能在 motioneyeos 上获得这种性能,否则帧速率大致相同。