图像传输是一项在Linux操作系统中比较常见的一个操作,在视频图传时,一般是采用MJPG-streamer来进行图像传输,本文就以树莓派为例子,来示范一个图像传输。
1.树莓派的摄像头激活
首先更新树莓派
sudo apt-get update
sudo apt-get upgrade
随后打开树莓派的配置界面,选择Interface Option
sudo raspi-config
在 Interface Option选择Camera,使能摄像头
在Enable摄像头之后,重启树莓派
sudo reboot
2.安装相关的依赖库
sudo apt-get update
sudo apt-get install subversion
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
3.在github上将开源的文件git到本地
GitHub上是有MJPG-streamer的开源文件的,有感兴趣的读者可以去看看
mjpg-stream的GitHub开源网址
将git到的文件进行编译
sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
make all
sudo make install
4.启动mjpg-stream
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
在这个时候,应该就可以启动mjpg-streamer的视频流传输了,在他们的官网上,输入你的ip地址,就可以看到实时传输的视频,视频传输的时延不高,大概在0.几秒左右
传输的视频
http://192.168.43.128:8080/?action=stream
mjpg-streamer的官网
http://192.168.43.128:8080/
5.将mjpg-streamer设置为开机启动
创建一个 “systemd”服务文件
sudo nano /etc/systemd/system/mjpg-streamer.service
在编辑器加入以下内容,确保路径与你的mjpg-stream实际路径匹配:
[Unit]
Description=MJPG Streamer
After=network.target
[Service]
ExecStart=/home/pi/Application/mjpg-streamer/mjpg-streamer-experimental/start.sh
WorkingDirectory=/home/pi/Application/mjpg-streamer/mjpg-streamer-experimental
Restart=always
User=pi
Group=pi
Environment=LD_LIBRARY_PATH=/home/pi/Application/mjpg-streamer/mjpg-streamer-experimental
[Install]
WantedBy=multi-user.target
解释:
ExecStart:指向启动 mjpg_streamer 的脚本。
WorkingDirectory:指定工作目录。
Restart=always:确保服务在崩溃后自动重启。
User 和 Group:以 pi 用户和组运行服务。
Environment:设置环境变量(如 LD_LIBRARY_PATH),确保正确加载库。
重新加载Systemd配置
sudo systemctl daemon-reload
启动和启用服务
sudo systemctl start mjpg-streamer
sudo systemctl enable mjpg-streamer
关闭开机自启动
sudo systemctl disable mjpg-streamer
关闭服务
sudo systemctl stop mjpg-streamer