树莓派 3B + Bookworm:mjpg-streamer 正确安装全流程(原创)

      大家好,我是小智!
      在树莓派 OS Bookworm 版本上安装 mjpg-streamer 并非像旧版本一样简单,许多网上的教程已经过时,甚至存在错误。我在尝试过程中遇到了多个问题,例如依赖库缺失、编译失败等,但最终成功解决并搭建了 远程视频流监控系统。本教程基于 树莓派 3B,整理了一套 完整、可复现 的 mjpg-streamer 安装方法,避免常见坑点,确保顺利运行。适合想要在 Bookworm 上使用 mjpg-streamer 的用户参考。

为什么要写这篇文章?

1.缺少适用于树莓派3B且系统是Bookworm的正确mjpg-streamer安装教程
2.小智搜到的很多教程中有错误/过时信息,经过验证,方案不可行
类似:

sudo apt-get update
sudo apt-get upgrade

sudo 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 git

git 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的选项,如图:
    image

  • 在第二点成功执行完成后,小智没见过input_raspicam.so,即使查看了不可见文件也没有
    image

  • 小智使用的是官方摄像头,不支持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: 310b29f4a94c46652b20c4b7b6e5cf24e532af39
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: -1
 i: Format............: JPEG
 i: TV-Norm...........: DEFAULT
 i: 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........: 8080
 o: HTTP Listen Address..: (null)
 o: username:password....: disabled
 o: commands.............: enabled
libv4l2: error turning on stream: Invalid argument
Unable to start capture: Invalid argument

灵感来源

进入网站较慢,稍作等待[网址]https://forums.raspberrypi.com/viewtopic.php?t=332154
如图:
image

解决办法

1.依次输入以下命令:

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install gcc g++
sudo apt-get install git
sudo apt-get install cmake
sudo apt install libcamera-apps
sudo apt install libcamera-dev
sudo apt -y install libjpeg62-turbo-dev

git clone https://github.com/ArduCAM/mjpg-streamer.git

2.编译,依次输入以下命令

cd mjpg-streamer/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"

image
4.在浏览器里输入(如果成功,你应该能看到摄像头直播画面!)

http://树莓派IP:8081/?action=stream

例如:

http://192.168.0.108:8081/?action=stream

便捷启动方式(可选)

1.修改start.sh

sudo vim start.sh

2.手动注释黄色线上的语句(文件自带的),手动添加红色线上的语句,保存并退出
image

3.启动命令如下:

sudo  ./start.sh

成功实现视频流

画面不好的原因:一是手抖,二是画面分辨率没调高。
这些都不是问题,至少能用!
image

posted @ 2025-03-18 01:18  努力赚钱的小智  阅读(430)  评论(6)    收藏  举报