一直困惑于流媒体、视频流,总是听说NVR、拉流、推流、以及视频的播放是怎么一个原理,今天就来总结记录一下。
一、过去视频发展不成熟以及互联网发展不成熟的情景下,都是客户端直接从摄像头拉流进行播放,通过rtsp协议标准。


但是,这样的方式存在两个缺点:
1、摄像头,最多可以同时对6个请求进行发送数据,无法满足现在的高并发要求
2、摄像头发送视频录的数据,对于多个请求上传的数据量较大,对带宽要求较高,且是随请求数线性增长
所以为了解决上述两个缺点和弊端,NVR服务器应运而生。
nvr服务器,是介于摄像头和客户端之间的一台物理服务器,用以对接N路摄像头,一般超过128路,需要+1台NVR。
nvr上有很多通道,每个通道用来对应一个摄像头,进行播放等。
优点:
1、减轻了摄像头上传数据的带宽负载,摄像头只需要向NVR一个服务器上传数据即可。
2、NVR服务器直接接在交换机上,其带宽可达千兆级别,比摄像头的百兆带宽增强了10多倍。
3、NVR服务器的转发功能增强,其连着交换机,处于局域网内的一个节点,对客户端的视频请求的转发能力更强。


随着NVR服务器的发展,以及用户使用需求的不断增加,不再满足于摄像头的实时监控,一些新的需求涌现出来:
1、在局域网环境之外,公网环境下人们对视频的需求显著提升,例如使用手机无线网查看家中摄像头,以及用手机在线观看腾讯视频或者直播等,还有在线会议等。
2、多个人同时访问摄像头,多人同时参加视频会议等。
所以,随着各商家对流媒体技术的不断发展,现在的大部分厂商为NVR服务器配备了相应的流媒体服务器,来不断满足当下的需求。
有的通过NVR转发到流媒体服务器上,有些做的好的集NVR与流媒体服务器于一身,兼具两种功能。


EasyNVR可以将局域网/广域网上的海康/大华等网络摄像头由rtsp转换为rtmp、rtsp、hls、flv协议转换,并提供推流服务,可以将拉到的网络摄像头直接转发到流媒体服务器。
完美对接目前主流的阿里云/百度云/乐视云等等流媒体服务器。操作流程简洁,可直接作为网络摄像头无插件直播平台使用,亦可通过二次开发接入已有业务系统,应用场景十分广泛。
基本常识:
1、 从网络上接收视频时首先要解协议(RTSP/RTMP/HTTP),然后是解格式(MKV,RMVB),之后才是将视频(H264)和音频(AAC)格式数据分别解码为图像(RGB/YUV)和声音(PCM),再根据时间戳同步播放。
2、 RTMP主要用于互联网音视频传输,它使用的是TCP传输,因为互联网环境相对较差,采用RTMP保证了视频的传输质量,但是其传输延迟相对较高,传输效率相对较低。
3、视频画面的播放,本质是固定内存空间变量对象的不断赋值和再赋值的过程,所以其对内存空间的占用的固定的。
4、直播:一种推流的播放形式,点播:是一种按需观看,按需拉流的播放形式
5、硬解码:通过专用的硬件设备对视频进行解码,并直接在显示器上进行播放展示,常见的有HDMI解码器等。软解码:通过程序软件进行解码,使视频画面在软件内部进行播放展示,软解码会占据相应的cpu、gpu资源。