zoukankan      html  css  js  c++  java
  • 流媒体技术 rtp/rtcp/rtsp资料精华!

    

    流媒体技术 rtp/rtcp/rtsp资料精华!

    流媒体技术
      流媒体是指在网络中使用流式(Sreaming)传输技术进行传输的连续时基媒体。如音频数据流或视频数据流,而不是一种新的媒体。流媒体技术(或称为流式媒体技术)就是把连续的影像和声音信息经过压缩处理后放到网络server上,让浏览者一边下载一边观看、收听,而不须要等到整个多媒体文件下载完毕就能够即时观看的技术。流媒体技术并非单一的技术。它是融合流媒体数据的採集、压缩、存储、传输以及网络通信等多项技术之后所产生的技术。
      流媒体给互联网带来的变化是巨大的,对于用户来讲,观看流媒体文件与观看传统的音视频文件在操作上差点儿没有不论什么区别。

    惟一有区别的就是在影音品质上。因为流媒体为了解决带宽问题以及缩短下载时间。而採用了较高的压缩比,因此用户感受不到非常高的图像和声音质量。

     

      一.流式传输 

      流式传输定义非常广泛,如今主要指通过网络传送媒体(如视频、音频)的技术总称。

    其特定含义为通过Internet 将影视节目传送到PC机。

    实现流式传输有两种方法:实时流式传输(Realtime streaming)和顺序流式传输(progressive streaming)。 

      1.顺序流式传输


      顺序流式传输是顺序下载,在下载文件的同一时候用户可观看再线媒体,在给定时刻,用户仅仅能观看已下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不象实时流式传输在传输期间依据用户连接的速度做调整。因为标准的HTTPserver可发送这样的形式的文件,也不须要其它特殊协议,它经常被称作HTTP流式传输。顺序流式传输比較适合高质量的短片段,如片头、片尾和广告,因为该文件在播放前观看的部分是无损下载的,这样的方法保证电影播放的终于质量。这意味着用户在观看前,必须经历延迟。对较慢的连接尤其如此。

     
      对通过调制解调器公布短片段,顺序流式传输显得非常有用。它同意用比调制解调器更高的数据速率创建视频片段。虽然有延迟,毕竟可让你公布较高质量的视频片段。

     
      顺序流式文件是放在标准HTTP 或FTPserver上。易于管理,基本上与防火墙无关。顺序流式传输不适合长片段和有随机訪问要求的视频,如:讲座、演说与演示。

    它也不支持现场广播,严格说来。它是一种点播技术。


      2.实时流式传输

      二.流媒体技术原理
      多媒体数据必须进行预处理才干适合流式传输,这是因为眼下的网络带宽对多媒体巨大的数据流两来说还显得远远不够。预处理主要包含双方面:一是减少质量。二是採用先进高效的压缩算法。 

      流式传输的过程通常是这样的:

      (1)用户选择某一流媒体服务后。Web浏览器与Webserver之间使用HTTP/TCP交换控制信息。以便把须要传输的音/视频流实时数据从原始信息中检索出来。

      (2)客户机上的Web浏览器启动client程序(即一些播放程序),使用HTTP从Webserver检索相关參数对client程序进行初始化。这些參数可能包含文件夹信息、音/视频数据的编码类型或与A/V检索相关的server地址。



       (3)client程序及流媒体server执行实时流控制协议(RTSP),以交换音/视频数据流传输所需的控制信息。RTSP起到一个遥控器的作用,用于client对流媒体server的远程控制,控制媒体数据流的播放、快进、快倒、暂停等命令。

      (4)流媒体server使用RTP/UDP协议将音/视频传输数据给client程序,一旦音/视频数据抵达client,音/视频客户程序就可以播放输出。



       须要说明的是,在流式传输中,使用RTP/UDP和RTSP/TCP两种不同的通信协议与流媒体server建立联系。是为了能够把server的输出重定向到一个不同于执行client程序所在客户机的目的地址。实现流式传输一般都须要专用server和播放器。



      三.支持流媒传输的网络协议
      1.实时传输协议RTP与RTCP


      RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,但RTP也能够在TCP或ATM等其它协议之上工作。当应用程序開始一个RTP会话时将使用两个端口:一个给RTP。一个给RTCP。

    RTP本身并不能为按顺序传送数据包提供可靠的传送机制。也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。


      实时传输控制协议RTCP。RTCP(Real-timeTransportControlProtocol)和RTP一起提供流量控制和拥塞控制服务。

    在RTP会话期间,各參与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,server能够利用这些信息动态地改变传输速率。甚至改变有效载荷类型。

    RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。 
      RTCP执行下列四大功能: 
      主要是提供数据公布的质量反馈。是作为RTP传输协议的一部分,与其它传输协议的流和堵塞控制有关。反馈对自适应编码控制直接起作用。但IP组播经验表明。从发送者收到反馈对诊断发送错误是致关重要的。

    给全部參加者发送接收反馈报告同意问题观察者预计那些问题是局部的,还是全局的。

    诸如IP组播等公布机制使网络服务提供商类团体可能接收反馈信息,充当第三方监控者来诊断网络问题。

    反馈功能由RTCP发送者和接收者报告执行。 
      RTCP带有称作规范名字(CNAME)的RTP源持久传输层标识。如发现冲突。或程序又一次启动。既然SSRC标识可改变,接收者须要CNAME跟踪參加者。接收者也须要CNAME 与相关RTP连接中给定的几个数据流联系。

     
      前两种功能要求全部參加者发送RTCP包,因此,为了RTP扩展到大规模数量,速率必须受到控制。让每一个參加者给其它參加者发送控制包。就大独立观察參加者数量。该数量用语计算包发送的速率。 
      第四个可选功能是传送最小连接控制信息。如參加者辨识。最可能用在"松散控制"连接。那里參加者自由进入或离开,没有成员控制或參数协调,RTCP充当通往全部參加者的方便通道,但不必支持应用的全部控制通讯要求。


      2.实时流协议RTSP

      实时流协议RTSP(RealTimeStreamingProtocol)是由RealNetworks和Netscape共同提出的,该协议定义了一对多应用程序怎样有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完毕传输数据。

    HTTP与RTSP相比,HTTP传送HTML。而RTP传送的是多媒体数据。

    HTTP请求由客户机发出,server作出响应;使用RTSP时,客户机和server都能够发出请求。即RTSP能够是双向的。 


      3.资源预订协议RSVP协议

      因为音频和视频数据流比传统数据对网络的延时更敏感,要在网络中传输高质量的音频、视频信息,除带宽要求之外,还需其它很多其它的条件。RSVP(ResourceReserveProtocol)是正在开发的Internet上的资源预订协议,使用RSVP预留一部分网络资源(即带宽),能在一定程度上为流媒体的传输提供QoS。在某些试验性的系统如网络视频会议工具vic中就集成了RSVP。 



      四.流媒体系统的组成

      一个最主要的流媒体系统必须包含编码器(Encoder)、流媒体server(Server)和client面播放器(Player)3个模块。

    模块之间通过特定的协议互相通信,并依照特定格式互相交换文件数据。当中编码器用于将原始的音/视频转换成合适的流格式文件,server向client发送编码后的媒体流,client播放器则负责解码和播放接收到的媒体数据。

     

      1、编码器

      编码器的功能是对输入的原始音、视频信号进行压缩编码。不同的流媒体业务,对编码器有不同的性能要求。

    眼下经常使用的视频编码方案有MPEG-4、H.264和Microsoft公司的Windows Media Video採用的AC-1;音频编码方案有MP3、MPEG-2、AAC、AMR和AMR-WB等。多媒体编码器所生成的码流仅仅包含了解码该码流所必需的信息,不包含媒体间的同步、随机訪问等系统信息。因此编码后的多媒体数据还要被组织成为流媒体文件格式用于传输或存储。

      2、流媒体server

    通常流媒体的播放採用下面三种方式

      1.单播


      在client与媒体server之间须要建立一个单独的数据通道,从一台server送出的每一个数据包仅仅能传送给一个客户机,这样的传送方式称为单播。

    每一个用户必须分别对媒体server发送单独的查询,而媒体server必须向每一个用户发送所申请的数据包拷贝。

    这样的巨大冗余首先造成server沉重的负担,响应须要非常长时间,甚至停止播放;管理人员也被迫购买硬件和带宽来保证一定的服务质量。 


      2.组播


      在IP组播技术构建一种具有组播能力的网络上。同意路由器一次将数据包拷贝到多个通道上。

    採用组播方式,单台server能够对几十万台客户机同一时候发送连续数据流而无延时。媒体server仅仅须要发送一个信息包,而不是多个;全部发出请求的client共享同一信息包。信息能够发送到随意地址的客户机。减少网络上传输的信息包的总量。网络利用效率大大提高,成本大为下降。 


      3.点播与广播


      点播连接是client与server之间的主动的连接。在点播连接中,用户通过选择内容项目来初始化client连接。用户能够開始、停止、后退、快进或暂停流。

    点播连接提供了对流的最大控制,但这样的方式因为每一个client各自连接server。却会迅速用完网络带宽。

     
      广播指的是用户被动接收流。在广播过程中,client接收流。但不能控制流。比如。用户不能暂停、快进或后退该流。广播方式中数据包的单独一个拷贝将发送给网络上的全部用户。 使用单播发送时。须要将数据包复制多个拷贝,以多个点对点的方式分别发送到须要它的那些用户,而使用广播方式发送。数据包的单独一个拷贝将发送给网络上的全部用户,而无论用户是否须要,上述两种传输方式会非常浪费网络带宽。组播吸收了上述两种发送方式的好处,克服了上述两种发送方式的弱点,将数据包的单独一个拷贝发送给须要的那些客户。组播不会复制数据包的多个拷贝传输到网络上,也不会将数据包发送给不须要它的那些客户。保证了网络上多媒体应用占用网络的最小带宽。

     



      3、client播放器

      音/视频RTP数据包经网络传输到client后,先进入一个缓冲队列等待,这个缓冲队列中的全部数据包依照包头的序列号排序。假设有迟到的包,则按序列号又一次插入正确的位置上。这样就避免了乱序的问题。
      client每次从队列头部读取一帧数据。从包头的时间标记中解出该帧的播放时间,然后进行音/视频同步处理。同步后的数据将送入解码器进行解码。解码后的数据被送入一个循环读取的缓冲中等待。一旦该帧的播放时间到达,就将解码数据从缓冲存中取出,送入播放模块进行显示或播放。


      五.流媒体文件格式
      流媒体文件格式是支持採用流式传播及播放的媒体格式。流式文件格式经过特殊编码,使其适合在网络上边下载边播放,而不是等到下载完整个文件才干播放。

    将压缩媒体文件编码成流式文件。必须假如一些附加信息,如计时、压缩和版权信息。




      六.流媒体应用

      1.在线直播
      随着Internet的普及网络上舆的资料不再局限于文字和图形,有很多的视频应用须要在网上直播。如世界杯现场直播、春节晚会直播等。对电视台来说,利用流媒体技术实如今线直播。能够最大范围地覆盖观众,能像电视直播一样大致宣传、广告或满足观众需求的目的。

      2.视频点播
      随着多媒体技术、通信技术以及硬件存储技术的发展。人们已不再满足以往单一、被动的单方向信息获取方式。採用流媒体技术的视频点播(Video on Demand,VOD)的交互式业务,正受到人们的欢迎。如今网上非常多的在线影院基本上都是採用RealNetwork公司的RealSystem或微软的Windows Meadia System。



      3.远程教育
      远程教育系统与传统学校教育相比,突破了时空限制。添加了学习机会,有利于扩大教育规模,提高教学质量,减少教学成本。

    学习者能够在自己方便的时间、适合的地点,依照自己须要的速度和方式。运用丰富的教学资源来进行教学。眼下很多大学都已採用流媒体技术实现了远程教育。



      此外。沪江网校也是。流媒体技术在电子商务、远程医疗和视频会议等很多方面都有成功应用。眼下流媒体技术的应用主要有宽带和窄带两种方式。

    窄带方式包含多媒体新闻直播、远程教学、e-Learing、股评分析和视频会议等;宽带方式包含网络电视、KTV、企业培训和多媒体IDC等。

  • 相关阅读:
    计算机二级-C语言-程序修改题-190114记录-对整型变量进行取余操作可以取得各个位上的值。
    计算机二级C语言选择题错题知识点记录。
    计算机二级-C语言-对文件的读写操作。链表的定义与赋值。对字符串的遍历和处理。
    二十七、Java基础之数组的排列
    二十六、Java语言之二维数组
    二十五、Java基础之一维数组
    二十四、Java基础之自定义异常
    二十三、Java基础之异常及异常处理机制
    二十二、Java基础之内部类
    二十一、Java基础之访问控制权限
  • 原文地址:https://www.cnblogs.com/llguanli/p/8400722.html
Copyright © 2011-2022 走看看