H618-实现基于RTMP推流的视频监控
一、概括
目前常见的视频监控和视频直播都是使用了 RTMP、RTSP。RTSP(Real-Time Streaming Protocol)实时流传输协议,用于控制媒体服务器上的实时流传输,支持音频和视频的传输。RTSP 常用于视频监控系统中,在客户端和服务器之间建立起媒体传输的连接和控制通道。RTMP(Real-Time Messaging Protocol)实时消息传输协议,最初由Adobe开发,用于音 频、视频和数据的传输。RTMP常用于视频直播系统中,通过将实时视频流传输到媒体服务器,实现低延迟的实时视频传输。
二、实现视频监控
2.1、视频监控简介
从图中我们可以看出,要想要实现RTMP视频监控,必须要有这三部分:推流客户端、流媒体服务器以及拉流客户端。这些不需要我们自己实现,譬如推流我们可以使用 FFmpeg 来做,流媒体服务器则使用Nginx来搭建,而拉流则可以用 VLC播放器来实现。
2.2、Nginx 流媒体服务器
1、安装流媒体服务器
sudo apt install nginx
nginx流媒体服务器安装成功后,服务会自动开启;
ps -aux
PC端打开我们的浏览器,输入H618开发版的IP地址;
如果显示上面的界面,表示Nginx流媒体服务器已经安装成功了。
2、修改nginx流媒体服务器的配置文件
vi /etc/nginx/nginx.conf
配置成功后,重启开发板。
2.3、FFmpeg 推流
1、安装FFmpeg
sudo apt install ffmpeg
2、插上摄像头,查看/dev下的设备节点
3、使用 FFMpeg 采集摄像头视频数据将其发送给nginx流媒体服务器,执行命令
ffmpeg -f v4l2 -video_size 640x480 -framerate 30 -i /dev/video0 -q 10 -f flv rtmp://127.0.0.1/live/mytest
刚开始提示Connection to tcp://127.0.0.1:1935 failed: Connection refused错误,我们先检查端口1935是否被占用。
sudo netstat -tulnp | grep :1935
没有任何输出,说明RTMP服务器没有正常启动或配置有误。
安装带RTMP模块的Nginx;
sudo apt install nginx libnginx-mod-rtmp
再执行sudo netstat -tulnp | grep :1935;
可以正常输出了,开发板再执行ffmpeg -f v4l2 -video_size 640x480 -framerate 30 -i /dev/video0 -q 10 -f flv rtmp://127.0.0.1/live/mytest;
如上所示,FFmpeg可以正常推流了。
PC端的VLC播放器再执行拉流。
媒体-->打开网络串流;
能正常播放视频。