媒体文件中音视频的校准方法、装置及存储介质转让专利

申请号 : CN201510103568.0

文献号 : CN106034263B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈俊峰

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明公开了一种媒体文件中音视频的校准方法及装置。其中,该方法包括:获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,得到视频时间戳列表;检测解码多个源视频数据包之后返回的多个视频时间戳的排列顺序;在检测到多个视频时间戳的排序顺序错误的情况下,采用视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准。本发明解决了由于硬件解码带来的时间戳异常,导致的在显示过程中音视频无法同步的技术问题。

权利要求 :

1.一种媒体文件中音视频的校准方法,其特征在于,包括:

获取媒体文件,所述媒体文件包括:多个源视频数据包和多个源音频数据包;

对所述多个源视频数据包和所述多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从所述每个源视频数据包中读取源视频时间戳,得到视频时间戳列表;

检测采用硬件解码的方式解码所述多个源视频数据包之后返回的多个视频时间戳的排列顺序;

如果检测到所述排列顺序不是增序排序,则确定所述多个视频时间戳的排序顺序错误,采用所述视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准,其中,所述视频时间戳列表中保存的多个源视频时间戳为所述增序排序,以数据包编号为顺序,分别对所述视频时间戳列表中的源视频时间戳与对应的基准时间戳进行相减以执行同步校准,所述源视频时间戳与对应的所述基准时间戳具有相同的所述数据包编号。

2.根据权利要求1所述的方法,其特征在于,在所述源视频数据包包括:解码时间戳和显示时间戳的情况下,读取所述源视频数据包中的解码时间戳作为所述源视频时间戳。

3.根据权利要求1所述的方法,其特征在于,所述基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:所述音频基准时间戳、所述第三方预设基准时间戳和所述视频基准时间戳。

4.根据权利要求3所述的方法,其特征在于,在所述基准时间戳的类型为所述音频基准时间戳的情况下,其中,在采用所述视频时间戳列表中的源视频时间戳与基准时间戳执行同步校准之前,所述方法还包括:获取解码所述多个源音频数据包之后返回的多个音频时间戳,其中,采用软件解码的方式对所述源音频数据包进行解码;

保存所述多个音频时间戳,其中,每个音频时间戳作为用于执行所述同步校准的所述基准时间戳。

5.根据权利要求3所述的方法,其特征在于,在采用硬件解码的方式对所述源音频数据包进行解码的情况下,调用所述第三方预设基准时间戳作为所述基准时间戳,其中,所述第三方预设基准时间戳为所述源视频数据包中携带的显示时间戳或所述源音频数据包中携带的显示时间戳。

6.根据权利要求1所述的方法,其特征在于,采用所述视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准的步骤包括:按顺序依次读取所述视频时间戳列表中的每个源视频时间戳;

将所述每个源视频时间戳分别与对应的基准时间戳进行比对;

在任意一个源视频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整所述任意一个源视频时间戳对应的源视频数据包的播放时间;

在任意一个源视频时间戳与对应的基准时间戳的差值小于所述播放阈值的情况下,将按照所述任意一个源视频时间戳对应的播放时间来播放对应的源视频数据包。

7.一种媒体文件中音视频的校准方法,其特征在于,包括:

获取媒体文件,所述媒体文件包括:多个源视频数据包和多个源音频数据包;

对所述多个源视频数据包和所述多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从所述每个源音频数据包中读取源音频时间戳,得到音频时间戳列表;

检测采用硬件解码的方式解码所述多个源音频数据包之后返回的多个音频时间戳的排列顺序;

如果检测到所述排列顺序不是增序排序,则确定检测到所述多个音频时间戳的排序顺序错误,采用所述音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准,其中,所述音频时间戳列表中保存的多个源音频时间戳为所述增序排序,以数据包编号为顺序,分别对所述音频时间戳列表中的音频时间戳与对应的基准时间戳进行相减以执行同步校准,所述源音频时间戳与对应的所述基准时间戳具有相同的所述数据包编号。

8.根据权利要求7所述的方法,其特征在于,在所述源音频数据包包括:解码时间戳和显示时间戳的情况下,读取所述源音频数据包中的解码时间戳作为所述源音频时间戳。

9.根据权利要求7所述的方法,其特征在于,所述基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:所述视频基准时间戳、所述第三方预设基准时间戳和所述音频基准时间戳。

10.根据权利要求9所述的方法,其特征在于,调用所述第三方预设基准时间戳作为所述基准时间戳,其中,所述第三方预设基准时间戳为所述源视频数据包中携带的显示时间戳或所述源音频数据包中携带的显示时间戳。

11.根据权利要求7所述的方法,其特征在于,采用所述音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准的步骤包括:按顺序依次读取所述音频时间戳列表中的每个源音频时间戳;

将所述每个源音频时间戳分别与对应的基准时间戳进行比对;

在任意一个源音频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整所述任意一个源音频时间戳对应的源音频数据包的播放时间;

在任意一个源音频时间戳与对应的基准时间戳的差值小于所述播放阈值的情况下,将按照所述任意一个源音频时间戳对应的播放时间来播放对应的源音频数据包。

12.一种媒体文件中音视频的校准装置,其特征在于,包括:

获取模块,用于获取媒体文件,所述媒体文件包括:多个源视频数据包和多个源音频数据包;

解码模块,用于对所述获取模块获取的所述多个源视频数据包和所述多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从所述每个源视频数据包中读取源视频时间戳,得到视频时间戳列表;

检测模块,用于采用硬件解码的方式检测解码所述多个源视频数据包之后返回的多个视频时间戳的排列顺序;

校准模块,用于如果检测到所述排列顺序不是增序排序,则确定所述多个视频时间戳的排序顺序错误,采用所述视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准,其中,所述视频时间戳列表中保存的多个源视频时间戳为所述增序排序,以数据包编号为顺序,分别对所述视频时间戳列表中的源视频时间戳与对应的基准时间戳进行相减以执行同步校准,所述源视频时间戳与对应的所述基准时间戳具有相同的所述数据包编号。

13.根据权利要求12所述的装置,其特征在于,在所述源视频数据包包括:解码时间戳和显示时间戳的情况下,所述解码模块,用于读取所述源视频数据包中的解码时间戳作为所述源视频时间戳。

14.根据权利要求12所述的装置,其特征在于,所述基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:所述音频基准时间戳、所述第三方预设基准时间戳和所述视频基准时间戳。

15.根据权利要求14所述的装置,其特征在于,在所述基准时间戳的类型为所述音频基准时间戳的情况下,其中,在采用所述视频时间戳列表中的源视频时间戳与基准时间戳执行同步校准之前,所述装置还包括:读取模块,用于获取解码所述多个源音频数据包之后返回的多个音频时间戳,其中,采用软件解码的方式对所述源音频数据包进行解码;

存储模块,用于保存所述多个音频时间戳,其中,每个音频时间戳作为用于执行所述同步校准的所述基准时间戳。

16.根据权利要求14所述的装置,其特征在于,在采用硬件解码的方式对所述源音频数据包进行解码的情况下,所述解码模块包括:调用单元,用于调用所述第三方预设基准时间戳作为所述基准时间戳,其中,所述第三方预设基准时间戳为所述源视频数据包中携带的显示时间戳或所述源音频数据包中携带的显示时间戳。

17.根据权利要求12所述的装置,其特征在于,所述校准模块包括:

读取单元,用于按顺序依次读取所述视频时间戳列表中的每个源视频时间戳;

比对单元,用于将所述读取单元读取的所述每个源视频时间戳分别与对应的基准时间戳进行比对;

第一调整单元,用于在任意一个源视频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整所述任意一个源视频时间戳对应的源视频数据包的播放时间;

第二调整单元,用于在任意一个源视频时间戳与对应的基准时间戳的差值小于所述播放阈值的情况下,将按照所述任意一个源视频时间戳对应的播放时间来播放对应的源视频数据包。

18.一种媒体文件中音视频的校准装置,其特征在于,包括:

获取模块,用于获取媒体文件,所述媒体文件包括:多个源视频数据包和多个源音频数据包;

解码模块,用于对所述获取模块获取的所述多个源视频数据包和所述多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从所述每个源音频数据包中读取源音频时间戳,得到音频时间戳列表;

检测模块,用于采用硬件解码的方式检测解码所述多个源音频数据包之后返回的多个音频时间戳的排列顺序;

校正模块,用于如果检测到所述排列顺序不是增序排序,则确定在检测到所述多个音频时间戳的排序顺序错误的情况下,采用所述音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准,其中,所述音频时间戳列表中保存的多个源音频时间戳为所述增序排序,以数据包编号为顺序,分别对所述音频时间戳列表中的音频时间戳与对应的基准时间戳进行相减以执行同步校准,所述源音频时间戳与对应的所述基准时间戳具有相同的所述数据包编号。

19.根据权利要求18所述的装置,其特征在于,在所述源音频数据包包括:解码时间戳和显示时间戳的情况下,所述解码模块,用于读取所述源音频数据包中的解码时间戳作为所述源音频时间戳。

20.根据权利要求18所述的装置,其特征在于,所述基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:所述视频基准时间戳、所述第三方预设基准时间戳和所述音频基准时间戳。

21.根据权利要求20所述的装置,其特征在于,在采用硬件解码的方式对所述源音频数据包进行解码的情况下,所述解码模块包括:调用单元,用于调用所述第三方预设基准时间戳作为所述基准时间戳,其中,所述第三方预设基准时间戳为所述源视频数据包中携带的显示时间戳或所述源音频数据包中携带的显示时间戳。

22.根据权利要求18所述的装置,其特征在于,所述校正模块包括:

读取单元,用于按顺序依次读取所述音频时间戳列表中的每个源音频时间戳;

对比单元,用于将所述读取单元读取的所述每个源音频时间戳分别与对应的基准时间戳进行比对;

第一调整单元,用于在任意一个源音频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整所述任意一个源音频时间戳对应的源音频数据包的播放时间;

第二调整单元,用于在任意一个源音频时间戳与对应的基准时间戳的差值小于所述播放阈值的情况下,将按照所述任意一个源音频时间戳对应的播放时间来播放对应的源音频数据包。

23.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至11任一项中所述的方法。

说明书 :

媒体文件中音视频的校准方法、装置及存储介质

技术领域

[0001] 本发明涉及计算机应用技术领域,具体而言,涉及一种媒体文件中音视频的校准方法及装置。

背景技术

[0002] 随着计算机应用技术的发展,尤其是对视频、音频的品质处理技术也越来越先进,其中,随着各个类型移动终端的发展,如何在各个类型移动终端将视频中的视频图像与对应音频同步播放成为了需要解决的问题。
[0003] 在相关的解决上述问题的技术中,以安卓手机为例进行说明,由于安卓手机拥有海量用户,机型各不相同,而视频解码属于计算密集型业务,所以在播放视频时,需要先通过硬件解码视频数据包,进一步的通过视频数据包中的时间戳进行显示,其中,正常的音视频播放需要声音和视频按照预设的时间顺序输出,这样在播放时能够保证音视频是同步播放的,每一个音频和视频的每一个解码单元都含有响应的时间戳,这样解码完毕后,就能决定是立即输出、延迟输出或者丢弃。
[0004] 由上可知,在相关技术中,硬件解码过程中由于硬件解码可以达到流畅清晰的播放画质,并且在数据处理过程中相比软件解码更加省电,但是不是每个手机都能稳定的支持硬件解码,虽然硬件解码会使播放视频变得省电流畅,但是硬件时间戳有时候发生异常,如果不处理,则会造成媒体文件播放时,视频画面与对应音频无法同步播放的问题。
[0005] 针对上述由于硬件解码带来的时间戳异常,导致的在显示过程中音视频无法同步的问题,目前尚未提出有效的解决方案。

发明内容

[0006] 本发明实施例提供了一种媒体文件中音视频的校准方法及装置,以至少解决由于硬件解码带来的时间戳异常,导致的在显示过程中音视频无法同步的技术问题。
[0007] 根据本发明实施例的一个方面,提供了一种媒体文件中音视频的校准方法,包括:获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,得到视频时间戳列表;检测解码多个源视频数据包之后返回的多个视频时间戳的排列顺序;在检测到多个视频时间戳的排序顺序错误的情况下,采用视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准。
[0008] 根据本发明实施例的另一个方面,提供了一种媒体文件中音视频的校准方法,包括:获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源音频数据包中读取源音频时间戳,得到音频时间戳列表;检测解码多个音视频数据包之后返回的多个音频时间戳的排列顺序;在检测到多个音频时间戳的排序顺序错误的情况下,采用音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准。
[0009] 根据本发明实施例的又一方面,还提供了一种媒体文件中音视频的校准装置,包括:获取模块,用于获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;解码模块,用于对获取模块获取的多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,得到视频时间戳列表;检测模块,用于检测解码多个源视频数据包之后返回的多个视频时间戳的排列顺序;校准模块,用于在检测到多个视频时间戳的排序顺序错误的情况下,采用视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准。
[0010] 根据本发明实施例的再一方面,还提供了一种媒体文件中音视频的校准装置,包括:获取模块,用于获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;解码模块,用于对获取模块获取的多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源音频数据包中读取源音频时间戳,得到音频时间戳列表;检测模块,用于检测解码多个音视频数据包之后返回的多个音频时间戳的排列顺序;校正模块,用于在检测到多个音频时间戳的排序顺序错误的情况下,采用音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准。
[0011] 在本发明实施例中,采用获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,得到视频时间戳列表;检测解码多个源视频数据包之后返回的多个视频时间戳的排列顺序;在检测到多个视频时间戳的排序顺序错误的情况下,采用视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准。达到了解决硬件解码带来的时间戳混乱的目的,从而实现了音视频同步播放的技术效果,进而解决了由于硬件解码带来的时间戳异常,导致的在显示过程中音视频无法同步的技术问题。

附图说明

[0012] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0013] 图1是本发明实施例的一种媒体文件中音视频的校准方法的移动终端的硬件结构框图;
[0014] 图2是根据本发明实施例一的媒体文件中音视频的校准方法的流程图;
[0015] 图3是根据本发明实施例二的媒体文件中音视频的校准方法的流程图;
[0016] 图4是本发明实施例提供的一种媒体文件中音视频的校准方法的流程图;
[0017] 图5是根据本发明实施例一的媒体文件中音视频的校准的装置结构示意图;
[0018] 图6是根据本发明实施例一的一种媒体文件中音视频的校准的装置结构示意图;
[0019] 图7是根据本发明实施例一的另一种媒体文件中音视频的校准的装置结构示意图;
[0020] 图8是根据本发明实施例一的又一种媒体文件中音视频的校准的装置结构示意图;
[0021] 图9是根据本发明实施例二的媒体文件中音视频的校准的装置结构示意图;
[0022] 图10是根据本发明实施例二的一种媒体文件中音视频的校准的装置结构示意图;以及,
[0023] 图11是根据本发明实施例二的另一种媒体文件中音视频的校准的装置结构示意图。

具体实施方式

[0024] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0025] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
[0026] 下面就本申请涉及到的部分名词解释如下:
[0027] 解码单元:这里可以改为解码数据包。通常是指一帧(frame)。衡量一个视频的速率的是帧率即frame rate per second,简写为fps,如果fps 为25,则视频每秒钟播放25个画面。人眼觉得流畅的标准是15fps以上,通常电影是25fps或者30fps。音频也有同样的概念。
[0028] 硬件解码:是指利用手机的芯片的多媒体处理单元进行解码的方式,优点就是效率高,功耗低、热功耗低,缺点是缺乏有力的支持(包括滤镜、字幕等),局限性较大(例如打开硬件解码后PC的节能方面的功能失效 cnq(cpu闲置时降低频率和电压)等),设置较为复杂。硬件解码需要硬件有硬件解码模块、相关的驱动配合、合适的播放软件以及对播放软件正确的设置,缺一则不能开启硬件解码功能。
[0029] 软件解码:是指编程序通过主处理器进行解码的方式,与硬件解码相对,通过解码程序完成对媒体文件的解码,一般以插件的形式执行对媒体文件的解码操作。
[0030] 实施例1
[0031] 本发明实施例,可以提供一种媒体文件中音视频的校准方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0032] 本申请实施例一所提供的方法实施例可以在移动终端或者类似的通信装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种媒体文件中音视频的校准方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器 102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。
[0033] 本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
[0034] 存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的媒体文件中音视频的校准方法对应的程序指令/模块以及对应的数据库数据,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的移动终端通信记录的处理。其中,存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0035] 传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106可以包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络装置相连从而可与互联网进行通讯。在一个实例中,传输装置106为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
[0036] 在上述运行环境下,本申请提供了如图2所示的媒体文件中音视频的校准方法。图2是根据本发明实施例一的媒体文件中音视频的校准方法的流程图。
[0037] 如图2所示,上述媒体文件中音视频的校准方法可以包括如下实施步骤:
[0038] 步骤S20,可以通过图1中的传输装置106来获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包。
[0039] 以安卓Android系统为例,本申请上述步骤S20中的媒体文件可以运行在安卓系统的移动终端中,其中,移动终端可以为:智能手机、平板电脑、电子播放器等。
[0040] 具体的,一个媒体文件可以包括:多个源视频数据包和多个源音频数据包,该多个源视频数据包和多个源音频数据包均为在解码前的视频数据包和音频数据包,例如,在一个包含音频和视频的媒体文件中,音频和视频数据包是交错存放在文件中,单纯从音频和视频的角度看,可以是按照解码顺序排列的。举例:假如用a表示audio,v表示video,用a1,a2,....an 表示一组按照解码顺序的音频数据包,用v1,v2.....vn表示一组按照解码顺序的视频数据包。其中,1,2,……,n为在解码过程中音频或视频数据包的序号,由此可知,在媒体文件中音视频数据包可能以这样的形式存在: a1,a2,a3,v1,v2,a4,a5,v3,v4,a6,v5,....,an,vn。
[0041] 步骤S22,可以通过图1中的处理器102来对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,得到视频时间戳列表。
[0042] 仍旧以步骤S20中的安卓操作系统为例,上述在获取媒体文件后,为了在安卓操作系统的终端上展示媒体文件,则需要对步骤S20中媒体文件中的多个源视频数据包和多个源音频数据包进行解码,同时,从每个源视频数据包中读取源视频时间戳,进而得到视频时间戳列表。
[0043] 此处需要说明的是,上述步骤S22中,从每个源视频数据包中读取源视频时间戳的步骤,也可以在对每个源视频数据包和每个源音频数据包进行解码之前执行。
[0044] 具体的,步骤S22在对多个源视频数据包和多个源音频数据包进行解码之前,可以读取每个源视频数据包中提取源视频时间戳来构成视频时间戳列表,其中,视频时间戳列表可以如表1所示:
[0045] 表1:
[0046]源视频数据包 V1 V2 V3 V4 V5 V6 V7
时间戳(ms) 2 3 4 5 6 7 8
[0047] 由上述表1可知,本申请表1所示的多个源视频数据包可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,多个源视频数据包可以为表1所示的:V1,V2,V3,V4,V5,V6,V7;对应的上述源视频数据包,如表1所示,由此,在解码同时读取的源视频时间戳可以为:2,3,4,5,6,7,8;由此可得到视频时间戳列表,即表1。
[0048] 步骤S24,可以通过图1中的处理器102来检测解码多个源视频数据包之后返回的多个视频时间戳的排列顺序。
[0049] 结合步骤S22,本申请上述步骤S24中提供的方案,需要对解码后的多个源视频数据包对应的多个视频时间戳的排列顺序进行检测,如果检测结果为每个源视频数据包解码后得到的视频时间戳为顺序排序(例如增序排序),则可以确定解码器对视频数据包的解码是无误的;如果检测结果为每个源视频数据包解码后得到的视频时间戳不是顺序排序,则认为解码器对视频数据包进行解码的过程出错,此时,错误的解码结果会导致视频文件播放错误,因此,在进行源音频数据包的时间戳与基准时间戳进行同步校验的过程中,如果确定解码器对视频数据包的解码是无误的情况下,可以基于解码器的解码后的时间戳进行后续的同步校验,并按照解码器解码后的时间戳顺序显示视频数据包。但是若检验结果得到的多个视频时间戳的排序顺序错误,则依据下述步骤S26进行同步校准。
[0050] 步骤S26,可以通过图1中的处理器102来在检测到多个视频时间戳的排序顺序错误的情况下,采用视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准。
[0051] 其中,结合步骤S22和步骤S24,若步骤S22中的表1中源视频时间戳的排序顺序在步骤S24解码后发生错误,则依据基准时间戳对表1中的源视频时间戳的排序顺序进行校准。
[0052] 具体的,假设步骤S24中,多个源视频数据包如下:V1,V2,V3, V4,V5,V6,V7;对应的在解码同时读取的源视频时间戳如下:2,3,4,5,6,7,8;在对多个源视频数据包解码后,对应的在解码后读取的视频时间戳变为了: 8;3,4,2,7,6,5。由此可见视频时间戳发生了异常,即发生了排序的错乱,因此则需要基准时间戳对视频时间戳列表中的源视频时间戳进行同步校准,以便音视频同步播放。
[0053] 例如,基准时间戳为:2,3,4,5,6,7,8;由此通过校准解码后读取的视频时间戳,使得多个视频时间戳的排序顺序恢复正常。
[0054] 此处需要说明的是,本申请上述步骤中的媒体文件可以采用硬件解码或软件解码,两种方式进行解码。例如,在采用硬件解码方式对媒体文件中的视频数据包进行解码的过程中,由于采用硬件进行解码的情况下,都可以在解码完后返回此视频数据包所包含的视频时间戳,但是由于在安卓操作系统的环境下,由于安卓操作系统属于开放式系统,每个机型的硬件不一定能正确的工作,因此,在解码器解码视频数据包错误的原因如下:解码器在正常情况下,能够返回给需要显示的视频数据以及对应的显示时间戳pts,但因为各种原因,解码器虽然返回了需要显示的视频数据,但是携带的显示时间戳pts是混乱的,即非递增的。用这样的pts同步时,视频画面会抖动。因此,本申请提供了一种保证校准结果正确的方案,即通过另外维护一个时间戳队列来进行与基准时间戳完成同步校准的工作,其中,维护的时间戳队列包含的视频时间戳是增序排序的。
[0055] 由此可知,本申请上述实施例提供了一种Android系统中媒体文件中音视频的校准方法。由于在对多个源视频数据包进行解码后,每个源视频数据包中的时间戳的排序顺序发生错误,在与基准时间戳进行校准后恢复了正确的每个源视频数据包中的时间戳的排序顺序。
[0056] 此处需要说明的是,本申请上述实施例所提供的步骤S20至步骤S26 可以在安装了Android操作系统的移动终端上运行,实施过程中,在上述实施例中的移动终端可以是安装了Android操作系统之后的客户端,以在本申请以安卓Android操作系统为例,上述图2所示的实施例实现了媒体文件中音视频的校准过程,其中,采用获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,得到视频时间戳列表;检测解码多个源视频数据包之后返回的多个视频时间戳的排列顺序;在检测到多个视频时间戳的排序顺序错误的情况下,采用视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准。达到了解决硬件解码带来的时间戳混乱的目的,从而实现了音视频同步播放的技术效果,进而解决了由于硬件解码带来的时间戳异常。
[0057] 相比现有相关技术中由于硬件解码带来的时间戳排序顺序错误,本申请提供的方案达到了解决硬件解码带来的时间戳混乱的目的,从而实现了音视频同步播放的技术效果。Android提供的媒体文件中音视频的校准方法具体流程如下:
[0058] 本申请上述实施例一提供的方案中,在源视频数据包可以包括:解码时间戳和显示时间戳的情况下,步骤S22读取源视频数据包中的显示时间戳作为源视频时间戳,其中,该步骤S22中的视频时间戳列表中保存的多个源视频时间戳为依次递增排序。
[0059] 具体的,源视频数据包可以表示为如表2所示:
[0060] 表2:
[0061]
[0062] 由上述表2可知,本申请表2所示的多个源视频数据包可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,在源视频数据包中,时间戳可以包括:解码时间戳(decode timestamp,简称dts)和显示时间戳(present timestamp,简称pts),dts和pts的单位可以为毫秒。上述两个时间戳是成对存在的。
[0063] 由上可知,步骤S22中的视频时间戳列表中保存的多个源视频时间戳则如表3所示:
[0064] 表3:
[0065]源视频数据包编号 3 2 4 1 7 8 6 5
源视频数据包 V3 V2 V4 V1 V7 V8 V6 V5
解码时间戳Dts(ms) 9 10 11 12 13 14 15 17
[0066] 由上述表3可知,本申请表3所示的保存的多个源视频时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,若读取源视频数据包中的解码时间戳作为源视频时间戳,则源视频数据包的显示顺序则为如表3中解码时间戳Dts的显示顺序。
[0067] 优选的,本申请上述实施例一提供的方案中,基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳。
[0068] 具体的,首先基准时间戳可以存在三种形式的时钟机制,视频基准时间戳video_master,音频基准时间戳audio_master,第三方基准时间戳 external_master。由于音频数据包的常用解码方式为软件解码,软件解码能够保障时间戳的正确排序顺序,所以在设定基准时间戳时通常默认是使用audio_master。每个master都有对应的显示时间戳pts。
[0069] 在确定基准时间戳的类型之后,可以按照预先设定的时间戳调用优先级来调用对应的时间戳作为基准时间戳,即预先设定了不同类型的基准时间戳的调用顺序。一种可选的调用方案如下:
[0070] 方案一:检测系统预先设定的每种类型的时间戳的调用优先级,当指定音频基准时间戳audio_master作为调用优先级最高的基准时间戳时,如果音频不存在,就选择第三方基准时间戳external_master作为基准时间戳。
[0071] 方案二,检测系统预先设定的每种类型的时间戳的调用优先级,当指定视频基准时间戳video_master作为调用优先级最高的基准时间戳时,如果视频不存在,就选择音频基准时间戳audio_master作为基准时间戳。
[0072] 方案三,检测系统预先设定的每种类型的时间戳的调用优先级,当指定第三方基准时间戳external_master作为调用优先级最高的基准时间戳时,则确定第三方基准时间戳external_master作为基准时间戳。
[0073] 此处需要说明的是,由于通常默认采用音频基准时间戳audio_master 作为基准时间戳,所以一般会采用方案一所提供的调用方法,而且,由于绝大多数播放的影片都是存在声音的,所以优选情况下,采用将音频基准时间戳audio_master作为基准时间戳。
[0074] 此处还需要说明的是,上述实施例中的第三方基准时间戳 external_master是第三方提供的标准时间戳master,它的显示时间戳pts 的更新,可以来自于视频video和/或音频audio的显示时间戳pts。所以,第三方基准时间戳external也可以是通过及时更新视频或音频(video,audio) 的显示时间戳pts来同步更新的,其自身并不产生时间戳pts,也不会自动更新时间戳。
[0075] 具体的,本申请上述实施例一提供的方案将以基准时间戳为音频基准时间戳为例进行说明:
[0076] 优选的,在基准时间戳的类型为音频基准时间戳的情况下,其中,在采用步骤S26提供的视频时间戳列表中的源视频时间戳与基准时间戳执行同步校准之前,本申请上述实施例一提供的方案还可以包括:
[0077] 步骤S25,获取解码多个源音频数据包之后返回的多个音频时间戳,其中,采用软件解码的方式对源音频数据包进行解码。
[0078] 具体的,仍旧以表1所示的时间戳,获取解码多个源音频数据包之后返回的多个音频时间戳可以如表4所示:
[0079] 表4:
[0080]
[0081] 由上述表4可知,本申请表4所示的多个音频时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,A1至A8表示为多个源音频数据包,其中对应的时间戳则为:9,10,11,12,13,14,15,17。
[0082] 步骤S27,保存多个音频时间戳,其中,每个音频时间戳作为用于执行同步校准的基准时间戳。
[0083] 其中,可以通过图1中的存储器104保存表4中的多个音频时间戳。
[0084] 为实现本申请上述实施例一提供的媒体文件中音视频的校准方法,由于软件解码使得源音频数据包在解码后时间戳保持解码前的排序顺序,即,对多个源音频数据包解码仍旧可以保障显示时间戳的正确排序,所以在本申请中以音频时间戳作为用于执行同步校准的优选方案。
[0085] 其中,将声音基准时间戳作为基准时间戳原因有三:第一,当 audio_master作为基准时间戳时,audio本身作为驱动基准,由系统资源驱动播放硬件(例如喇叭)去播放声音,由于播放过程需要按照系统播放硬件(例如喇叭)所固有的播放速率来控制声音的播放节奏,对于一个确定的媒体文件来说,因为声音参数是确定的,这样硬件的播放速率可以认为是固定不变的基准播放速率,从而通过音频的播放速率来确定视频的播放速率,可以使得视频播放速率是稳定的,即只能把按先后顺序把声音都播放出来,才能读取下一个声音帧。所以声音是可以自身正常播放的。
[0086] 第二,在音频时间戳audio_master作为基准时间戳的情形下,由于每个音频帧audio frame都有显示时间戳pts,每个视频帧video frame也有时间戳pts,那么就可以决定视频video能否显示,这个具体表现就是同步。
[0087] 第三,当存在视频时间戳video_master但音频时间戳audio_master不存在时,我们可以指定video_master,也可以指定extern_master。此时播放视频的节奏由视频本身的速率决定。由于没有声音,不存在音视频同步问题。
[0088] 本申请中设定默认audio_master的原因可以如下:从听觉和视觉上说,听到连续的声音要比看到连续的视频更敏感。即声音是不能断续的,那样会影响影片欣赏,但是视频按照25fps去算,即使下降到15fps,视觉上还是觉得流畅的。另外声音对CPU的消耗远远小于视频,所以用声音作为基准,去驱动整个播放进程比较常见。
[0089] 另外声音由移动终端的喇叭播放,是按音频显示时间戳顺序播放的,即会按顺序播放每个声音frame,这样听上去就是正常的,此节奏会反过来控制整个播放节奏。
[0090] 具体的,本申请上述实施例一提供的方案将以基准时间戳为第三方预设基准时间戳为例进行说明:
[0091] 优选的,在采用硬件解码的方式对源音频数据包进行解码的情况下,调用第三方预设基准时间戳作为基准时间戳,其中,第三方预设基准时间戳为源视频数据包中携带的显示时间戳或源音频数据包中携带的显示时间戳。
[0092] 具体的,本申请上述实施例一提供的方案中可以设定一个第三方的基准时间戳作为用于同步校准的基准时间戳,该第三方预设基准时间戳可以如表5所示:
[0093] 表5:
[0094] 数据包编号 1 2 3 4 5 6 7 8时间戳(ms) 9 10 11 12 13 14 15 17
[0095] 由上述表5可知,本申请表5所示的第三方预设基准时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,如表5所示,本申请上述实施例一提供的方案中设定每个源视频数据包和源音频数据包均需依据表5中的时间戳进行显示,由此通过依据表5提供的数据包编号与时间戳的对应关系实现同步校准,数据包编号可以为源视频数据包或源音频数据包的编号。
[0096] 优选的,本申请上述实施例一提供的方案中,步骤S26,采用的视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准的步骤包括:
[0097] 步骤S261,按顺序依次读取所视频时间戳列表中的每个源视频时间戳。
[0098] 具体的,无论是以音频基准时间戳为基准时间戳,还是以第三方的基准时间戳作为用于同步校准的基准时间戳,首先,需要按顺序读取视频时间戳列表中的每个源视频时间戳。
[0099] 即,假设视频时间戳列表中的每个源视频时间戳如表6所示:
[0100] 表6:
[0101]数据包编号 3 2 4 1 7 8 6 5
源视频数据包 V3 V2 V4 V1 V7 V8 V6 V5
时间戳(ms) 9 10 11 12 13 14 15 17
[0102] 由上述表6可知,本申请表6所示的视频时间戳列表中的每个源视频时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,依据数据包编号读取视频时间戳列表中的每个源视频时间戳得到:由 1至8分别得到源视频数据包:V1,V2,V3,V4,V5,V6,V7,V8;对应的时间戳为:12,10,9,11,17,15,13,14。
[0103] 步骤S262,将每个源视频时间戳分别与对应的基准时间戳进行比对。
[0104] 假设基准时间戳如表7所示:
[0105] 表7:
[0106]数据包编号 1 2 3 4 5 6 7 8
时间戳(ms) 9 10 11 12 13 14 15 17
[0107] 由上述表7可知,本申请表7所示的基准时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,表7中的时间戳排序对应数据包编号依次递增排序,得到如表7所示的基准时间戳。
[0108] 具体的,在比对的过程中若任意一个源视频时间戳与对应的基准时间戳的差值大于等于播放阈值,则进行步骤S263;若任意一个源视频时间戳与对应的基准时间戳的差值小于播放阈值,则进行步骤S264。
[0109] 步骤S263,在任意一个源视频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整任意一个源视频时间戳对应的源视频数据包的播放时间。
[0110] 具体的,结合步骤S261中的表6和步骤S262中的表7所示,以数据包编号为顺序,分别对数据包1至8中源视频时间戳与对应的基准时间戳进行相减,若差值大于等于播放阈值,则调整任意一个源视频时间戳对应的源视频数据包的播放时间,即,假设播放阈值为-2~2毫秒,一种可选实施例中,若V1对应的时间戳为第12毫秒,对应的基准时间戳为第9 毫秒,12-9=3,3>2,则可以确定需要调整视频数据包V1的播放时间,此时需要进一步判断视频数据包V1的调整方式,由于12毫秒大于9毫秒,因此,可以确定视频数据包V1已经超前到达,此时停止播放该视频数据包V1,等待下一次播放;另外一种可选实施例中,若V1对应的时间戳为第6毫秒,对应的基准时间戳为第9毫秒,6-9=-3,-2>-3,则可以确定需要调整视频数据包V1的播放时间,此时需要进一步判断视频数据包V1 的调整方式,由于6毫秒小于9毫秒,因此,可以确定视频数据包V1没有按时到达,此时为了达到同步播放且减少系统资源浪费的目的,将该视频数据包V1丢弃,通过上述两种方案可以达到音视频同步的效果。
[0111] 步骤S264,在任意一个源视频时间戳与对应的基准时间戳的差值小于播放阈值的情况下,将按照任意一个源视频时间戳对应的播放时间来播放对应的源视频数据包。
[0112] 具体的,结合步骤S261中的表6和步骤S262中的表7所示,以数据包编号为顺序,分别对数据包1至8中源视频时间戳与对应的基准时间戳进行相减,若差值小于播放阈值,则将按照任意一个源视频时间戳对应的播放时间来播放对应的源视频数据包,即,假设播放阈值为-2~2毫秒,若V7对应的时间戳为第13毫秒,对应的基准时间戳为第15毫秒,13-15=-2, -2处于(-2,2)毫秒的范围内,则正常播放V7,以达到音视频同步的效果。
[0113] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如 ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0114] 实施例2
[0115] 本申请除上述实施例一提供的如图2所示的方案外,还包括另一种媒体文件中音视频的校准方法,具体如图3所示,区别于图2所示的方案,图3提供的技术方案是通过读取源音频时间戳,从而得到音频时间戳列表,进一步在检测到多个音频时间戳的排序顺序错误的情况下,采用音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准,具体如下:
[0116] 在图1提供的运行环境下,本申请提供了如图3所示的媒体文件中音视频的校准方法。图3是根据本发明实施例二的媒体文件中音视频的校准方法的流程图。
[0117] 如图3所示,上述媒体文件中音视频的校准方法可以包括如下实施步骤:
[0118] 步骤S30,可以通过图1中的传输装置106来获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包。
[0119] 可以仍旧以安卓Android系统为例,本申请上述步骤S30可以与图2 所示的步骤S20一样,在步骤S30中的媒体文件可以运行在安卓系统的移动终端中,其中,移动终端可以为:智能手机、平板电脑、电子播放器等。
[0120] 具体的,一个媒体文件可以包括:多个源视频数据包和多个源音频数据包,该多个源视频数据包和多个源音频数据包均为在解码前的视频数据包和音频数据包,例如,在一个包含音频和视频的媒体文件中,音频和视频数据包是交错存放在文件中,单纯从音频和视频的角度看,可以是按照解码顺序排列的。举例:假如用a表示audio,v表示video,用a1,a2,....an 表示一组按照解码顺序的音频数据包,用v1,v2.....vn表示一组按照解码顺序的视频数据包。其中,1,2,……,n为在解码过程中音频或视频数据包的序号,由此可知,在媒体文件中音视频数据包可能以这样的形式存在: a1,a2,a3,v1,v2,a4,a5,v3,v4,a6,v5,....,an,vn。
[0121] 步骤S32,可以通过图1中的处理器102来对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源音频数据包中读取源音频时间戳,得到音频时间戳列表。
[0122] 仍旧以步骤S30中的安卓操作系统为例,上述在获取媒体文件后,为了在安卓操作系统的终端上展示媒体文件,则需要对步骤S30中媒体文件中的多个源视频数据包和多个源音频数据包进行解码,同时,从每个源音频数据包中读取源音频时间戳,进而得到音频时间戳列表。
[0123] 此处需要说明的是,上述步骤S32中,从每个源音频数据包中读取源音频时间戳的步骤,也可以在对每个源视频数据包和每个源音频数据包进行解码之前执行。
[0124] 具体的,步骤S32在对多个源视频数据包和多个源音频数据包进行解码之前,可以读取每个源音频数据包中提取源音频时间戳来构成音频时间戳列表,其中,音频时间戳列表可以如表8所示:
[0125] 表8:
[0126]源音频数据包 A1 A2 A3 A4 A5 A6 A7
时间戳(ms) 2 3 4 5 6 7 8
[0127] 由上述表8可知,本申请表8所示的音频时间戳列表可以以实现媒体文件中音视频的校准方法为准,具体不做限定,由上述表8可知,本申请表8所示的多个源音频数据包可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,多个源音频数据包可以为表8所示的:A1, A2,A3,A4,A5,A6,A7;对应的上述源音频数据包,如表8所示,在解码同时读取的源音频时间戳可以为:2,3,4,5,6,7,8;由此可得到音频时间戳列表,即表8。
[0128] 步骤S34,可以通过图1中的处理器102来检测解码多个音视频数据包之后返回的多个音频时间戳的排列顺序。
[0129] 结合步骤S32,本申请上述步骤S34中提供的方案,需要对解码后的多个源音频数据包对应的多个音频时间戳的排列顺序进行检测,如果检测结果为每个源音频数据包解码后得到的音频时间戳为顺序排序(例如增序排序),则可以确定解码器对音频数据包的解码是无误的;如果检测结果为每个源音频数据包解码后得到的音频时间戳不是顺序排序,则认为解码器对视频数据包进行解码的过程出错,此时,错误的解码结果会导致音频文件播放错误,因此,在进行源音频数据包的时间戳与基准时间戳进行同步校验的过程中,如果确定解码器对音频数据包的解码是无误的情况下,可以基于解码器的解码后的时间戳进行后续的同步校验,并按照解码器解码后的时间戳顺序显示音频数据包。但是若检验结果得到的多个音频时间戳的排序顺序错误,则依据下述步骤S36进行同步校准。
[0130] 步骤S36,可以通过图1中的处理器102来在检测到多个音频时间戳的排序顺序错误的情况下,采用音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准。
[0131] 其中,结合步骤S32和步骤S34,若步骤S32中的表8中源音频时间戳的排序顺序在步骤34解码后发生错误,则依据基准时间戳对表8中的源音频时间戳的排序顺序进行校准。
[0132] 具体的,假设步骤S34中,多个源音频数据包如下:A1,A2,A3, A4,A5,A6,A7;对应的在解码同时读取的源音频时间戳如下:2,3,4,5,6,7,8;在对多个源音频数据包解码后,对应的在解码后读取的音频时间戳变为了: 8;3,4,2,7,6,5。由此可见音频时间戳发生了异常,即发生了排序的错乱,因此则需要基准时间戳对音频时间戳列表中的源音频时间戳进行同步校准,以便音视频同步播放。
[0133] 例如,基准时间戳为:2,3,4,5,6,7,8;由此通过校准解码后读取的音频时间戳,使得多个音频时间戳的排序顺序恢复正常。
[0134] 此处需要说明的是,本申请上述步骤中的媒体文件可以采用硬件解码或软件解码,两种方式进行解码。例如,在采用硬件解码方式对媒体文件中的音频数据包进行解码的过程中,由于采用硬件进行解码的情况下,都可以在解码完后返回此视频数据包所包含的视频时间戳,但是由于在安卓操作系统的环境下,由于安卓操作系统属于开放式系统,每个机型的硬件不一定能正确的工作,因此,在解码器解码音频数据包错误的原因如下:解码器在正常情况下,能够返回给需要显示的音频数据以及对应的显示时间戳pts,但因为各种原因,解码器虽然返回了需要显示的音频数据,但是携带的显示时间戳pts是混乱的,即非递增的。用这样的pts同步时,音频会发生抖动。因此,本申请提供了一种保证校准结果正确的方案,即通过另外维护一个时间戳队列来进行与基准时间戳完成同步校准的工作,其中,维护的时间戳队列包含的视频时间戳是增序排序的。
[0135] 由此可知,本申请上述实施例提供了一种Android系统中媒体文件中音视频的校准方法。由于在对多个源音频数据包进行解码后,每个源音频数据包中的时间戳的排序顺序发生错误,在与基准时间戳进行校准后恢复了正确的每个源音频数据包中的时间戳的排序顺序。
[0136] 此处需要说明的是,本申请上述实施例所提供的步骤S30至步骤S36 可以在安装了Android操作系统的移动终端上运行,实施过程中,在上述实施例中的移动终端可以是安装了Android操作系统之后的客户端,以在本申请以安卓Android操作系统为例,上述图3所示的实施例实现了媒体文件中音视频的校准过程,其中,采用获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源音频数据包中读取源音频时间戳,得到音频时间戳列表;检测解码多个音视频数据包之后返回的多个音频时间戳的排列顺序;在检测到多个音频时间戳的排序顺序错误的情况下,采用音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准。达到了解决硬件解码带来的时间戳混乱的目的,从而实现了音视频同步播放的技术效果,进而解决了由于硬件解码带来的时间戳异常。
[0137] 相比现有相关技术中由于硬件解码带来的时间戳排序顺序错误,本申请提供的方案达到了解决硬件解码带来的时间戳混乱的目的,从而实现了音视频同步播放的技术效果。Android提供的媒体文件中音视频的校准方法具体流程如下:
[0138] 本申请上述实施例二提供步骤S30至步骤S36的方案中,在源音频数据包包括:解码时间戳和显示时间戳的情况下,读取源音频数据包中的显示时间戳作为源音频时间戳,其中,音频时间戳列表中保存的多个源音频时间戳为依次递增排序。
[0139] 具体的,源视频数据包可以表示为如表9所示:
[0140] 表9
[0141]
[0142] 由上述表9可知,本申请表9所示的源视频数据包可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,如表9所示,在源音频数据包中,解码时间戳(decode timestamp,简称dts),一个是显示时间戳 (present timestamp,简称pts),dts,pts假设单位为毫秒。上述两个时间戳是成对存在的。
[0143] 由上可知,步骤S32中的音频时间戳列表中保存的多个源音频时间戳则如表10所示:
[0144] 表10
[0145]源音数据包编号 3 2 4 1 7 8 6 5
源音频数据包 A3 A2 A4 A1 A7 A8 A6 A5
解码时间戳Dts(ms) 9 10 11 12 13 14 15 17
[0146] 由上述表10可知,本申请表10所示的音频时间戳列表中保存的多个源音频时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,若读取源音频数据包中的解码时间戳作为源音频时间戳,则源音频数据包的显示顺序则为如表10中解码时间戳Dts的显示顺序。
[0147] 优选的,本申请上述实施例二提供步骤S30至步骤S36的方案中,基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:视频基准时间戳、第三方预设基准时间戳和音频基准时间戳。
[0148] 具体的,首先基准时间戳可以存在三种形式的时钟机制,视频基准时间戳video_master,音频基准时间戳audio_master,第三方基准时间戳 external_master。由于音频数据包的常用解码方式为软件解码,软件解码能够保障时间戳的正确排序顺序,所以在设定基准时间戳时通常默认是使用audio_master。每个master都有对应的显示时间戳pts。
[0149] 在确定基准时间戳的类型之后,可以按照预先设定的时间戳调用优先级来调用对应的时间戳作为基准时间戳,即预先设定了不同类型的基准时间戳的调用顺序。一种可选的调用方案如下:
[0150] 方案一:检测系统预先设定的每种类型的时间戳的调用优先级,当指定音频基准时间戳audio_master作为调用优先级最高的基准时间戳时,如果音频不存在,就选择第三方基准时间戳external_master作为基准时间戳。
[0151] 方案二,检测系统预先设定的每种类型的时间戳的调用优先级,当指定视频基准时间戳video_master作为调用优先级最高的基准时间戳时,如果视频不存在,就选择音频基准时间戳audio_master作为基准时间戳。
[0152] 方案三,检测系统预先设定的每种类型的时间戳的调用优先级,当指定第三方基准时间戳external_master作为调用优先级最高的基准时间戳时,则确定第三方基准时间戳external_master作为基准时间戳。
[0153] 此处需要说明的是,由于通常默认采用音频基准时间戳audio_master 作为基准时间戳,所以一般会采用方案一所提供的调用方法,而且,由于绝大多数播放的影片都是存在声音的,所以优选情况下,采用将音频基准时间戳audio_master作为基准时间戳。
[0154] 此处还需要说明的是,上述实施例中的第三方基准时间戳 external_master是第三方提供的标准时间戳master,它的显示时间戳pts 的更新,可以来自于视频video和/或音频audio的显示时间戳pts。所以,第三方基准时间戳external也可以是通过及时更新视频或音频(video,audio) 的显示时间戳pts来同步更新的,其自身并不产生时间戳pts,也不会自动更新时间戳。
[0155] 具体的,本申请上述实施例二提供的方案将以基准时间戳为第三方预设基准时间戳为例进行说明:
[0156] 优选的,在采用硬件解码的方式对源音频数据包进行解码的情况下,调用第三方预设基准时间戳作为基准时间戳,其中,第三方预设基准时间戳为源视频数据包中携带的显示时间戳或源音频数据包中携带的显示时间戳。
[0157] 具体的,本申请上述实施例二提供的方案中可以设定一个第三方的基准时间戳作为用于同步校准的基准时间戳,该第三方预设基准时间戳可以如表11所示:
[0158] 表11:
[0159] 数据包编号 1 2 3 4 5 6 7 8时间戳(ms) 9 10 11 12 13 14 15 17
[0160] 由上述表11可知,本申请表11所示的第三方预设基准时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,如表11 所示,本申请上述实施例二提供的方案中设定每个源视频数据包和源音频数据包均需依据表11中的时间戳进行显示,由此通过依据表11提供的数据包编号与时间戳的对应关系实现同步校准,数据包编号可以为源视频数据包或源音频数据包的编号。
[0161] 优选的,本申请上述实施例二提供的方案中,步骤S36,采用的音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准的步骤包括:
[0162] 步骤S361,按顺序依次读取音频时间戳列表中的每个源音频时间戳;
[0163] 具体的,无论是以音频基准时间戳为基准时间戳,还是以第三方的基准时间戳作为用于同步校准的基准时间戳,首先,需要按顺序读取音频时间戳列表中的每个源音频时间戳。
[0164] 即,假设音频时间戳列表中的每个源音频时间戳如表12所示:
[0165] 表12:
[0166]数据包编号 3 2 4 1 7 8 6 5
源音频数据包 A3 A2 A4 A1 A7 A8 A6 A5
时间戳(ms) 9 10 11 12 13 14 15 17
[0167] 由上述表12可知,本申请表12所示的音频时间戳列表中的每个源音频时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,依据数据包编号读取视频时间戳列表中的每个源视频时间戳得到:由1至8分别得到:A1,A2,A3,A4,A5,A6,A7,A8;对应的时间戳为:12,10,9,11,17,15,13,14。
[0168] 步骤S362,将每个源音频时间戳分别与对应的基准时间戳进行比对;
[0169] 假设基准时间戳如表13所示:
[0170] 表13
[0171]数据包编号 1 2 3 4 5 6 7 8
时间戳 9 10 11 12 13 14 15 17
[0172] 由上述表13可知,本申请表13所示的基准时间戳可以以实现媒体文件中音视频的校准方法为准,具体不做限定,其中,表13中的时间戳排序对应数据包编号依次递增排序,得到如表13所示的基准时间戳。
[0173] 具体的,在比对的过程中若任意一个源视频时间戳与对应的基准时间戳的差值大于等于播放阈值,则进行步骤S363;若任意一个源视频时间戳与对应的基准时间戳的差值小于播放阈值,则进行步骤S364。
[0174] 步骤S363,在任意一个源音频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整任意一个源音频时间戳对应的源音频数据包的播放时间;
[0175] 具体的,结合步骤S361中的表12和步骤S362中的表13所示,以数据包编号为顺序,分别对数据包1至8中源音频时间戳与对应的基准时间戳进行相减,若差值大于等于播放阈值,则调整任意一个源视频时间戳对应的源音频数据包的播放时间,即,假设播放阈值为-2~2毫秒,一种可选实施例中,若A1对应的时间戳为第12毫秒,对应的基准时间戳为第9 毫秒,12-9=3,2>3>-2,则可以确定需要调整音频数据包A1的播放时间,此时需要进一步判断音频数据包V1的调整方式,由于12毫秒大于9毫秒,因此,可以确定音频数据包A1已经超前到达,此时停止播放该音频数据包A1,等待下一次播放;另外一种可选实施例中,若A1对应的时间戳为第6毫秒,对应的基准时间戳为第9毫秒,6-9=-3,-2>-3,则可以确定需要调整音频数据包A1的播放时间,此时需要进一步判断音频数据包A1 的调整方式,由于6毫秒大于9毫秒,因此,可以确定音频数据包A1没有按时到达,此时为了达到同步播放且减少系统资源浪费的目的,将该音频数据包A1丢弃,通过上述两种方案可以达到音音频同步的效果。
[0176] 步骤S364,在任意一个源音频时间戳与对应的基准时间戳的差值小于播放阈值的情况下,将按照任意一个源音频时间戳对应的播放时间来播放对应的源音频数据包。
[0177] 具体的,结合步骤S361中的表12和步骤S362中的表13所示,以数据包编号为顺序,分别对数据包1至8中源音频时间戳与对应的基准时间戳进行相减,若差值小于播放阈值,则将按照任意一个源音频时间戳对应的播放时间来播放对应的源音频数据包,即,假设播放阈值为-2~2毫秒,若A7对应的时间戳为第13毫秒,对应的基准时间戳为第15毫秒,13-15=-2, -2<0处于(-2,2)毫秒的范围内,则正常播放A7,以达到音视频同步的效果。
[0178] 本申请上述图3对应的实施例二提供的方案,区别于图2所示的实施例一提供的方案,图3中源音频数据包通过硬件解码,进而在解码后源音频时间戳产生错误的情况下,通过基准时间戳校准的过程。
[0179] 此外,本申请除上述图2对应的实施例一提供的方案和图3对应的实施例二提供的方案外,还包括:又一种媒体文件中音视频的校准方法,如图4所示,图4是本发明实施例提供的一种媒体文件中音视频的校准方法的流程图,仍适用于图1所示的运行环境下,具体如图4所示,区别于图 2与图3所示的对应的媒体文件中音视频的校准方法,图4中,当源视频数据包与源音频数据包均通过硬件解码时,在解码后的视频时间戳和音频时间戳的排序顺序均发生错误时,以第三方预设基准时间戳为基准时间戳校正。具体如下:
[0180] 步骤S40,可以通过图1中的传输装置106来获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包。
[0181] 步骤S42,可以通过图1中的处理器102来对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,和从每个源音频数据包中读取源音频时间戳,得到音视频时间戳列表。
[0182] 步骤S44,可以通过图1中的处理器102来检测解码多个视频数据包和多个音视频数据包之后返回的对应的多个视频时间戳和多个音频时间戳的排列顺序。
[0183] 步骤S46,可以通过图1中的处理器102来在检测到多个视频时间戳和多个音频时间戳的排序顺序错误的情况下,采用音视频时间戳列表中的音视频时间戳和视频时间戳,与对应的基准时间戳执行同步校准。
[0184] 其中步骤S46中基准时间戳可以为第三方预设基准时间戳,结合步骤 S40至步骤S46,首先获取媒体文件,其次在对多个源视频数据包和多个源音频数据包解码时(或之前),读取多个源视频数据包中的源视频时间戳,以及读取多个源音频数据包中的多个源音频时间戳,得打音视频时间戳列表,第三,检测解码后的多个视频数据包和多个音视频数据包之后返回的对应的多个视频时间戳和多个音频时间戳的排列顺序是否发生错误,如果错误,则通过基准时间戳与音视频时间戳列表中的音视频时间戳和视频时间戳执行同步校准,以解决由于硬件解码带来的时间戳异常,导致的在显示过程中音视频无法同步的技术问题。
[0185] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0186] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如 ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0187] 实施例3
[0188] 图5是根据本发明实施例一的媒体文件中音视频的校准的装置结构示意图。
[0189] 根据本发明实施例,还提供了一种用于对应于实施上述方法实施例一的装置,如图5所示,该装置可以应用在客户端上,下面从客户端运行上述装置的角度对本申请的实施过程进行详细描述。
[0190] 该装置可以包括:获取模块52、解码模块54、检测模块56、校准模块58,[0191] 其中,获取模块52,用于获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;
[0192] 解码模块54,与获取模块52建立电连接,用于对获取模块获取的多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,得到视频时间戳列表;
[0193] 检测模块56,与解码模块54建立电连接,用于检测解码多个源视频数据包之后返回的多个视频时间戳的排列顺序;
[0194] 校准模块58,与检测模块56建立电连接,用于在检测到多个视频时间戳的排序顺序错误的情况下,采用视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准。
[0195] 此处需要说明的是,此处需要说明的是,上述获取模块52、解码模块 54、检测模块56、校准模块58对应于实施例一中的步骤S20至步骤S26,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的移动终端10中。
[0196] 优选的,在源视频数据包包括:解码时间戳和显示时间戳的情况下,解码模块54,用于读取源视频数据包中的解码时间戳作为源视频时间戳,其中,视频时间戳列表中保存的多个源视频时间戳为依次递增排序。
[0197] 此处需要说明的是,此处需要说明的是,上述解码模块54对应于实施例一中的步骤S24,该模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的移动终端10中。
[0198] 优选的,基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳。
[0199] 优选的,图6是根据本发明实施例一的一种媒体文件中音视频的校准的装置结构示意图,如图6所示,在基准时间戳的类型为音频基准时间戳的情况下,其中,在采用视频时间戳列表中的源视频时间戳与基准时间戳执行同步校准之前,该装置还包括:读取模块62和存储模块64,其中,
[0200] 读取模块62,用于获取解码多个源音频数据包之后返回的多个音频时间戳,其中,采用软件解码的方式对源音频数据包进行解码;
[0201] 存储模块64,与读取模块62建立电连接,用于保存多个音频时间戳,其中,每个音频时间戳作为用于执行同步校准的基准时间戳。
[0202] 此处需要说明的是,此处需要说明的是,上述读取模块62和存储模块64对应于实施例一中的步骤S25和步骤S27,该两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的移动终端10中。
[0203] 优选的,图7是根据本发明实施例一的另一种媒体文件中音视频的校准的装置结构示意图,如图7所示,在采用硬件解码的方式对源音频数据包进行解码的情况下,解码模块54包括:
[0204] 调用单元541,用于调用第三方预设基准时间戳作为基准时间戳,其中,第三方预设基准时间戳为源视频数据包中携带的显示时间戳或源音频数据包中携带的显示时间戳。
[0205] 优选的,图8是根据本发明实施例一的又一种媒体文件中音视频的校准的装置结构示意图,如图8所示,校准模块58包括:读取单元581、比对单元582、第一调整单元583和第二调整单元584,其中,
[0206] 读取单元581,用于按顺序依次读取视频时间戳列表中的每个源视频时间戳;
[0207] 比对单元582,与读取单元581建立电连接,用于将读取单元读取的每个源视频时间戳分别与对应的基准时间戳进行比对;
[0208] 第一调整单元583,与比对单元582建立电连接,用于在任意一个源视频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整任意一个源视频时间戳对应的源视频数据包的播放时间;
[0209] 第二调整单元584,与比对单元582建立电连接,用于在任意一个源视频时间戳与对应的基准时间戳的差值小于播放阈值的情况下,将按照任意一个源视频时间戳对应的播放时间来播放对应的源视频数据包。
[0210] 此处需要说明的是,此处需要说明的是,上述读取单元581、比对单元582、第一调整单元583和第二调整单元584对应于实施例一中的步骤 S261至步骤S264,该四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的移动终端10中。
[0211] 实施例4
[0212] 图9是根据本发明实施例二的媒体文件中音视频的校准的装置结构示意图。
[0213] 根据本发明实施例,还提供了一种用于对应于实施上述方法实施例二的装置,如图9所示,该装置可以应用在客户端上,下面从客户端运行上述装置的角度对本申请的实施过程进行详细描述。
[0214] 该装置可以包括:获取模块92、解码模块94、检测模块96和校正模块98,其中,[0215] 该装置包括:获取模块92,用于获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包;
[0216] 解码模块94,与获取模块92建立电连接,用于对获取模块获取的多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源音频数据包中读取源音频时间戳,得到音频时间戳列表;
[0217] 检测模块96,与解码模块94建立电连接,用于检测解码多个音视频数据包之后返回的多个音频时间戳的排列顺序;
[0218] 校正模块98,与检测模块96建立电连接,用于在检测到多个音频时间戳的排序顺序错误的情况下,采用音频时间戳列表中的源音频时间戳与对应的基准时间戳执行同步校准。
[0219] 此处需要说明的是,此处需要说明的是,上述获取模块92、解码模块 94、检测模块96和校正模块98对应于实施例二中的步骤S30至步骤S36,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例二所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例二提供的移动终端10中。
[0220] 优选的,在源音频数据包包括:解码时间戳和显示时间戳的情况下,解码模块94,用于读取源音频数据包中的解码时间戳作为源音频时间戳,其中,音频时间戳列表中保存的多个源音频时间戳为依次递增排序。
[0221] 此处需要说明的是,此处需要说明的是,上述解码模块94对应于实施例二中的步骤S34,该模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例二所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例二提供的移动终端10中。
[0222] 优选的,基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:视频基准时间戳、第三方预设基准时间戳和音频基准时间戳。
[0223] 优选的,图10是根据本发明实施例二的一种媒体文件中音视频的校准的装置结构示意图,如图10所示,在采用硬件解码的方式对源音频数据包进行解码的情况下,解码模块94包括:
[0224] 调用单元941,用于调用第三方预设基准时间戳作为基准时间戳,其中,第三方预设基准时间戳为源视频数据包中携带的显示时间戳或源音频数据包中携带的显示时间戳。
[0225] 优选的,图11是根据本发明实施例二的一种媒体文件中音视频的校准的装置结构示意图,如图11所示,校正模块98包括:
[0226] 读取单元981,用于按顺序依次读取音频时间戳列表中的每个源音频时间戳;
[0227] 对比单元982,与读取单元981建立电连接,用于将读取单元读取的每个源音频时间戳分别与对应的基准时间戳进行比对;
[0228] 第一调整单元983,与对比单元982建立电连接,用于在任意一个源音频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整任意一个源音频时间戳对应的源音频数据包的播放时间;
[0229] 第二调整单元984,与对比单元982建立电连接,用于在任意一个源音频时间戳与对应的基准时间戳的差值小于播放阈值的情况下,将按照任意一个源音频时间戳对应的播放时间来播放对应的源音频数据包。
[0230] 此处需要说明的是,此处需要说明的是,上述读取单元981、比对单元982、第一调整单元983和第二调整单元984对应于实施例二中的步骤 S361至步骤S364,该四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例二所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例二提供的移动终端10中。
[0231] 实施例5
[0232] 本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一在媒体文件中音视频的校准的方法所执行的程序代码。
[0233] 可选地,在本实施例中,上述存储介质可以位于计算机网络中的多个网络装置中的至少一个网络装置。
[0234] 可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
[0235] S1,获取媒体文件,媒体文件包括:多个源视频数据包和多个源音频数据包。
[0236] S3,对多个源视频数据包和多个源音频数据包进行解码,并在对每个源视频数据包和每个源音频数据包进行解码的同时,从每个源视频数据包中读取源视频时间戳,得到视频时间戳列表。
[0237] S5,检测解码多个源视频数据包之后返回的多个视频时间戳的排列顺序。
[0238] S7,在检测到多个视频时间戳的排序顺序错误的情况下,采用视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准。
[0239] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:解码时间戳和显示时间戳的情况下,读取源视频数据包中的解码时间戳作为源视频时间戳,其中,视频时间戳列表中保存的多个源视频时间戳为依次递增排序。
[0240] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:基准时间戳包括以下任意一种类型:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳,其中,不同类型的基准时间戳的调用优先级顺序为:音频基准时间戳、第三方预设基准时间戳和视频基准时间戳。
[0241] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在基准时间戳的类型为音频基准时间戳的情况下,其中,在采用步骤S26提供的视频时间戳列表中的源视频时间戳与基准时间戳执行同步校准之前,本申请上述实施例五提供的方案还可以包括:获取解码多个源音频数据包之后返回的多个音频时间戳,其中,采用软件解码的方式对源音频数据包进行解码。保存多个音频时间戳,其中,每个音频时间戳作为用于执行同步校准的基准时间戳
[0242] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在采用硬件解码的方式对源音频数据包进行解码的情况下,调用第三方预设基准时间戳作为基准时间戳,其中,第三方预设基准时间戳为源视频数据包中携带的显示时间戳或源音频数据包中携带的显示时间戳。。
[0243] 可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:采用的视频时间戳列表中的源视频时间戳与对应的基准时间戳执行同步校准的步骤包括:按顺序依次读取所视频时间戳列表中的每个源视频时间戳;将每个源视频时间戳分别与对应的基准时间戳进行比对;在任意一个源视频时间戳与对应的基准时间戳的差值大于等于播放阈值的情况下,调整任意一个源视频时间戳对应的源视频数据包的播放时间;在任意一个源视频时间戳与对应的基准时间戳的差值小于播放阈值的情况下,将按照任意一个源视频时间戳对应的播放时间来播放对应的源视频数据包。
[0244] 可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0245] 可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
[0246] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0247] 上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机装置(可为个人计算机、服务器或者网络装置等)执行本发明各个实施例所述方法的全部或部分步骤。
[0248] 在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0249] 在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0250] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0251] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0252] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
[0253] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端装置相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器 (Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。