天天看点

流媒体协议简介写在开始

RTSP、RTMP、HTTP、HLS简介

  • 写在开始
    • RTSP
    • RTMP
    • HTTP
    • HLS

写在开始

本文旨在整理学习过程中的一些总结心得体会,如有不正确情况欢迎指正,欢迎大家一起学习~

RTSP

RTSP协议

(1)是流媒体协议。

(2)RTSP协议是共有协议,并有专门机构做维护。.

(3)RTSP协议一般传输的是 ts、mp4 格式的流。

(4)RTSP传输一般需要 2-3 个通道,命令和数据通道分离。

RTMP

RTMP协议

(1)是流媒体协议。

(2)RTMP协议是 Adobe 的私有协议,未完全公开。

(3)RTMP协议一般传输的是 flv,f4v 格式流。

(4)RTMP一般在 TCP 1个通道上传输命令和数据。

HTTP

(1)不是是流媒体协议。

(2)HTTP协议是共有协议,并有专门机构做维护。

(3)HTTP协议没有特定的传输流。

(4)HTTP传输一般需要 2-3 个通道,命令和数据通道分离。

HLS

HTTP Live Streaming(缩写是HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。是苹果公司QuickTime X和iPhone软件系统的一部分。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的extended M3U (m3u8)playlist文件,用于寻找可用的媒体流。

HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。

(1)视频的封装格式是TS。

(2)视频的编码格式为H264,音频编码格式为MP3、AAC或者AC-3。

(3)除了TS视频文件本身,还定义了用来控制播放的m3u8文件(文本文件)。

而苹果提出HLS这个协议目的就是为了解决RTMP存在的一些问题。比如RTMP协议不使用标准的HTTP接口传输数据,所以在一些特殊的网络环境下可能被防火墙屏蔽掉。但是HLS由于使用的HTTP协议传输数据,不会遇到被防火墙屏蔽的情况。

另外于负载,RTMP是一种有状态协议,很难对视频服务器进行平滑扩展,因为需要为每一个播放视频流的客户端维护状态。而HLS基于无状态协议(HTTP),客户端只是按照顺序使用下载存储在服务器的普通TS文件,做负责均衡如同普通的HTTP文件服务器的负载均衡一样简单。

另外HLS协议本身实现了码率自适应,不同带宽的设备可以自动切换到最适合自己码率的视频播放。

注意:采用HLS协议直播的视频延迟时间无法下到10秒以下,而RTMP协议的延迟最低可以到3、4秒左右。所以说对直播延迟比较敏感的服务请慎用HLS

具体HLS详细解析流程可参考 :https://www.jianshu.com/p/2ce402a485ca

继续阅读