常用的流媒体协议主要有HTTP渐进下载和基于RTSP/RTP的实时流媒体协议两类。在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用RTP/UDP来传输实时多媒体数据。

1 实时传输协议RTP与RTCP

RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP由两个紧密链接部分组成:RTP----传送具有实时属性的数据;RTP控制协议(RTCP)----监控服务质量并传送正在进行的会话参与者的相关信息。

RTP协议是建立在UDP协议上的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议)、视频会议和视频电话系统(配合H.263或SIP)。

RTP本身并没有提供按时发送机制或其他服务质量(QoS)保证,它依赖于底层服务去实现这一过程。RTP并不保证传送或防止无序传送,也不确定底层网络的可靠性。RTP实行有序传送,RTP中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。

实时传输控制协议(Real-time Transport Control Protocol,RTCP)是实时传输协议(RTP)的一个姐妹协议。RTCP为RTP媒体流提供信道外控制。RTCP定期在流多媒体会话参加者之间传输控制数据。RTCP的主要功能是为RTP所提供的服务质量提供反馈。RTCP收集相关媒体连接的统计信息,例如:传输字节数,传输分组数,丢失分组数,时延抖动,单向和双向网络延迟等等。网络应用程序可以利用RTCP所提供的信息试图提高服务质量,比如限制信息流量或改用压缩比较小的编解码器。RTCP本身不提供数据加密或身份认证,其伴生协议SRTCP(安全实时传输控制协议)则可用于此类用途。

2 实时流协议RTSP

RTSP协议定义了一对多应用程序如何有效通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。HTTP与RTSP相比,HTTP传送HTML,而RTP传送的是多媒体数据。HTTP请求由客户机发出,服务器做出响应;RTSP可以是双向的,即客户机和服务器都可以发出请求。

RTSP与RTP最大的区别在于:RTSP是一种双向实时数据传输协议,它允许客户端向服务器端发送请求,如回放、快进、倒退等操作。当然RTSP可基于RTP来传送数据,还可以选择TCP、UDP、组播UDP等通道来发送数据,具有很好的扩展性。它是一种类似于HTTP协议的网络应用协议。

3 资源预定协议RSVP

RSVP即资源预订协议,使用RSVP预留一部分网络资源(即带宽),能在一定程度上为流媒体的传输提供QoS。RSVP、RTSP与RTP协议工作在不同的层次,如下图所示。

【后台扣1,免费分享】整理了一些学习资料、教学视频和学习路线图,资料包括《Andoird音视频开发必备手册+音视频学习视频+学习文档资料包+大厂面试真题+2022最新学习路线图》等

4 实时消息传输协议RTMP

RTMP(Real Time Messaging Protocol)是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。它有三种变种:

(1)工作在TCP之上的明文协议,使用端口1935;

(2)RTMPT封装在HTTP请求之中,可穿越防火墙;

(3)RTMPS类似RTMPT,但使用的是HTTPS连接。

RTMP视频播放的特点:

(1)RTMP协议是采用实时的流式传输,所以不会缓存文件到客户端,这种特性说明用户想下载RTMP协议下的视频是比较难的;

(2)视频流可以随便拖动,既可以从任意时间点向服务器发送请求进行播放,并不需要视频有关键帧。相比而言,HTTP协议下视频需要有关键帧才可以随意拖动。

(3)RTMP协议支持点播/回放(通俗点将就是支持把flv,f4v,mp4文件放在RTMP服务器,客户端可以直接播放),直播(边录制视频边播放)。

RTMP环境的架设:

因为该协议是adobe公司开发的,所以最初服务器端架设的环境是FMS(Flash Media Server),该软件为收费软件,价格昂贵。后来,开源软件red5的推出,使rtmp协议的架设成本大大缩小,但是在性能方面不如fms的稳定。此外,wowza虽然是收费的,但价格比较适中。

5 微软媒体服务器协议MMS

MMS(Microsoft Media Server Protocol)是用来访问并流式接收Window Media服务器中.asf文件的一种协议。MMS协议用于访问Windows Media发布点上的单播内容。MMS是连接Windows Media单播服务的默认方法。若观众在Windows Media Player中键入一个URL以连接内容,而不是通过超级链接访问内容,则他们必须是MMS协议引用该流。MMS的预设端口是1755.

6 HLS

HTTP Live Streaming(HLS)是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用于iOS系统。HLS点播是分段HTTP点播,不同在于它的分段非常小。要实现HLS点播,重点在于对媒体文件分段,目前有不少开源工具可以使用。

相对于常见的流媒体直播协议,HLS直播最大的不同在于,直播客户端获取到的并不是一个完整的数据流,HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。

流媒体传输协议(rtp/rtcp/rtsp/rtmp/mms/hls)相关推荐

  1. WebRTC学习进阶之路 --- 五、WebRTC网络知识详解(三)(最全流媒体协议(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL)/SDP)

    WebRTC学习进阶之路系列总目录:https://blog.csdn.net/xiaomucgwlmx/article/details/103204274 RTP:实时传输协议(Real-time ...

  2. 流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

    RTP     参考文档 RFC3550/RFC3551     Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细说明 ...

  3. 最全流媒体协议详细总结介绍(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL) /SDP)

    RTP:实时传输协议(Real-time Transport Protocol)          RTP是一种基于包的传输协议,它用来传输实时数据.在网络上传输数据包的延迟和误差是不可避免的,对此R ...

  4. 智能终端会议系统(20)---网络视频传输协议--RTP/RTCP/RTSP/SIP/SDP 之间关系

    网络视频传输协议--RTP/RTCP/RTSP/SIP/SDP 之间关系 RTP/RTCP/RTSP/SIP/SDP 关系 1. RTP Real-time Transport Protocol,是用 ...

  5. php视频流传输,视频流传输协议RTP/RTCP/RTSP/HTTP的区别

    用一句简单的话总结:RTSP发起/终结流媒体.RTP传输流媒体数据.RTCP对RTP进行控制,同步.之所以以前对这几个有点分不清,是因为CTC标准里没有对RTCP进行要求,因此在标准RTSP的代码中没 ...

  6. 视频流传输协议RTP/RTCP/RTSP/HTTP的区别

    在转载之前:我研究主要是基于HTTP的视频流,正在研读的论文名:"Modeling and Analyzing the Influence of Chunk Size Variation o ...

  7. 网络流媒体协议的联系与区别(RTP RTCP RTSP RTMP HLS)

    简结">三句话简结 RTP RTCP RTSP RTMP HLS区别与联系 RTP传输流媒体数据.RTCP对RTP进行控制,同步.RTSP发起/终止流媒体 RTP和RTCP互为姐妹关系 ...

  8. 直播所使用的网络协议(RTP\RTCP\RTSP\RTMP\HLS\SRT)

    目录 直播所用协议的需求 如何选择TCP/UDP? RTP RTP协议是什么? 为什么使用RTP协议? RTCP RTCP协议是什么? 为什么使用RTCP协议? RTSP RTSP协议是什么? 为什么 ...

  9. 流媒体传输协议系列之--RTSP协议详解

    1. RTSP连接的建立过程      RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话.      首先创建R ...

  10. IP实时传输协议RTP/RTCP详解

    1.简介 目前,在IP网络中实现实时语音.视频通信和应用已经成为网络应用的一个主流技术和发展方向,本文详细介绍IP协议族中用于实时语音.视频数据传输的标准协议RTP( Real-time Transp ...

最新文章

  1. Error writing file '/tmp/...' (Errcode: 28)
  2. static 函数和普通函数
  3. CSDN-markdown编辑器使用方法
  4. 爬虫实战:要不是热爱学习,谁会爬小姐姐。分析Ajax来爬取今日头条街拍美图(python)
  5. extjs 方法执行顺序_百战程序员:方法论
  6. CMMI与Agile敏捷开发比较之一:两者的本质区别
  7. 【LeetCode】【字符串】题号:*58. 最后一个单词的长度
  8. Dev C++项目开发是添加背景音乐 CC++
  9. python开发一个PC屏幕监控软件(2000块的道德底线)
  10. pycharm界面代码区域无法编辑的解决方法
  11. H5 简单实现微信公众号摇一摇功能
  12. kafka:sync、async以及oneway 几种发送消息模式
  13. 怎么用python表白_如何正确使用Python进行表白
  14. 电子警察位置【收藏】
  15. 7-1 sdust-Java-字符串集合求并集 (20 分)
  16. 排序相关算法在计算机程序设计竞赛中的研究
  17. 用代码恶搞基友的小玩意儿
  18. php使用常量和变量输出圆的面积,PHP常量和变量分别是什么?有什么区别?
  19. 虚拟同步发电机_湖南大学涂春鸣等:具备同步电机特性的级联型光伏发电系统...
  20. 系统信息相关命令(时间和日期 date cal,磁盘信息,进程信息)

热门文章

  1. 银河麒麟安装node
  2. 集成开源技术的性能监控平台
  3. php文件显示文字乱码怎么解决,php遍历到的文件是中文文件名 显示为乱码 该如何解决...
  4. PAT甲级 1031
  5. 转(js幻灯片,jQuery幻灯,js焦点轮换图,js幻灯轮播代码大全(2) - 酷站代码)...
  6. Go语言:HTTP客户端请求设置用户浏览器版本User-Agent
  7. docker 暴露端口 查看_Docker容器如何暴露端口
  8. 华三交换机查看光模块参数的命令
  9. SEO关键词策略——新站如何抗衡老站…
  10. pc电脑微信多开的方法,无需安装任何工具2022