移动流媒体业务的技术与标准

引言
  流媒体业务是从Internet上发展起来的一种多媒体应用,指使用流(Streaming)方式在网络上传输的多媒体文件,包括音频、视频和动画等。
  流媒体传输技术的主要特点是以流(streaming)的形式进行多媒体数据的传输。把连续的影像和声音信息经过压缩处理后放到网络服务器上,客户端在播放前并不需要下载整个媒体文件,而是在将缓存区中已经收到的信息进行播放的同时,多媒体文件的剩余部分将持续不断地从服务器下载到客户端,即“边下载,边播放”。这样就避免了用户在收看或收听媒体流的时候要花费一段时间把完整的文件下载到客户端,可以给用户带来“实时播放”的业务感知体验。

移动流媒体业务
  移动流媒体业务就是流媒体技术在移动网络和终端上的应用,主要是利用目前2.5G或3G的移动通信网,为手机终端提供音频、视频的流媒体服务。移动流媒体业务的内容包括新闻资讯、影视、MTV、体育、教育、行业和专项应用等多种形式。
  移动流媒体业务根据数据内容的播放方式可以分为三种业务类型:
  ● 流媒体点播(VOD):内容提供商将预先录制好的多媒体内容编码压缩成相应格式,存放在内容服务器上并把内容的描述信息以及链接放置在流媒体的门户网站上。最终用户就可以通过访问门户网站,发现感兴趣的内容,有选择的进行播放。
  ● 流媒体直播:流媒体编码服务器将实时信号编码压缩成相应的格式,并经由流媒体服务器分发到用户的终端播放器。根据实时内容信号源的不同,又可以分为电视直播、远程监控等。
  ● 下载播放:用户将流媒体内容下载并存储到本地终端中,然后可以选择在任意时间进行播放。对于下载播放,主要的限制指标是终端的处理能力和终端的存储能力,内容提供商可以制作出较高质量的视音频内容(高带宽、高帧速率),但需要考虑内容的下载时间及终端的存储空间。
  移动流媒体技术是网络音视频技术和移动通讯技术发展到一定阶段的产物,它是融合很多网络技术之后所产生的技术,它会涉及到流媒体数据的采集、压缩、存储,无线网络通信,以及移动终端等多项技术。
  由于流媒体的技术特点,决定了其在移动网络中的广阔应用前景。首先,流媒体技术有效降低对传输带宽和抖动的要求,使得在无线传输环境实现实时媒体播放业务成为可能。移动终端体积小、低能耗的要求决定了有限的存储空间,而媒体文件不需要在终端中保存,避免了对存储空间的要求。其次,有效的版权保护,能够确保移动流媒体应用的商用模式。
  随着第三代移动通信技术的逐步成熟,将移动流媒体技术引入移动增值业务,已经成为目前全球范围内移动业务研究的热点之一。目前3GPP、3GPP2等标准化组织早已经开展了移动流媒体的应用研究工作,并已经制定了相应的标准。

移动流媒体的编解码类型
  移动流媒体系统所支持的媒体内容编解码格式与业务类型无关,即无论是点播、直播,还是下载播放,这些格式都是适用的。
  依据3GPP的PSS规范,UMTS系统的移动分组流媒体支持的编码类型包含视频、音频、静态图像、位图、向量图、普通文本和定时文本等,其中音频和视频的编解码类型可以有多种组合。本文主要描述视频与音频媒体编码格式的要求。
  根据3GPP R6的PSS规范,视频的媒体编解码类型主要有三种:H.263、MPEG-4和H.264。具体包括:
  ● H.263 profile 0 Level 45;
  ● H.263 profile 3 Level 45;
  ● MPEG-4 Visual Simple Profile level 0b;
  ● H.264(AVC) Baseline Profile Level1b,且constraint_set1_flag=1,不要求输出的时间顺序。
  音频媒体编解码方面,包含4种:
  ● Enhanced aacPlus;
  ● Extended AMR-WB;
  ● MPEG-4 AAC Low Complexity (AAC-LC);
  ● MPEG?4 AAC Long Term Prediction (AAC-LTP)。
  其中,MPEG-4音频解码器支持的最高采样率为48kHz。所支持的通道配置为mono(1/0)和stereo(2/0)。对于AAC-LC或AAC-LTP流,应在SDP“a=fmtp”行中包含MIME参数“profile-level-id”和“object”。其值如表1所示:


实现移动流媒体业务的相关协议
  本章主要介绍会话建立、RTSP、SDP、RTP/RTCP等移动流媒体的重要协议,以及这些协议用于移动应用的扩展。



  实现移动流媒体业务的协议栈如图1所示。其中,视频、音频等流媒体数据主要通过RTP/UDP承载,而一些静态的图像、文本则可以使用HTTP进行承载。对于能力交换(Capbility Exchange)和表示描述(PresentationDescription)可以使用HTTP或者RTSP进行封装,这取决于不同的实现方式。RTSP和SDP用于会话建立和控制,MIME描述媒体类型,RTP是流媒体负载的传输协议。

4.1  会话建立
  会话建立是指移动流媒体客户端获得初始会话描述的方法。初始会话描述可能是一个表示描述、或者一个场景描述、或者仅仅是一个指向该内容的URL。移动流媒体客户端应当支持按以下格式定义的初始会话描述:SMIL、SDP或者简单的RTSPURL。
  除了“rtsp://”以外,移动流媒体客户端还应该支持以“file://”(用于本地存储的文件)和“http://”(用于通过HTTP协议分发的表示描述或场景描述)开头的指向有效初始会话描述的URL,移动流媒体客户端应支持至少其中一种。三种输入举例如下:
  ● 
file://temp/morning_news.smil
  ● 
http://mediaportal/morning_news.sdp
  ● rtsp://mediaportal/morning_news.3gp或                 rtsp://mediaportal/morning_news.3g2。

4.2  实时流媒体协议(RTSP)

  RTSP(Real-time StreamingProtocol)是由RealNetworks和Netscape共同提出的一种协议,它定义了如何使一对多应用程序有效地通过IP网络传送多媒体数据。
  连续的媒体是只有内在时间线的媒体。不连续的媒体则不包含自己的时间元素。话音、音频和视频属于连续的媒体,而静态图像和文本则是不连续的媒体。对于不连续的媒体的传输,例如矢量图、同步文本和合成音频,可以采用HTTP/TCP/IP协议。在这种情况下,由于HTTP已经具备这些功能,因此不需要一个独立的会话建立和控制协议。而对于使用RTP/UDP/IP的连续媒体流则需要一个会话控制协议来建立并控制独立的媒体流。流媒体业务使用RTSP协议来进行会话的建立和控制。
  RTSP在体系结构上位于RTP、RTCP之上,它使用TCP或RTP完成数据传输。与HTTP相比,RTP传送的是多媒体数据,而HTTP传送HTML。在使用RTSP时,客户机和服务器均可发出请求,也就是说RTSP可双向服务,而HTTP的请求是由客户机发出,服务器进行响应。
  RTSP的主要命令:DESCRIBE、PLAY、PAUSE、SET_PARAMETER、TEARDOWN、OPTIONS、SETUP。
  3GPP的PSS规范中对于RTSP协议在移动分组流媒体中的应用定义了一些扩展字段,主要包括:
  ● Range头字段,并在PLAY的响应中包含这个字段;
  ● Bandwidth头字段;
  ● 3GPP-link-Char头字段:用于移动流媒体客户端向移动流媒体服务器报告无线链路特性;
  ● 3GPP-Adaptation头字段:用于移动流媒体客户端设置速率自适应参数;
  ● QoE头字段:用于移动流媒体客户端和服务器协商移动流媒体客户端应发送哪些QoSMetrics,以什么样的频率发送以及如何取消发送这些Metrics;
  ● Video Buffering头字段:用于Buffer的管理。

4.3  会话描述协议(SDP)
   RTSP需要一个表示描述(PresentationDescription),以便说明一个流媒体会话的基本属性,包括媒体类型和格式、所需要的传输带宽、播放的时间范围、所需Buffer信息等。作为在移动网络中应用的一种带宽和时延敏感的业务,这些信息对于保证移动终端用户的业务感受是非常重要的。
  SDP协议最初用于描述SIP会话中支持的媒体类型,只是一种用于会话描述的格式(协议),它并不是一个传输协议,也不包含在媒体的编解码之中,而是用于在不同传输协议间的传递消息的通知协议,其主要目的是解决多媒体会话通知、邀请和会话的初始化工作。
  3GPP的PSS规范中使用SDP协议实现RTSP的表示描述,并对SDP进行了必要的扩展,以便满足流媒体业务在移动网络中QoS需求。
  SDP消息中包含两层:会话层和媒体层。一个会话描述中可能包含一个或多个媒体层的信息。SDP消息的基本内容包括:
  ● 会话信息:
   ■ 会话名和目的;
   ■ 会话时间;
   ■ 会话使用的带宽;
   ■ 会话的用户信息;
  ● 媒体信息:
   ■ 媒体类型,例如:视频或音频;
   ■ 传输协议,例如:RTP/UDP/IP;
   ■ 媒体格式,例如:H.263视频或者MPEG视频;
   ■ 多播地址和媒体传输端口(IP多播会话);
   ■ IP单播会话的联系地址和媒体传输端口等。
  DP会话描述由许多文本行组成。文本行的格式为:类型=值。其中“类型”是一个字母,“值”是结构化的文本串。例如:
        m = video  53000 RTP/AVP  31
  其中:m代表这一行代表媒体信息;video代表是视频流;53000代表UDP端口号是53000;RTP/AVP指媒体传输协议使用RTP/AVP;31代表媒体格式使用H.261并且使用90KHz的时钟。
  对于移动流媒体应用,3GPP在PSS规范中定义了一些扩展。SDP在移动流媒体的扩展要求包括带宽参数扩展、用于Buffer管理的扩展、完整性保护扩展等3GPP扩展要求。
  移动终端需要使用SDP中的带宽(Bandwidth)字段,以便正确设置QoS参数。因此,移动流媒体服务器应在SDP中的媒体层为每个媒体流包括“b=AS:”、“b=TIAS:”和“a=maxprate”字段,并且在会话层包含“b=TIAS:”和“a=maxprate”字段。当客户端接收到SDP,它将忽略会话层的“b=AS:”参数,并且从相关流的媒体层带宽参数的值来计算会话需要的带宽。若会话层具有“b=TIAS:”和“a=maxprate”参数,由于汇聚多个媒体流时会话层能够提供所需会话带宽更为准确的描述,则优先使用会话层的这个参数,而不是媒体层的参数。
  此外,3GPP的PSS规范中对于SDP中的会话层和媒体层都定义了带宽信息参数的两个扩展字段:
  ● “b=RS:”:为发送者(即流媒体服务器)分配的RTCP带宽;
  ● “b=RR:”:为接收者(即移动流媒体终端)分配的RTCP带宽。
  流媒体服务器在SDP的媒体层包含每个媒体流的“b=RS:”和“b=RR:”字段。
  为满足移动网络提供视频流媒体业务的性能要求或速率适配,3GPP的PSS规范也定义了一些扩展字段:
  ● "a=X-predecbufsize:";
  ● "a=X-initpredecbufperiod:";
  ● "a=X-initpostdecbufperiod:";
  ● "a=X-decbyterate:";
  ● "a=3gpp-videopostdecbufsize:"。
  对于H.263格式的流媒体文件,SDP媒体层定义了framesize扩展字段。该字段定义了H.263流的最大视频帧的长度,便于终端分配适当大小的缓冲空间。格式如下:“a=framesize: -”。
  3GPP还定义了一些SDP会话层的扩展字段,用于支持会话的完整性保护,包括:
  ● "a=3GPP-Integrity-Key";
  ● "a=3GPP-SRTP-Config";
  ● "a=3GPP-SDP-Auth"。

4.4  数据传输协议RTP与RTCP
  为了传输会话控制信息和媒体信息,移动流媒体客户端和服务器应支持基于IP的网络接口。控制信息和媒体信息基于TCP/IP和UDP/IP传输。
  移动流媒体的业务定义是按照实时或点播方式通过移动缦蚴只斩私幸羰悠倒悴ィ嫦蛄拥腡CP需要较多的开销,所以不适合移动流媒体的应用。移动流媒体传输一般采用实时传输协议RTP/UDP来传输实时多媒体数据,以获得较小的时延和减少数据开销。
   RTP(Realtime TransportProtocol)实时数据传输协议是针对Internet上多媒体数据流的一个传输协议,由IETF作为RFC1889发布。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP的典型应用建立在UDP上,但也可以在TCP或ATM等其他协议之上工作。RTP本身只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。
   RTCP(Realtime Transport ControlProtocol)是RTP的控制协议,负责管理传输质量,在当前应用进程之间交换控制信息。在RTP会话期间,各参与者周期性地传送RTCP包,包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料。因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。
  RTP和RTCP配合使用,能以有效的反馈和最小的开销使传输效率最佳化,适合传送网上的实时数据。
  RTCP的一个关键作用就是能让接收方同步多个RTP流,例如:当音频与视频一起传输的时候,由于编码的不同,RTP使用两个流分别进行传输,这样两个流的时间戳以不同的速率运行,接收方必须同步两个流,以保证声音与影像的一致。
  RTP只是保证同一媒体流的时间戳功能,但是对于同时需要不同媒体流(音频+视频)的业务时,RTCP把时间戳和实时时钟联系起来,保证了媒体的同步,同时RTCP保证参与会话的成员反馈通信信息,从而保证通信的质量。
  RTCP包的主要类型包括:
  ● SR:发送报告,发送者的发送和接收信息的统计;
  ● RR:接收报告,非发送者的接收信息的统计;
  ● SDES:信息源的描述;
  ● BYE:会话参与者会话结束标志;
  ● APP:某种应用功能。
  几个单独的RTCP包可以组合成混合RTCP包进行传输。
  3GPP对用于移动流媒体传输的RTP/RTCP也进行了一些扩展,以支持传输的完整性、RTP重传、拥塞控制和速率自适应等功能。

4.5  能力交换协议
  在移动流媒体业务中,终端能力协商是一个重要的功能,它使得流媒体服务器可以提供广泛的内容给多种类型的客户端设备。其另一个重要功能是在不同版本的移动流媒体间提供平滑转换。因此,移动流媒体客户端和服务器应支持能力交换。
  用户终端档案服务器(User AgentProfile)用于存储用户参数和设备功能信息。这些信息可用于控制如何向移动用户提供流媒体内容。
  图2概括性说明终端能力协商机制。

 
移动流媒体标准进展
  在移动流媒体技术的标准化方面,移动分组流媒体主要在3GPP进行规范,3GPP2对用于cdma2000系统的移动流媒体文件格式有所规定。
   3GPPR6版本的PSS规范项目已经基本完成,在技术内容上与R5兼容。在协议、能力交换、网络适配、DRM等方面有所增强。在编解码方面,3GPP也根据相关组织规范的最新版本进行了更新,与之保持一致,并且在R6引入了视频H.264(AVC)、音频Extended AMR-WB和音频Enhanced aacPlus等几种编解码方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用python实现对于chineseocr的API调用

ChineseOCR在线API 网页链接 界面 提供多种接口调用方式,比如在线调用、Javascript api调用、curl api调用和python api调用四种方式,本次使用javascript api调用的方式进行OCR识别在线Base64 转化工具 Base64在线小工具代码修改 新增一个变量fill_w…

算法入门篇十 图

图的存储方式 临接表临接矩阵 表达 点集/边集有向图/无向图 Graph&#xff08;大结构就是图&#xff09;&#xff08;包含点集合和边集合&#xff09; import java.util.HashMap; import java.util.HashSet;public class Graph {public HashMap<Integer, Node> nodes;…

超文本传输协议

超文本传输协议 超文本传输协议超文件传输协定(HTTP&#xff0c;HyperTextTransfer Protocol)是因特网上应用最为广泛的一种网络传输协定。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 目录 介绍请求信息请求方法安全方法超…

利用MFC调用libvlc.dll作一个简单的播放器

简单介绍MFC调用libvlc.dll作一个简单的播放器&#xff0c;抛砖引玉&#xff0c;各位VC达人继续深入研究&#xff0c;Jeremiah对VC确实不太感兴趣&#xff0c;所以就不做太深入的研究了。2009.10.29修改&#xff1a;加入clip_children属性设置。参开第1步。环境&#xff1a; …

使用Remix编写Solidity语言的小例子

设置数值/取数值/加法运算 讲解 uint默认使用256位数的整型view表示这个函数仅仅对于数据仅仅是读取&#xff0c;没有修改操作returns(uint )&#xff0c;如果单纯指定uint&#xff0c;返回的是函数体内的return值&#xff0c;如果包含uint sum,uint SAD_a&#xff0c;那么返…

RTP协议栈简介

流媒体指的是在网络中使用流技术传输的连续时基媒体&#xff0c;其特点是在播放前不需要下载整个文件&#xff0c;而是采用边下载边播放的方式&#xff0c;它是视频会议、IP电话等应用场合的技术基础。RTP是进行实时流媒体传输的标准协议和关键技术&#xff0c;本文介绍如何在L…

使用多线程的方式调用chineseocr_API

ChineseOCR在线API 网页链接 界面 提供多种接口调用方式&#xff0c;比如在线调用、Javascript api调用、curl api调用和python api调用四种方式&#xff0c;本次使用javascript api调用的方式进行OCR识别代码 import glob import base64 import os import requests import …

开源好代码 音视频

VirtualDub 一、简介 图1VirtualDub主界面 VirtualDub是一款开源的音视频捕获、处理软件。VirtualDub也可称为一款多媒体编辑软件&#xff0c;因为它包含了多媒体输入、编辑、处理、输出等各个环节&#xff0c;但是作者并未将它定位为一款多媒体编辑软件&#xff08;参见官网&a…

深入理解Solidity 二

Solidity数据位置 所有复杂的数据类型&#xff0c;即数组、结构和映射类型&#xff0c;都会有一个额外属性“数据位置”&#xff0c;用来指定数据的存储位置&#xff0c;即数据是存储在memory还是存储在storage里面根据上下文环境&#xff0c;IDE会自动指定数据的默认存储位置…

VOIP简介

一、什么是VOIP VOIP全称为&#xff08;VoiceOver Internet Protocol&#xff09;&#xff0c;是一种利用Internet网络进行语音通信的技术&#xff0c;更通俗一点说&#xff0c;就是IP电话。就是以IP分组交换网为传输平台&#xff0c;对模拟的语音信号进行编码压缩&#xff0c…

深入理解Solidity 三

Solidity函数声明和类型 函数的值类型有两类&#xff1a;内部&#xff08;internal&#xff09;类型和外部&#xff08;external&#xff09;类型内部函数只可以在当前合约内部被调用&#xff08;即在当前代码块内&#xff0c;包括内部库函数和继承函数&#xff09;&#xff0c…

安装solc模块4.25版本

使用国产阿里云的cnpm 如果不知道cnpm 参考链接 安装solc模块4.25版本 npm i solc0.4.25 --save -g查看安装是否成功 可以配置软连接使用solc&#xff0c;我的没有配置 solcjs --version

在pycharm中使用conda虚拟环境(conda虚拟环境是已经创建好的),解决python安装包文件很费劲的问题

查看conda的虚拟环境 使用PyCharm连接conda创建的虚拟环境&#xff0c;需要一个前提就是虚拟环境必须存在&#xff0c;使用conda env list命令查看虚拟环境列表打开PyCharm软件 打开pycharm&#xff0c;选择File->setting->Project:****->Project Interperter&#…

完成一个H.265/HEVC码流分析工具

经过大约一个月左右的业余时间&#xff0c;终于初步完成一个H.265/HEVC码流分析工具。时间包括平时的周末、晚上&#xff0c;以及调休的集中时间。当然&#xff0c;中秋回家过节不写代码。截至今天&#xff0c;经过多种H.265序列测试&#xff0c;也有各种工具对比&#xff0c;基…

Golomb及指数哥伦布编码原理介绍及实现

文章来源&#xff1a; https://www.cnblogs.com/wangguchangqing/p/6297792.html &#xff0c; 写的不错&#xff0c;转发出来。 2017年的第一篇博文。 本文主要有以下三部分内容&#xff1a; 介绍了Golomb编码&#xff0c;及其两个变种&#xff1a;Golomb-Rice和Exp-Golo…

解决ipfs 出现Error: can‘t publish while offline: pass `--allow-offline` to override的问题

原因 出现这个问题的原因是因为&#xff0c;ipfs未与公网上的节点相互连接&#xff0c;因此此时处于离线状态 使用场景 部署自己的博客&#xff0c;后期的改动&#xff0c;累计追加在同一个地址&#xff0c;这个地址是唯一的&#xff0c;也就是创建ipfs生成的ID号 步骤 1&…

安装ipfs-http-client出现constants@0.1.2 install: node build.js > index.browser.js错误的解决办法

错误截图 原先的命令 npm install --save-dev ipfs-http-client 修改后的命令 npm install --save-dev ipfs-http-client --unsafe-permtrue --allow-root

安装ipfs-api的命令变了,最新版的命令如下

原先使用的命令安装ipfs-api npm install --save-dev ipfs-api 现在使用的命令安装ipfs-api npm install --save-dev ipfs-http-client 官方文档 参考教程 官方文档

区块链相关问题 理解

本博客针对区块链的部分问题进行详解&#xff0c;希望帮助大家对于区块链有一个更好的理解 1&#xff0c;如果散布虚假交易&#xff0c;怎么整&#xff1f;&#xff08;谁欠我XXX比特币&#xff09; 1&#xff0c;可以发起虚假交易&#xff0c;但是很难被全网的节点接收并写入…

区块链的相关知识点

1&#xff0c;密码学原理 密码学原理 1&#xff0c;collision resistance 哈希函数 &#xff0c;目前还是很安全的&#xff0c;没有找到任何不同的内容其哈希是一致的情形。哈希碰撞&#xff08;这个在数学上面是没法证明的&#xff0c;都是日常的实践表明&#xff0c;无法找…