流媒体协议
流媒体
所谓流媒体是指采用流式传输的方式在
流媒体以流的方式在网络中传输音频、视频和多媒体文件的形式。流媒体文件格式是支持采用流式传输及播放的媒体格式。流式传输方式是将视频和音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由服务器向用户计算机连续、实时传送。在采用流式传输方式的系统中,用户不必像非流式播放那样等到整个文件。全部下载完毕后才能看到当中的内容,而是只需要经过几秒钟或几十秒的启动延时即可在用户计算机上利用相应的播放器对压缩的视频或音频等流式媒体文件进行播放,剩余的部分将继续进行下载,直至播放完毕。
常用的流媒体协议包括了
协议 | 优势 | 缺陷 | 延迟性 |
---|---|---|---|
HLS | 支持性广 | 延时巨高 | |
RTMP | 延时性好,灵活 | 量大的话,负载较高 | |
HTTP-FLV | 延时性好,游戏直播常用 | 只能在手机 |
视频直播协议
直播内容传输的介质是网络,而网络中传播视频或者音频时需要使用对应的协议,目前适合直播场景的常用协议有如下几种。
-
RTMP 协议(HTML 5 不支持,Flash 支持) :RTMP 是一种流媒体协议,是Adobe 的专利协议。基于TCP ,在国内的使用流行度很高。流行原因:开源软件和开源库的支持稳定完整,最常用的推流和拉流的解决方案基本上能够很稳定的运行。如:开源的librtmp 推流库,服务端有nginx-rtmp 插件,拉流有ijkPlayer 播放库。 -
HTTP-FLV 协议(HTML 5 不支持,Flash 支持) :即使用HTTP 协议流式的传输媒体内容。相对于RTMP ,HTTP 更简单和广为人知。内容延迟同样可以做到2~5 秒,打开速度更快,因为HTTP 本身没有复杂的状态交互。所以从延迟角度来看,HTTP-FLV 要优于RTMP 。 -
HLS 协议(HTML 支持,Flash 支持) :即Http Live Streaming ,是由苹果提出基于HTTP 的流媒体传输协议。HLS 有一个非常大的优点:HTML5 可以直接打开播放;这个意味着可以把一个直播链接通过微信等转发分享,不需要安装任何独立的APP ,有浏览器即可,所以流行度很高。社交直播APP ,HLS 可以说是刚需 。基于HLS 的直播流URL 是一个m3u8 的文件,里面包含了最近若干个小视频TS (一种视频封装格式,这里就不扩展介绍)文件。这种播放形式的延时比较高(与TS 文件的大小有关系) ,同城网络下能够做到5~7 秒的延时。 -
RTP/RTCP 协议:即Real-time Transport Protocol ,用于Internet 上针对多媒体数据流的一种传输层协议。RTCP 传输交互控制的信令,RTP 传输实际的媒体数据。RTP 在视频监控、视频会议、IP 电话上有广泛的应用,因为视频会议、IP 电话的一个重要的使用体验:内容实时性强。
对比上述
使用场景分析:实时音视频流的场景不需要可靠保障,因此也不需要有重传的机制,实时的看到图像声音,网络抖动时丢了一些内容,画面模糊和花屏,完全不重要。
总结:在直播协议的选择中,如果选择是