大家好,我是小智!
在树莓派 OS Bookworm 版本上安装 mjpg-streamer 并非像旧版本一样简单,许多网上的教程已经过时,甚至存在错误。我在尝试过程中遇到了多个问题,例如依赖库缺失、编译失败等,但最终成功解决并搭建了 远程视频流监控系统。本教程基于 树莓派 3B,整理了一套 完整、可复现 的 mjpg-streamer 安装方法,避免常见坑点,确保顺利运行。适合想要在 Bookworm 上使用 mjpg-streamer 的用户参考。
为什么要写这篇文章?
1.缺少适用于树莓派3B和Bookworm的正确mjpg-streamer安装教程
2.小智搜到的很多教程中有错误/过时信息,经过验证,方案不可行
类似:
sudo apt-get update
sudo apt-get upgradesudo apt-get install subversion
sudo apt -y install libjpeg62-turbo-dev //sudo apt-get install libjpeg8-dev 不可用
sudo apt-get install imagemagick
sudo apt-get install libv4l-dev
sudo apt-get install cmake
sudo apt-get install gitgit clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
sudo make all
sudo make install./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"
//./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
3.即使进行第二点的过程中没报错,它还是失败
-
在Bookworm系统中,用户不需要对摄像头进行配置,可以直接使用。即使输入sudo raspi-config并选择Interfacing Options,它不会出现camera的选项,如图:
-
在第二点成功执行完成后,小智没见过input_raspicam.so,即使查看了不可见文件也没有
-
小智使用的是官方摄像头,不支持MJPG格式,即使调整为YUYV也是失败(报错相对温和一些),报错信息如下:
pi@raspberrypi:~/Downloads/mjpg-streamer/mjpg-streamer-experimental $ ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
MJPG Streamer Version: git rev: 310b29f4a94c46652b20c4b7b6e5cf24e532af39i: Using V4L2 device.: /dev/video0i: Desired Resolution: 640 x 480i: Frames Per Second.: -1i: Format............: JPEGi: TV-Norm...........: DEFAULTi: Could not obtain the requested pixelformat: MJPG , driver gave us: YUYV... will try to handle this by checking against supported formats.... Falling back to YUV mode (consider using -yuv option). Note that this requires much more CPU power
UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)o: www-folder-path......: ./www/o: HTTP TCP port........: 8080o: HTTP Listen Address..: (null)o: username:password....: disabledo: commands.............: enabled
libv4l2: error turning on stream: Invalid argument
Unable to start capture: Invalid argument
灵感来源
进入网站较慢,稍作等待[网址]https://forums.raspberrypi.com/viewtopic.php?t=332154
如图:
解决办法
1.依次输入以下命令:
sudo apt-get update
sudo apt-get upgradesudo apt-get install gcc g++
sudo apt-get install git
sudo apt-get install cmake
sudo apt -y install libjpeg62-turbo-dev
2.编译,依次输入以下命令
cd mjpg-streamer-experimental
sudo make
sudo make install
3.运行mjpg-streamer
export LD_LIBRARY_PATH=.
./mjpg_streamer -i "input_libcamera.so" -o "output_http.so -l 0.0.0.0 -p 8081"
4.在浏览器里输入(如果成功,你应该能看到摄像头直播画面!)
http://树莓派IP:8081/?action=stream
例如:
http://192.168.0.108:8081/?action=stream
成功实现视频流
画面不好的原因:一是手抖,二是画面分辨率没调高。
这些都不是问题,至少能用!