实战小项目之视频监控(1-1)
目前常见的视频监控和视频直播都是使用了 RTMP 和 RTSP 流媒体传输协议等。
RTSP(Real-Time Stream Protocol)由 Real Networks 和 Netscape 共同提出的,基于文本的多媒体播放
控制协议。RTSP 定义流格式,流数据经由 RTP 传输;RTSP 实时效果非常好,适合视频聊天,视频监控等
方向。
RTMP(Real Time Message Protocol)由 Adobe 公司提出,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器
加载 flash 插件就可以直接播放。
RTSP 和 RTMP 的区别:
RTSP 虽然实时性最好,但是实现复杂,适合视频聊天和视频监控;RTMP 强在浏览器支持好,加载 flash插件后就能直接播放,所以非常火,相反在浏览器里播放 rtsp 就很困难了。
本章我们将向大家介绍如何通过 FFmpeg+Nginx、使用 RTMP 推流实现视频监控或直播。
本章将会讨论如下主题内容。
⚫ 视频监控简介
⚫ Nginx 简介
⚫ 如何移植 Nginx
⚫ FFmpeg+Nginx 实现 RTMP 推流
⚫ 拉流
视频监控简介
本章我们将使用 RTMP 流媒体服务来实现视频监控,RTMP 流媒体服务框架图如下所示:
图 34.1.1 流媒体服务
推流端负责将视频数据通过 RTMP 流媒体协议传输给 RTMP 流媒体服务器,拉流端可以从流媒体服务器中通过 RTMP 协议获取到视频数据;而流媒体服务器负责接收推流端的视频数据、当有客户端(拉流端)想要获取视频数据时再将其发给相应的客户端。
所以从上图可知,要想实现 RTMP 视频监控,必须要有这三部分:推流客户端、拉流客户端以及流媒体服务器。那这些需要我们自己去实现吗?当然不需要,譬如推流我们可以使用 FFmpeg 来做,拉流则可以
实现 VLC 播放器来做,而流媒体客户端则使用 Nginx 来搭建即可!