流媒体播放协议

流媒体通信协议

常用的流媒体协议主要有HTTP渐进下载(如HLS)和基于RTSP/RTP的实时流媒体协议,这两种基本是完全不同的东西,还有RTMP;
相关协议有:HTTP,HLS,RTSP,RTMP;

HTTP、RTSP、RTMP、HLS区别

参考:http://www.hangge.com/blog/cache/detail_1325.html
http://blog.csdn.net/tttyd/article/details/12032357

  • 共同点:
  1. 都是在应用层;
  2. 理论上都可以做直播和点播,但一般直播用RTSP/RTMP,点播用HTTP;视频会议用RTMP;
  • 区别:
  1. HTTP将搜有数据作为文件做处理,不是流媒体协议;RTMP和RTSP是流媒体协议;HTTP协议简单,流媒体协议复杂;
  2. RTMP是Adobe的私有协议,未完全公司,RTSP/HTTP协议是共有协议,有专门机构做维护;
  3. RTMP是flv/f4v格式流,RTSP协议一般传输的是ts/mp4格式的流,HTTP没有特定的流;
  4. RTSP传输一般需要2-3个通道,命令和数据通道分离,HTTP/RTMP一般在一个TCP通道上传输命令和数据;
  5. HLS主要延时比较大,RTMP/RTSP优势在于延时低;

PS:可使用 FFMPEG 将RTSP协议转换为RTMP 数据流;

HLS: HTTP Live Streaming

Apple的动态码率自适应技术,主要用于PC和Apple终端的音视频服务,包括一个m3u(8)索引文件,TS媒体分片文件和key加密文件;
HLS协议的小切片方式会生成大量的文件,存储和处理这些文件会造成大量资源浪费;如果要实现数天的时移,所以努力将会是个巨额数字,明显影响请求速度;新型系统采用了内存缓存数据实时切片技术,将TS切片文件存到内存当中,直接从服务器内存读取,极大提高了对终端的数据请求的反应速度,优化了视频观看体验;
HLS客户端获取到的并不是一个完整的数据流,而是连续的,短时长的媒体文件,客户端不断的现在并播放这些小文件;
缺点:时延比较大,不断的http请求,协议建立过程也耗时;
优点:采用HTTP传输,不用考虑防火墙和代理的问题;使用分片文件来播放,客户端可以平滑的切换码率,以适应不同宽带条件下的播放;iOS平台可以获得天然支持,采用AVPlayer就能直接播放;
PS:移动端HLS用的比较广泛一些;

直播视频流程:


流媒体播放协议_第1张图片
Paste_Image.png
流媒体播放协议_第2张图片
Paste_Image.png

RTSP (Real Time Streaming Protocol) 实时流协议 RFC2326

参考:
http://blog.csdn.net/leixiaohua1020/article/details/11955341
由哥伦比亚大学、网景和RealNetwork公司提交的IETF RFC标准,位于RTP和RTCP之上,使用TCP或UDP完成数据传输;它的语法和运作跟HTTP1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟;允许多个串流需求控制,可以降低服务器的网络用量,进而支持多方视讯会议;

  • 开源实现

    流媒体播放协议_第3张图片
    Paste_Image.png

    live555 C/S C++
    darwin S C++
    VLC C C

  • 与HTTP相比
    HTTP请求由客户机发出,服务器响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP是可以双向的;


    流媒体播放协议_第4张图片
    Paste_Image.png
  • RTSP简单交互过程

  1. 查询服务器端可用方法 OPTION request
  2. 得到媒体描述信息 DESCRIBE request
  3. 通过可接受的传输选项,建立会话 SETUP request
  4. 请求开始传送数据 PLAY request
  5. 数据传送播放中 RTP协议传送数据
  6. 会话关闭,退出
RTP协议

每一个RTP数据报都由头部和负载两个部分组成,其中头部12个字节的含义是固定的,而负载则可以是音频或视频数据;

PS:RTSP在安防领域有广泛应用;

RTMP (Real Time Message Protocol) 实时消息传输协议

主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信;是Adobe公司自己的规范,为flash播放器和服务器之间音频、视频和数据传输开发的私有协议;
业界大部分直播业务都会选择用RTMP作为流媒体协议,通常会将数据流封装成FLV通过HTTP提供出去;
优点:延时小,通常为1-3s;基于TCP长连接,不需要多次建连;
缺点:iOS平台不提供原生支持RTMP或HTTP-FLV的播放器,需要自主开发;
�- 累积延迟
RTMP是基于TCP不会丢包,但是当网络状态差时,服务器会将包缓存起来,导致累积的延迟,待网络状况好了,就一起发给客户端;这个的对策就是,当客户端的缓冲区很大时,就断开重连;
PS:对实时性有一些要求的应用,以PC为主?互联网直播领域(RTMP+CDN);

媒体封装格式

TS/FLV/MP4

  • FLV 需要flash支持
    PC在线播放最常见,因为apple不支持flash,apple无法使用,很多智能机也无法使用;也支持直播;
  • TS HLS的媒体切片格式
    Apple产品,支持动态码率适配,支持直播;
  • mp4 PC/Apple/Android都支持
    文件头太大,结构复杂,长视频的大文件头影响加载速度的视频体验,所以短视频更常见;

你可能感兴趣的:(流媒体播放协议)