RTSP、RTMP、HLS都可以做直播和点播,它们是三种不同的应用层协议
RTSP:
实时流协议(RTSP,Real-time Streaming Protocol)是一种用于控制声音或图像的流媒体议,并且允许控制多条流,但RTSP连接并没有被绑定传输层的连接(如RTP),服务器甚至可以选择TCP
或者UDP
来传输流内容。因此比较可以容忍网络延迟,是一种基于文本的多媒体播放控制协议。RTSP定义流格式,流数据可经由RTP传输;所以RTSP的实时效果非常好,适合视频聊天,视频监控等方向。
RTSP的请求主要包括,如「描述(describe),设置(setup),播放(play),暂停(pause),回放(teardown),选项(options)」
等,在RTSP对话期间,Setup
可以指定RTP/RTCP使用的端口,「play
,pause
,teardown
」可以开始和暂停RTP的发送。
RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放应用层协议.
RTMP传输层是TCP协议,不过这种可靠的保障也会造成一些问题,也就是说前面的数据包没有交付到目的地,后面的数据也无法进行传输。幸运的是,目前的网络带宽基本上可以满足RTMP协议传输普通质量视频的要求,而且一般延迟在延迟在1-3秒内。
HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案。HLS点播,基本上就是常见的分段HTTP点播,不同在于,它的分段非常小。
总结以下:
・HLS 延迟大,适合视频点播
・RTSP实时性最好,但是实现复杂,适合视频聊天和视频监控
・RTMP强在浏览器支持好,加载flash插件后就能直接播放,非常火,相反在浏览器里播放rtsp就很困难了
当然大点公司,可以做些私有协议来提供更好更符合场景的服务。