根据rtp包生成iso媒体文件的方法及其读取方法

文档序号:7643281阅读:150来源:国知局
专利名称:根据rtp包生成iso媒体文件的方法及其读取方法
技术领域
本发明涉及一种流媒体技术,具体说,涉及一种根据RTP包生成ISO 媒体文件的方法。
背景技术
在固网流媒体和移动流媒体中,需要流媒体服务器把直播编码器传下来 的RTP数据包按照一定的策略转存为符合标准的ISO媒体文件格式发布, 供以后点播。转存媒体文件非常关键的一个步骤就是要把RTP的负载数据, 复原成原始的媒体数据和流化数据。一般的做法是对于具体的编码格式,按照其流化标准定义,解析RTP 负载数据中的流化信息,复原出真实的媒体样本,然后生成对应的流化样本 数据。RTP负载数据由流化信息和采样数据两部分组成。其中流化信息不属 于媒体样本数据,所以以直接存储在媒体文件的流化样本数据中,RTP负载 中的采样数据可以包括一个或多个媒体样本,或者一个媒体样本的一部分, 这些数据应该保存在媒体样本的数据中,流化样本中不再保存这些数据,而 是按照文件定义的结构保存指向对应媒体样本的索引。由于现有技术中的支持的编码格式比较多,每种编码的流化标准不同, 而且流化的方式比较灵活,所以根据RTP数据包负载数据复原原始的媒体 样本比较繁瑣,而且很难做到正确复原所有的媒体样本的问题,此外这种作 法也存在扩展性问题。发明内容本发明所解决的技术问题是提供一种根据RTP包生成ISO媒体文件的 方法,不依赖于具体的编码格式及其流化标准,不解析RTP负载数据,直接生成虚拟的媒体样本,并生成其对应的流化样本,而且具有良好的扩展性, 可以比较容易地兼容以后扩充的编码格式。技术方案如下根据RTP包生成ISO媒体文件的方法,步骤如下(1) 确定流化样本的边界;(2) 生成虚拟媒体样本的采样数据;(3) 确定虛拟媒体样本的序号;(4) 生成流化样本的数据。进一步,步骤(1 )具体为根据RTP包头的mark位确定当前的流化 样本的边界。进一步,步骤(l)中,所述流化样本包括至少一个RTP数据包。进一步,步骤(l)中,根据RTP时戳发生的变化确定当前流化样本的 边界。进一步,步骤(2)具体为将所述流化样本中包括的所有RTP负载数 据作为虚拟媒体样本的采样数据。进一步,步骤(2)中,所述RTP负载数据包括流化信息和采样数据。进一步,步骤(3)具体为对媒体样本统一编号,得到所述虚拟媒体 样本的序号。进一步,步骤(4)中,所述流化样本的数据包括RTP负载数据的入口。进一步包括步骤(5):按照ISO媒体文件格式的规定生成媒体文件。进一步包括步骤(6):流媒体服务器读取生成的媒体文件。本发明所解决的另一个技术问题是提供一种流媒体服务器读取生成的 媒体文件的方法,可以很好地保留原有的RTP数据格式。4支术方案如下(1) 读取流化轨索引;(2) 根据流化轨索引到流化轨对应的数据区读取流化样本的数据,读出每个RTP包头和RTP负载数据的索引;(3 )根据RTP负载数据的索引读取对应媒体轨索引,得出对应媒体样 本的数据位置和长度;(4)根据媒体轨索引读取媒体样本的数据,生成RTP数据包。利用本发明方法,可以不依赖于具体的编码格式及其流化标准,不解析 RTP负载数据,直接生成虚拟的媒体样本,并生成其对应的流化样本,按照 ISO媒体文件格式规定生成媒体文件。转存后的媒体文件可以提供给通用的 流媒体服务器提供服务,流媒体服务器读取转存后的媒体文件发出的RTP 负载数据与转存之前的RTP负载数据完全相同。与现有技术相比,简化了 处理流程,可以不关心具体的编码格式,基本上保存了原有RTP的负栽数 据,可以真实地再现原有的RTP数据。而且这种方法具有良好的扩展性, 可以比较容易地兼容以后扩充的编码格式。附困说明图l是《RFC3016》中的流化格式定义;图2是本发明方法的流程图;图3是媒体文件流化轨和媒体轨的恢复流程图;图4是《RFC3640》中对RTP负载数据的定义;图5是媒体文件流化轨和媒体轨的恢复流程图。
具体实施方式
本发明能够方便准确地把RTP数据包恢复成ISO媒体文件中媒体轨 (media track)和流化轨(hint track)数据,支持通过流服务器播放。ISO 媒体文件包括但不限于ISO 14496-12中定义的基础媒体文件格式、 IS014496-14定义的MP4文件格式、IS014496-15定义的AVC文件格式、3GPP TS26.244定义的3GPP文件格式,以及3GPP2C.S0050-0定义的3GPP2文件格式。本发明技术方案的核心是将一个流化样本所包括的所有RTP负载数据 (包括流化信息和采样数据)虚拟成一个^某体样本,流化样本的所有入口数 据指向同一个虚拟媒体样本数据。这种方法生成的虚拟媒体样本和流化样本——对应,具有相同的样本序号和间隔。下面参照附图,对本发明的优选实施例作详细描述。以《RFC3016》流化标准来描述虚拟媒体样本生成的过程。在《RFC3016》 中对MPEG4视频编码格式的流化做了规定。如

图1所示,是比较典型的MPEG4视频的RTP结构定义。RTP数据包由RTP头(RTP Header)和RTP负载构成,RTP头为标准 RTP Header结构;RTP负栽由MPEG4 VOP Header和VOP Data Fragment组成。结合图2和图3所示,按照定义的流化格式生成一组RTP数据包。 流化过程为1、 确定流化样本的边界。一个流化样本包括在几个RTP数据包中,以mark位置1作为流化样 本的边界。考虑到网络丟包的情况,把时戳发生跳转也作为流化样本的边界。 一个流化样本包括n个(n〉-l ) RTP数据包。根据RTP包头的mark位置1确定当前处理的流化样本,该流化样本包 括3个RTP数据包,RTP数据包序号分别为11、 12和13。2、 生成虛拟媒体样本的采样数据。将一个流化样本中所包括的所有RTP负栽数据看作一个虚拟^ 某体样本 的采样数据。生成的虛拟媒体样本数据为负载11+负载12+负载13,长度为Ll+L2 + L3等同于真实的媒体样本VOP HeaderfVOP fragment(l)+VOP fragment(2)+VOP fragment(3)。3、 确定虛拟媒体样本的序号。对媒体样本统一编号,得出此虚拟媒体样本的序号,依次累加即可。假设当前的虚拟媒体样本的序号为m 。4、 生成流化样本的数据。流化样本有n个入口 ,每个入口都以ISO 14496-12中定义的数据结构2形式存在,即都是指向对应媒体轨的样本数据。每个入口对应同一个虛拟媒 体样本的不同数据段。生成的流化样本有3个RTP包,每个RTP包的RTP负载数据有一个入 口,为RTP负载数据入口。第1个RTP负载数据入口 从虛拟媒体样本(序号为m)的数据0开 始,长度为Ll。第2个RTP负载数据入口从虚拟媒体样本(序号为m)的数据L1开 始,长度为L2。第3个RTP负载数据入口 从虚拟媒体样本(序号为m)的数据(L1+L2) 开始,长度为L3。对于此类RTP负栽完全由媒体数据组成的情况,生成的虚拟媒体样本 完全等同于真实的媒体样本,此时生成的媒体文件不但支持流化播放,还支 持一般的本地播放。5、 按照ISO媒体文件格式的规定生成媒体文件。将生成的虚拟媒体样本和流化样本分别组成媒体轨、流化轨及其索引, 按照ISO媒体文件格式生成正确的媒体文件。《RFC3640》中对AAC音频编码格式的流化做了规定。如图4所示,对AAC音频的RTP结构作了定义。RTP数据包由RTP头(RTPHeader)和RTP负栽构成,RTP头为标准 RTP Header结构;RTP负载由多个AUHeader和AU数据组成。如图5所示,按照图示中定义的流化格式生成一组RTP数据包。流化过程为1、确定流化样本的边界。一个流化样本包括在几个RTP数据包中,以mark位置1作为流化样本 的边界。考虑到网络丟包的情况,把时戳发生跳转也作为流化样本的边界。 一个流化4羊本包4舌n个(n >=1 ) RTP数据包。才艮据RTP包头的mark位确定当前处理的流化样本,该流化样本包括3 个RTP数据包,RTP数据包序号为21。2、 生成虚拟媒体样本的采样数据。将一个流化轨样本中所包括的所有RTP负载数据看作一个虚拟媒体样 本的采样数据。生成的虚拟媒体样本数据为负载21,长度为Ll。其中 包括了流化信息和两个真实媒体样本AU1和AU2的数据。3、 确定虚拟媒体样本的序号。虚拟媒体样本统一编号,得出此虚拟媒体样本的序号,依次累加即可, 假设当前的虚拟々某体样本的序号为m。4、 生成流化样本的数据。流化样本有n个入口 ,每个入口都以ISO 14496-12中定义的数据结构2 形式存在,即都是指向对应媒体轨的样本数据。每个入口对应同一个虚拟媒 体样本的不同数据段。生成的流化样本有1个RTP包,RTP包的负栽数据只有一个入口 ,为 RTP负载数据入口。RTP负栽数据入口从序号为m的虚拟媒体样本的数据0开始,长度 为Ll。对于此类RTP负栽不完全由媒体数据组成,还包括某些流化信息的情 况,生成的虚拟媒体样本不等同于真实的媒体样本,此时生成的媒体文件支 持流化播放。5、 按照ISO媒体文件格式的规定生成媒体文件。将生成的虚拟媒体样本和流化样本分别组成媒体轨和流化轨,及其索 引,按照ISO媒体文件格式生成正确的媒体文件。现有技术中通常的做法是解析负载中的AUHeaderLen和每个AUHeader,分离出此RTP包中所包括的媒体样本个数和采样数据,复原媒 体样本。生成的流化样本有1个RTP数据包,RTP包的RTP负载数据至少 有3个入口 。其中,入口 1用于保存流化信息,包括AUHeaderLen和每个AUHeader。 这个入口可能有多个,根据流化信息的长度而定,每个入口最多只能保存 14个字节。入口 2从々某体样本(AU1的序号)的数据0开始,长度为AUl 的采样数据长度。入口 3从媒体样本(AU2的序号)的数据0开始,长度 为AU2的采样数据长度。如果采用的是带交织的流化方式,还需要緩沖n个RTP数据包,根据 RTP的时戳和负载中的流化信息,对媒体样本进行排序,排序后才能最终确 定J 某体样本的序号,也才能开始生成对应的流化样本数据。由此可见,对于 这种编码格式来说,采用本发明中所介绍的方法可以大大的降低实现的复杂 度。流媒体服务器读取生成的媒体文件的顺序为 (1)读取流化轨的索引。(2 )根据索引到流化轨对应的数据区读取流化样本数据,读出每个RTP 包头和RTP负载数据的索引。(3 )根据RTP负载数据的索引读取对应媒体轨索引,得出对应媒体样 本的数据位置和长度。(4)根据索引读取媒体样本数据,生成完整的RTP数据包。由此流程可以看出,服务器不关心媒体轨数据和真实的采样数据有何直 接关系,所以本发明方法可以很好地保留原有的RTP数据格式。
权利要求
1. 一种根据RTP包生成ISO媒体文件的方法,步骤如下(1)确定流化样本的边界;(2)生成虚拟媒体样本的采样数据;(3)确定虚拟媒体样本的序号;(4)生成流化样本的数据。
2、 根据权利要求1所述的根据RTP包生成ISO媒体文件的方法,其特 征在于,步骤(1)具体为根据RTP包头的mark位确定当前的流化样本 的边界。
3、 根据权利要求2所述的根据RTP包生成ISO媒体文件的方法,其特 征在于,步骤(l)中,所述流化样本包括至少一个RTP数据包。
4、 根据权利要求1所述的根据RTP包生成ISO媒体文件的方法,其特 征在于,步骤(l)进一步包括,根据RTP时戳发生的变化确定当前流化样 本的边界。
5、 根据权利要求1所述的根据RTP包生成ISO媒体文件的方法,其特 征在于,步骤(2)具体为将所述流化样本中包括的所有RTP负载数据作 为虚拟媒体样本的采样数据。
6、 根据权利要求1所述的根据RTP包生成ISO媒体文件的方法,其特 征在于,步骤(3)具体为媒体样本统一编号,得到所述虛拟媒体样本的 序号。
7、 根据权利要求1所述的根据RTP包生成ISO媒体文件的方法,其特 征在于,步骤(4)中,所述流化样本的数据包括RTP负载数据的入口。
8、 根据权利要求1所述的根据RTP包生成ISO媒体文件的方法,其特 征在于,进一步包括步骤(5):按照ISO媒体文件格式的规定生成媒体文件。
9、 根据权利要求8所述的根据RTP包生成ISO媒体文件的方法,其特 征在于,进一步包括步骤(6):流媒体服务器读取生成的媒体文件。
10、 一种流媒体服务器读取生成的媒体文件的方法,步骤如下(1) 读取流化轨索引;(2) 根据流化轨索引到流化轨对应的数据区读取流化样本的数据,读 出每个RTP包头和RTP负载数据的索引;(3 )根据RTP负载数据的索引读取对应媒体轨索引,得出对应媒体样 本的数据位置和长度;(4)根据媒体轨索引读取媒体样本的数据,生成RTP数据包。
全文摘要
本发明公开了一种根据RTP包生成ISO媒体文件的方法,步骤如下确定流化样本的边界;生成虚拟媒体样本的采样数据;确定虚拟媒体样本的序号;生成流化样本的数据。进一步包括按照ISO媒体文件格式的规定生成媒体文件;流媒体服务器读取生成的媒体文件。本发明还公开了一种流媒体服务器读取生成的媒体文件的方法。与现有技术相比,本发明简化了处理流程,可以不关心具体的编码格式,基本上保存了原有RTP的负载数据,可以真实地再现原有的RTP数据,而且这种方法具有良好的扩展性,可以比较容易地兼容以后扩充的编码格式。
文档编号H04L29/06GK101222480SQ20071000124
公开日2008年7月16日 申请日期2007年1月9日 优先权日2007年1月9日
发明者王志英, 阮亚平 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1