树莓派4b默认安装的是32位系统,用的完全没有问题,因为给装的是初学者镜像。
但是对于配备了8GB内存的版本来说,显然不合适。
于是自己按照官方的说明烧录了64位系统,使用方法什么的都没有差别。
只是很多命令行的命令不能用了,其中就有调用摄像头的命令。
下面是用到的一些问题和解决方法
1.源的问题
国内只有清华的源支持64位的版本,所以改成清华的源吧,百度上到处都是。
配的还不是raspy的源,配的是debian的源
2.摄像头命令不能用
raspistill -o new.jpg报错(参考https://www.cnblogs.com/dongxiaodong/p/9814119.html)
Errors:
mmal: mmal_port_event_send: event lost on port 1,0 (buffer header callback not defined)
mmal: mmal_port_event_send: event lost on port 1,0 (buffer header callback not defined)
错误详情见:https://www.raspberrypi.org/forums/viewtopic.php?p=1729920
这很显然是64位的还没支持raspistill命令,更别说录制视频的了。包括xdg一系列的命令。甚至改完清华源升级之后很多rasp的命令也没了。
从上面的论坛中突然又个灵感摄像头就是输出到/dev/video0而已,那用ffmpeg读取/dev/video0不就行了。
参考:https://blog.csdn.net/win_lin/article/details/50523098
解决方法:
安装ffmpeg:
#安装ffmpeg
sudo apt-get install ffmpeg
#1. 摄像头截图
ffmpeg -i /dev/video0 -r 1 -t 4 -q:v 2 -f image2 image-%d.jpeg
#-r 每隔1s截取一张图
#-t 一共截4s
#2.摄像头推流
ffmpeg -f v4l2 -i /dev/video0
-c libx264 -profile:v main -preset:v fast
-b:v 300k -s 640x480 -r 25
-an
-f mpegts -y "udp://192.168.0.3:12344"
#从pc上用vlc打开链接"udp://192.168.0.3:12344"
3.把hdmi拔掉之后用VNC不能远程桌面了
提示:“cannot currently show the desktop”
解决方法:
设置分辨率:
sudo raspi-config
#依次选择2 Display Option-> 01 Resolution ->DMT Mode 16
#然后保存退出重启就行了
4.cmake报错
安装opencv等报错:"problem with the cmake installation, aborting build. cmake executable is cmake"
版本不匹配,更新pip即可
sudo pip3 install --upgrade pip setuptools wheel
# 然后再安装opencv
# pip3 install scikit-build
# sudo pip3 install opencv-python
5.从其他地方复制过来的程序,一运行,就出现Segmentation fault
很显然运行平台不匹配,在各开源社区下载的时候,注意要眼神好点,分清楚arm64和amd64,分清楚freebsd和linux。