一、简介
1.MJPEG-streamer方案的实现
优点:
程序简单,所有源码一目了然,便于学习
对ARM板的性能要求不高,主频200MHZ的ARM芯片也能实现
缺点:
实现局域网内的视频监控
要实现互联网视频监控,需要另外实现内网穿透
Mjpeg-streamer没有实现声音传输
Mjpeg-stream项目已经不再维护,仅仅建议用于学习
2.JPEG,MJPG格式简介
JPEG:简称jpg
一个像素的颜色可以用RGB三原色来表示,其实还可以用YUV格式表示
使用RGB,YUV格式编码照片,文件都很大,比如BMP文件就是用RGB编码
把一个BMP文件转换为JPEG文件,可以发现图片质量没发生变化,但是文件变小了很多
JPEG是根据人体视觉的特点采用了YCbCr格式,大大压缩了照片的大小
MJPEG
MJPEG是静态图片的编码格式,MJPG是动态的视频编码格式
可以简单理解:MJPG就是把多个JPEG图片连续显示出来
MJPG的优点
很多摄像头本身就支持JPEG,MJPG,所以处理器不要太多处理
MJPEG的缺点
MJPEG只是多个MJPEG图片的组合,它补考虑前后两帧的数据变化,总是传输一帧帧图像:传输带宽要求高
H264等视频格式,会考虑前后两帧的数据变化,只传输变化的数据:传输带宽要求低
二、安装mjpeg-streamer
2.1 更新源
sudo apt-get update #更新软件列表
sudo apt-get upgrade #更新软件
以上两个更新如果在刚启动树莓派的时候更新过了的话可以忽略
2.2 安装依赖和相关工具
sudo apt-get install subversion
sudo apt-get install libjpeg8-dev #JPEG支持库
sudo apt-get install imagemagick
sudo apt-get install libv4l-dev #4l是小写"L"
sudo apt-get install cmake #下载编译工具
2.3 克隆源码并编译安装
2.3.1 安装git
sudo apt-get install git
2.3.2 克隆源码
git clone https://github.com/jacksonliam/mjpg-streamer.git
2.3.3 进入mjpg-streamer/mjpg-streamer-experimental路径编译:
cd mjpg-streamer/mjpg-streamer-experimental
make all
2.3.4 安装
sudo make install
3. 安装完成之后,修改启动脚本
在mjpg-streamer/mjpg-streamer-experimental
路径下的启动脚本:
vi start.sh
下方句段修改为上方句段或加#注释下方句段添加上方句段:
./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"
#./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
如下图所示:
使用树莓派摄像头用input_raspicam.so
,input_uvc.so
是USB
插口摄像头使用
4. 使能摄像头
使能前可以先:
4.1 查看是否存在vchiq
设备节点:
ls /dev
如下图所示:
4.2 查看当前摄像头是否可用
vcgencmd get_camera
如果detected
=0,说明摄像头模块没接好,重新排查下硬件。detected
=1则说明CSI摄像头接入正常。supported
=1说明摄像头已经使能,摄像头已经可以使用。supported
=0则说明CSI摄像头没有使能,需要使能下摄像头模块
如下图所示:
- 以上操作都完成了之后,我们就要对摄像头相关的配置设置一下
5.1 sudo raspi-config
5.2
5.3
5.4
5.5 以上操作都完成后,重启树莓派
sudo reboot
6. 开启摄像头
6.1 通过脚本启动,在mjpg-streamer/mjpg-streamer-experimental
路径下:
./start.sh
下图所示就是已经开启了摄像头了
7. 浏览器查看视频流
端口号:
在浏览器网址栏输入:
http://ip:port //我的树莓派此时的 ip地址为 192.168.191.5
http://192.168.191.5:8080
8.更多功能:
拍照:
raspistill -o image.jpg
此处图片名:image
,保存为.jpg
格式
再把图片传到windows
系统下打开,即可看到拍到的图片
更多参数使用raspistill --help
指令查询:
raspistill --help
学习笔记,仅供参考