近日一直被直播延时问题所困惑,为此特整理一些关于常用流媒体的协议信息,希望能对自己解决直播延时有所帮助。

1.RTMP(Real Time Messaging Protocol)
Adobe推出的实时消息传输协议。该协议基于TCP,是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信,默认端口1935。一般传输的是flv,f4v格式流

2.RTSP/RTP/RTCP协议族(Real-time Streaming Protocol)
实时流传输协议,由RealNetworks开发。RTSP在体系结构上位于RTP(实时传输协议)和RTCP(RTP控制协议)之上,它使用TCP或UDP完成数据传输。RTSP协议族与HTTP相比,优势在于可以控制到视频帧,因此可以承载实时性很高的应用。默认端口554。一般传输的是ts,mp4格式的流

3.HLS(Http live streaming)
×××出的流媒体协议。采用m3u8作为索引文件,视频为MPEG2-TS格式的片段文件。如果为直播视频流,则采取更新m3u8文件,达到视频直播的目的。因为最终视频是片段文件,存在列表视频长度的延迟。因此只可用于对实时性要求没有那么高的准实时视频流。文件存储格式为ts + m3u8

4.HDS(HTTP dynamic streaming)
Adobe推出的流媒体协议,这种方式本质和HLS的策略是类似的,就是通过索引文件+视频片段的方式。但是显然采用的索引格式和视频片段格式都不一样的。文件存储格式为flv/f4v/mp4 + f4m(类似m3u8)

5.Smooth Streaming
微软也推出了Microsoft Smooth Streaming,也即是mss的视频播出方式,采用的视频格式是分段mp4格式。文件存储格式为ismv + isml(类似m3u8)

6.HTTP视频协议
最初的HTTP视频协议,没有任何特别之处,就是通用的HTTP文件渐进式下载。本质就是下载视频文件,而利用视频文件本身的特点,就是存在头部信息,和部分视频帧数据,就完全可以解码播放了。显然这种方式需要将视频文件的头部信息放在文件的前面。

7.有关HTML5
同时HTML制定厂商也不寂寞,推出HTML5这种方式,这种方式本质上,和前面的HTTP视频协议没有任何区别。但是播放器端,不再依赖于特定的插件如flash或者其他播放软件,而是可以支持浏览器的直接视频播放。采用的是html中嵌入video标签,同时直接指明视频的url。不过,不同的浏览器,对于音视频的格式支持不完全相同。

#幕后花絮:期间咨询过老东家的研发同时,老大哥说“我司是从直播源辣的专线,不存在延时这么一说啊”“我们监控直播买的探针服务啊” 哈哈……好吧好吧,请原谅我忘了哈哈哈……