面向多屏的场景自适应的数据封装方法和装置及系统制造方法及图纸

技术编号:10484074 阅读:116 留言:0更新日期:2014-10-03 14:43
本发明专利技术公开了一种面向多屏的场景自适应的数据封装方法和装置及系统。其中,数据封装方法包括:检测客户端的属性信息,所述属性信息用于反映所述客户端对多媒体数据封装的解析能力,所述多媒体数据包括音频数据和/或视频数据;由所述属性信息确定所述客户端对应的封装参数;根据所述封装参数对所述多媒体数据进行封装;以及将封装后的数据输出至所述客户端。通过本发明专利技术,解决了无法针对不同的客户端进行数据封装的问题,达到了针对不同的客户端的解析能力对多媒体数据进行封装减少数据封装引起的额外开销的效果。

【技术实现步骤摘要】
面向多屏的场景自适应的数据封装方法和装置及系统
本专利技术涉及数据封装领域,具体而言,涉及一种面向多屏的场景自适应的数据封装方法和装置及系统。
技术介绍
随着移动终端的发展,播放终端的多样化趋势已不可避免。而不同播放终端允许接收的音视频数据的封装格式也有所差异,如:PC上Flash播放器可以接收RTMP格式和HDS格式,iOS以及Android高于4.0版本的手机和平板可以接收HTTPLiveStreaming(HLS)格式,Android低于4.0版本的手机和平板可以接收RTP格式。这些数据封装类型均有与之对应的标准协议描述。数据的封装和解封装,指的是数据从编码端传递到播放端时,需要经过多个协议层,在编码端,从最高层的应用层到最底层的物理层,每一层中又包含一个或多个协议层,数据每向下经过一个协议层时,均要在数据之上添加对应的头或尾作为协议的控制信息,然后传递给下一层协议层,称之为数据的封装,而在解码端,每向上通过一个协议层,则将协议的控制信息剥离,再把剩下的数据向上传递给上一层协议,称之为数据的解封装。这里提到的数据封装,特指在应用层中包含的协议层的数据封装,而不涉及传输层TCP/UDP、网络层、数据链路层和物理层的数据封装。上述提到的不同播放终端支持的数据封装,其应用层包含一个或多个协议。同时这些协议中所描述的数据封装方法,通常仅是规定了数据封装中控制信息的格式,但对具体如何拆分视频、音频信息,特别是不同帧的信息如何组织,并未具体规定。专利技术人发现,为提高传输效率,可以针对不同场景给出不同的封装优化方案,但是场景是易变的,目前还没有封装方案可以适应所有的场景及所有的播放终端。无法针对不同的客户端进行数据封装。同时场景还可能会在传输过程中实时变化,即时开始预设正确了场景,也无法保证整个过程保持正确。因此目前常见的封装方案为追求对客户端的广泛适用,对不同客户端采用了同样的封装方案。这样,客户端无法根据自身的解封装能力进行数据的解封装导致增加客户端解封转的开销。针对现有技术中无法针对不同的客户端进行数据封装的问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术的主要目的在于提供一种面向多屏的场景自适应的数据封装方法和装置及系统,以解决无法针对不同的客户端进行数据封装的问题。为了实现上述目的,根据本专利技术的一个方面,提供了一种面向多屏的场景自适应的数据封装方法。根据本专利技术的数据封装方法包括:检测客户端的属性信息,所述属性信息用于反映所述客户端对多媒体数据封装的解析能力,所述多媒体数据包括音频数据和/或视频数据;由所述属性信息确定所述客户端对应的封装参数,所述封装参数包括以下至少之一:第一参数、第二参数、第三参数、第四参数、第五参数、第六参数,其中,所述第一参数用于反映所述客户端是否支持音视频交织,所述第二参数用于反映所述客户端是否支持动态码率,所述第三参数用于反映所述客户端是否支持音频数据截断,所述第四参数用于反映所述客户端是否支持视频数据截断,所述第五参数用于反映所述客户端是否支持音频帧聚合,所述第六参数用于反映所述客户端是否支持视频帧聚合;根据所述封装参数对所述多媒体数据进行封装;以及将封装后的数据输出至所述客户端。进一步地,在根据所述封装参数对所述多媒体数据进行封装之前,所述数据封装方法还包括:获取对所述多媒体数据进行编码后的数据;通过预先建立的缓存队列对所述编码后的数据进行缓存,根据所述封装参数对所述多媒体数据进行封装包括:根据所述封装参数对所述缓存队列中缓存的数据进行封装。进一步地,所述缓存队列包括音频缓存队列和视频缓存队列,根据所述封装参数对所述多媒体数据进行封装包括:由所述第一参数判断所述客户端是否支持音视频交织;如果判断出所述客户端不支持音视频交织,则将所述音频数据缓存至所述音频缓存队列,将所述视频数据缓存至所述视频缓存队列;比较所述音频缓存队列的队列头部的数据帧的时间戳与所述视频缓存队列的队列头部的数据帧的时间戳;以及获取所述音频缓存队列和所述视频缓存队列中时间戳较小的数据帧进行封装。进一步地,所述属性信息包括所述客户端的操作系统和所述操作系统对应的版本号,检测客户端的属性信息包括:检测所述客户端的操作系统和所述操作系统对应的版本号,由所述属性信息确定所述客户端对应的封装参数包括:如果检测出所述操作系统为iOS系统且所述iOS系统的版本号为iOS3.0及iOS3.0以上版本,则确定所述客户端不支持音视频交织、支持动态码率、支持音频数据截断、支持视频数据截断、支持音频帧聚合以及支持视频帧聚合;如果检测出所述操作系统为Android系统且所述Android系统的版本号为Android4.0及Android4.0以上版本,则确定所述客户端不支持音视频交织、支持动态码率、支持音频数据截断、支持视频数据截断、支持音频帧聚合以及支持视频帧聚合;以及如果检测出所述操作系统为Android系统且所述Android系统的版本号低于Android4.0,则确定所述客户端支持音视频交织、不支持动态码率、不支持音频数据截断、不支持视频数据截断、不支持音频帧聚合以及不支持视频帧聚合。进一步地,根据所述封装参数对所述多媒体数据进行封装包括:由所述第五参数判断所述客户端是否支持音频帧聚合;如果判断出所述客户端支持音频帧聚合,则获取所述音频数据中按顺序排列的多个音频帧;获取所述多个音频帧中第一个音频帧的数据包头信息;以所述第一个音频帧的数据包头信息作为音频帧集合的数据包头信息对所述多个音频帧进行聚合,得到所述音频帧集合;以及对所述音频帧集合进行封装,和/或,根据所述封装参数对所述多媒体数据进行封装包括:由所述第六参数判断所述客户端是否支持视频帧聚合;如果判断出所述客户端支持视频帧聚合,则获取所述视频数据中按顺序排列的多个视频帧;获取所述多个视频帧中第一个视频帧的数据包头信息;以所述第一个视频帧的数据包头信息作为视频帧集合的数据包头信息对所述多个视频帧进行聚合,得到所述视频帧集合;以及对所述视频帧集合进行封装。进一步地,对所述多个音频帧进行聚合,得到音频帧集合包括:判断所述客户端接收的封装后的数据包的数据长度是否为固定数据长度;如果判断出所述客户端接收的封装后的数据包的数据长度为所述固定数据长度,则确定所述客户端接收的封装后的数据包的固定负荷和所述数据包的封包包头数据长度;确定用于进行聚合的音频帧的个数k,所述个数k满足以下公式其中,z为预设的比例值,Truncate((S(k)+SH+L-1)/L)表示(S(k)+SH+L-1)/L的整数部分的数值,S(k)表示所述固定数据长度,L表示所述固定负荷,SH表示所述封包包头数据长度;以及选取k个音频帧进行音频帧聚合,得到所述音频帧集合。进一步地,根据所述封装参数对所述多媒体数据进行封装包括:由所述第三参数判断所述客户端是否支持音频数据截断;如果判断出所述客户端支持音频数据截断,则确定所述音频帧集合的数据截断位置;基于所述音频帧集合的数据截止位置将所述音频帧集合截断成第一数据块和第二数据块;以所述第一数据块中第一个字节所属的音频帧的包头信息作为所述第一数据块的包头信息对所述第一数据块进行封装;以及以所述第二数据块中第一个字节所属的音频帧的包头信息作为所述第二数据块的包头本文档来自技高网
...
面向多屏的场景自适应的数据封装方法和装置及系统

【技术保护点】
一种面向多屏的场景自适应的数据封装方法,其特征在于,包括:检测客户端的属性信息,所述属性信息用于反映所述客户端对多媒体数据封装的解析能力,所述多媒体数据包括音频数据和/或视频数据;由所述属性信息确定所述客户端对应的封装参数,所述封装参数包括以下至少之一:第一参数、第二参数、第三参数、第四参数、第五参数、第六参数,其中,所述第一参数用于反映所述客户端是否支持音视频交织,所述第二参数用于反映所述客户端是否支持动态码率,所述第三参数用于反映所述客户端是否支持音频数据截断,所述第四参数用于反映所述客户端是否支持视频数据截断,所述第五参数用于反映所述客户端是否支持音频帧聚合,所述第六参数用于反映所述客户端是否支持视频帧聚合;根据所述封装参数对所述多媒体数据进行封装;以及将封装后的数据输出至所述客户端。

【技术特征摘要】
1.一种面向多屏的场景自适应的数据封装方法,其特征在于,包括:检测客户端的属性信息,所述属性信息用于反映所述客户端对多媒体数据封装的解析能力,所述多媒体数据包括音频数据和/或视频数据;由所述属性信息确定所述客户端对应的封装参数,所述封装参数包括以下至少之一:第一参数、第二参数、第三参数、第四参数、第五参数、第六参数,其中,所述第一参数用于反映所述客户端是否支持音视频交织,所述第二参数用于反映所述客户端是否支持动态码率,所述第三参数用于反映所述客户端是否支持音频数据截断,所述第四参数用于反映所述客户端是否支持视频数据截断,所述第五参数用于反映所述客户端是否支持音频帧聚合,所述第六参数用于反映所述客户端是否支持视频帧聚合;根据所述封装参数对所述多媒体数据进行封装;以及将封装后的数据输出至所述客户端。2.根据权利要求1所述的数据封装方法,其特征在于,在根据所述封装参数对所述多媒体数据进行封装之前,所述数据封装方法还包括:获取对所述多媒体数据进行编码后的数据;通过预先建立的缓存队列对所述编码后的数据进行缓存,根据所述封装参数对所述多媒体数据进行封装包括:根据所述封装参数对所述缓存队列中缓存的数据进行封装。3.根据权利要求2所述的数据封装方法,其特征在于,所述缓存队列包括音频缓存队列和视频缓存队列,根据所述封装参数对所述多媒体数据进行封装包括:由所述第一参数判断所述客户端是否支持音视频交织;如果判断出所述客户端不支持音视频交织,则将所述音频数据缓存至所述音频缓存队列,将所述视频数据缓存至所述视频缓存队列;比较所述音频缓存队列的队列头部的数据帧的时间戳与所述视频缓存队列的队列头部的数据帧的时间戳;以及获取所述音频缓存队列和所述视频缓存队列中时间戳较小的数据帧进行封装。4.根据权利要求1所述的数据封装方法,其特征在于,所述属性信息包括所述客户端的操作系统和所述操作系统对应的版本号,检测客户端的属性信息包括:检测所述客户端的操作系统和所述操作系统对应的版本号,由所述属性信息确定所述客户端对应的封装参数包括:如果检测出所述操作系统为iOS系统且所述iOS系统的版本号为iOS3.0以上版本,则确定所述客户端不支持音视频交织、支持动态码率、支持音频数据截断、支持视频数据截断、支持音频帧聚合以及支持视频帧聚合;如果检测出所述操作系统为Android系统且所述Android系统的版本号为Android4.0以上版本,则确定所述客户端不支持音视频交织、支持动态码率、支持音频数据截断、支持视频数据截断、支持音频帧聚合以及支持视频帧聚合;以及如果检测出所述操作系统为Android系统且所述Android系统的版本号低于Android4.0,则确定所述客户端支持音视频交织、不支持动态码率、不支持音频数据截断、不支持视频数据截断、不支持音频帧聚合以及不支持视频帧聚合。5.根据权利要求1所述的数据封装方法,其特征在于,根据所述封装参数对所述多媒体数据进行封装包括:由所述第五参数判断所述客户端是否支持音频帧聚合;如果判断出所述客户端支持音频帧聚合,则获取所述音频数据中按顺序排列的多个音频帧;获取所述多个音频帧中第一个音频帧的数据包头信息;以所述第一个音频帧的数据包头信息作为音频帧集合的数据包头信息对所述多个音频帧进行聚合,得到所述音频帧集合;以及对所述音频帧集合进行封装,和/或,根据所述封装参数对所述多媒体数据进行封装包括:由所述第六参数判断所述客户端是否支持视频帧聚合;如果判断出所述客户端支持视频帧聚合,则获取所述视频数据中按顺序排列的多个视频帧;获取所述多个视频帧中第一个视频帧的数据包头信息;以所述第一个视频帧的数据包头信息作为视频帧集合的数据包头信息对所述多个视频帧进行聚合,得到所述视频帧集合;以及对所述视频帧集合进行封装。6.根据权利要求5所述的数据封装方法,其特征在于,对所述多个音频帧进行聚合,得到音频帧集合包括:判断所述客户端接收的封装后的数据包的数据长度是否为固定数据长度;如果判断出所述客户端接收的封装后的数据包的数据长度为所述固定数据长度,则确定所述客户端接收的封装后的数据包的固定负荷和所述数据包的封包包头数据长度;确定用于进行聚合的音频帧的个数k,所述个数k满足以下公式其中,z为预设的比例值,Truncate((...

【专利技术属性】
技术研发人员:罗翰李毅要文涛
申请(专利权)人:北京世纪鼎点软件有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1