RTMP,RTSP,HLS比较与分析
Http Live Streaming(HLS)是苹果公司实现的基于Http的流媒体传输协议,可实现流媒体的直播以及点播,HLS传输协议与其他传输协议的不同在于客户端获取到的并不是一个完整的数据流,而是将数据流存储为连续的、短时长的媒体文件,即MPEG-TS格式的文件,客户端这是通过不断的下载这些小文件,然后进行按顺序的播放从服务器那边获取到的文件,就实现了视频的直播效果 。而且数据是通过Http来传输的,就不用担心防火墙或者代理的问题,唯一的缺点就是延迟会比其他传输协议大一些。
Real Time Messaging Protocol(RTMP),主要采用TCP传输,如果互联网的环境较差,采用RTMP可以保证视频的传输质量,但是延迟还是相对来说有点点高。使用RTMP有个特点,就是使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。实时视频采用RTMP作为流媒体传输协议,FLV作为封装格式,直播服务器可以选择Nginx+rtmp实现,客户端采用librtmp进行推流,FFmpeg负责编解码,查看视频采用VLC即可。
Rapid Spanning Tree Protocol(RSTP) 由Real network 和 Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议,相对于其余两种协议来说实时性是比较高的,并且易于扩展,新的一些方法和参数都是比较容易加入RTSP, 独立于传输 RTSP传输通道,可使用不可靠数据包协议(UDP)或可靠数据包协议(RDP)。 RTSP还是一种双向实时数据传输协议,它允许客户端向服务器端发送请求,如回放、快进、倒退等操作。
实时视频传输协议的流程图
1.视频源的采集包括视频跟音频(视频格式:YUV或者RGB、音频格式:PCM),采集完之后需要对其进行压缩,音频压缩一般使用AAC、MP3、FLAC等,视频编码一般是压缩成H.264等格式的数据
2.视频和音频采集完之后就可以得到原始数据(是否进行二次处理,例如美颜、加滤镜等)
3.视频编码是为了去除冗余信息,原始视频数据存储空间较大,编码之后得到的视频数据存储空间较小(常见的编码器:H.264、H.265、VP9、VP8和FFMpeg等)
4.封装主要是把编码器生成的多媒体内容混合封装在一起,包括视频、音频及字幕等信息
5.推流主要涉及到一些视频的传输协议,主要的传输协议包括但不限于RTMP、HLS和RTSP