文章目录
给大家介绍一种可以运行在低性能的板子上做视频传输的工具。
一、简介
1.MJPG-streamer方案的实现
优点:
程序简单,所有源码一目了然,便于学习
对ARM板的性能要求不高,主频200MHZ的ARM芯片也能实现
缺点:
实现局域网内的视频监控
要实现互联网视频监控,需要另外实现内网穿透
Mjpg-streamer没有实现声音传输
Mjpg-stream项目已经不再维护,仅仅建议用于学习
2.JPEG,MJPG格式简介
JPEG:简称jpg
一个像素的颜色可以用RGB三原色来表示,其实还可以用YUV格式表示
使用RGB,YUV格式编码照片,文件都很大,比如BMP文件就是用RGB编码
把一个BMP文件转换为JPEG文件,可以发现图片质量没发生变化,但是文件变小了很多
JPEG是根据人体视觉的特点采用了YCbCr格式,大大压缩了照片的大小
MJPG
JPEG是静态图片的编码格式,MJPG是动态的视频编码格式
可以简单理解:MJPG就是把多个JPEG图片连续显示出来
MJPG的优点
很多摄像头本身就支持JPEG,MJPG,所以处理器不要太多处理
MJPG的缺点
MJPG只是多个JPEG图片的组合,它补考虑前后两帧的数据变化,总是传输一帧帧图像:传输带宽要求高
H264等视频格式,会考虑前后两帧的数据变化,只传输变化的数据:传输带宽要求低
二、测试USB摄像头
1.开启摄像头服务
sudo raspi_config,Enable Camera
2.显示USB设备
Lsusb 显示当前的usb设备
可以拔掉摄像头再试一下
消息的那个就是摄像头设备
3.查看设备文件
ls /dev/video* 查看设备文件
三、安装
1.更新源
sudo apt-get update
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.下载安装文件
sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
查看
4.编译
sudo make all
5.编译安装
sudo make install
四、启动摄像头
1.开启摄像头
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
注意:报错不影响
2.查看视频
打开浏览器,输入树莓派IP地址或用本地ip地址也是一样
IP地址:
本地地址:
五、设置为开机自启
1.创建一个服务
因为这个安装之后本身带有一个服务,直接复制即可。
sudo cp mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer@.service /etc/systemd/system
2.修改服务
因为这个自带的服务路径不是合适的,需要我们修改
sudo nano /etc/systemd/system/mjpg_streamer@.service
将这两个路径换一下。
3.设置服务开机自启
sudo systemctl enable mjpg_streamer@.service
如果这个方法不行,请用下面的脚本自启。
添加脚本自启
1.创建一个脚本文件
sudo nano mjpg-streamer/mjpgservice.sh
2.添加内容
#!/bin/sh
cd /home/pi/mjpg-streamer/mjpg-streamer-experimental
./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
3.给脚本文件添加权限
sudo chmod 777 mjpg-streamer/mjpgservice.sh
4.测试一下脚本
sh mjpg-streamer/mjpgservice.sh
脚本执行成功
5.给脚本添加为开机自启
sudo nano /etc/systemd/system/mjpg_streamer1.service
添加内容
[Unit]
Description = test deamon
After = rc-local.service
[Service]
Type = simple
User = root
Group = root
ExecStart = /home/pi/mjpg-streamer/mjpgservice.sh
Restart = always
[Install]
WantedBy = multi-user.target
设置服务为开机自启
sudo systemctl enable mjpg_streamer1.service
重启。
设置为自动启动成功