一种音视频同步播放的方法和装置转让专利

申请号 : CN200810115078.2

文献号 : CN101290790B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李志刚

申请人 : 北京中星微电子有限公司

摘要 :

本发明公开了一种音视频同步播放的方法,所述方法包括:打开音视频文件;记录播放所述音视频的累计时间;在计时器中断中,判断当前的累计时间和所述音视频文件中当前帧的时间戳的偏差是否在一帧时间之内;如果否,则调节视频文件的当前帧为目标帧,所述目标帧的时间戳与所述当前的累计时间的偏差在一帧时间之内;播放调节后的音视频。本发明还公开了一种音视频同步播放的装置。本发明通过在每次中断处理中判断当前的累计播放时间和文件中的时间戳的偏差是否在一帧时间之内,如果提前了一帧则退出中断处理,如果滞后一帧,则丢掉一帧,直接显示下一帧的方法,将音视频的偏差始终控制在一帧之内,使得音视频的播放保持同步。

权利要求 :

1.一种音视频同步播放的方法,其特征在于,所述方法包括以下步骤:打开音视频文件;

记录播放所述音视频的累计时间;

在计时器中断中,判断当前的累计时间和所述音视频文件中当前帧的时间戳的偏差是否在一帧时间之内;

如果否,则根据当前的累计时间与当前帧的时间戳的先后关系调节音视频文件的目标帧;

播放调节后的音视频文件;

在所述调节音视频文件的步骤中,具体包括:当所述当前的累计时间提前于当前帧的时间戳时,所述目标帧为所述当前帧的上一帧,退出所述计时器中断处理,继续显示所述当前帧的上一帧;

当所述当前的累计时间滞后于当前帧的时间戳时,所述目标帧为所述当前帧的下一帧,显示所述目标帧,并将所述当前帧和所述目标帧的缓冲的标志都置为已显示。

2.如权利要求1所述音视频同步播放的方法,其特征在于,在所述记录播放音视频的累计时间的步骤中,具体包括:在开始播放所述音视频时,启动一个长计时器,所述长计时器的初始值为0。

3.如权利要求2所述音视频同步播放的方法,其特征在于,在所述判断当前的累计时间和音视频文件中当前帧的时间戳的偏差是否在一帧时间之内的步骤中,具体包括:获取所述长计时器当前的计数时间;

获取所述音视频文件中当前帧的时间戳;

计算所述计数时间和所述时间戳的偏差;

判断所述偏差是否在所述音视频文件的一帧时间之内。

4.如权利要求1所述音视频同步播放的方法,其特征在于,在所述播放调节后的音视频的步骤中,具体包括:从所述音视频文件中读取音频和视频数据到缓冲中;

将所述音频数据写到音频播放的先入先出缓冲器中。

5.一种音视频同步播放的装置,其特征在于,所述装置包括:累计时间记录单元,用于记录播放音视频的累计时间;

时间戳获取单元,用于获取音视频文件中当前帧的时间戳;

判断单元,用于在计时器中断中,判断所述累计时间记录单元记录的当前累计时间和所述时间戳获取单元获取的时间戳的偏差是否在一帧时间之内;

调节单元,用于当所述判断单元的判断结果为否时,当所述当前的累计时间提前于当前帧的时间戳时,调节所述目标帧为所述当前帧的上一帧,当所述当前的累计时间滞后于当前帧的时间戳时,调节所述目标帧为所述当前帧的下一帧;

音视频播放单元,用于播放所述调节单元调节后的音视频。

6.如权利要求5所述音视频同步播放的装置,其特征在于,所述累计时间记录单元为长计时器,所述长计时器的初始值为0。

说明书 :

一种音视频同步播放的方法和装置

技术领域

[0001] 本发明涉及音视频技术领域,特别是涉及一种音视频同步播放的方法和装置。 [0002] 背景技术
[0003] 随着多媒体技术的不断发展,多媒体文件(例如音频文件、视频文件、音视频文件、幻灯片文件等)可以在不同的平台上播放,而在播放音视频文件时,音视频不同步会对该音视频的欣赏造成很大的影响。
[0004] 目前,在播放音视频文件时,一般采用的是在Timer中断中向音频设备传输音频数据,同时显示视频图片的机制。这种机制采用的音视频播放相互制约的方法,来实现音视频的相对同步。
[0005] 在实现本发明过程中,发明人发现现有技术中至少存在如下问题:由于系统资源和操作系统的调度的原因,会造成音视频之间的播放时间出现误差,使得音视频出现不同步现象,从而影响观看效果。
[0006] 发明内容
[0007] 本发明实施例要解决的问题是提供一种音视频同步播放的方法和装置,以克服现有技术中播放音视频文件不同步的缺陷。
[0008] 为达到上述目的,本发明实施例的技术方案提供一种音视频同步播放的方法,所述方法包括以下步骤:打开音视频文件;记录播放所述音视频的累计时间;在计时器中断中,判断当前的累计时间和所述音视频文件中当前帧的时间戳的偏差是否在一帧时间之内;如果否,则根据当前的累计时间与当前帧的时间戳的先后关系调节音视频文件的目标帧,所述目标帧的时间戳与所述当前的累计时间的偏差在一帧时间之内;播放调节后的音视频。
[0009] 其中,在所述记录播放音视频的累计时间的步骤中,具体包括: 在开始播放所述音视频时,启动一个长计时器,所述长计时器的初始值为0。
[0010] 其中,在所述判断当前的累计时间和音视频文件中当前帧的时间戳的偏差是否在一帧时间之内的步骤中,具体包括:获取所述长计时器当前的计数时间;获取所述音视频文件中当前帧的时间戳;计算所述计数时间和所述时间戳的偏差;判断所述偏差是否在所述音视频文件的一帧时间之内。
[0011] 其中,在所述调节视频文件的当前帧为目标帧的步骤中,具体包括:当所述当前的累计时间提前于当前帧的时间戳时,所述目标帧为所述当前帧的上一帧,退出所述计时器中断处理,继续显示所述当前帧的上一帧。
[0012] 其中,在所述调节视频文件的当前帧为目标帧的步骤中,具体包括:当所述当前的累计时间滞后于当前帧的时间戳时,所述目标帧为所述当前帧的下一帧,显示所述目标帧,并将所述当前帧和所述目标帧的缓冲的标志都置为已显示。
[0013] 其中,在所述播放调节后的音视频的步骤中,具体包括:从所述音视频文件中读取音频和视频数据到缓冲中;将所述音频数据写到音频播放的先入先出缓冲器中。 [0014] 本发明实施例的技术方案还提供了一种音视频同步播放的装置,所述装置包括:累计时间记录单元,用于记录播放音视频的累计时间;时间戳获取单元,用于获取音视频文件中当前帧的时间戳;判断单元,用于在计时器中断中,判断所述累计时间记录单元记录的当前累计时间和所述时间戳获取单元获取的时间戳的偏差是否在一帧时间之内;调节单元,用于当所述判断单元的判断结果为否时,当所述当前的累计时间提前于当前帧的时间戳时,调节所述目标帧为所述当前帧的上一帧,当所述当前的累计时间滞后于当前帧的时间戳时,调节所述目标帧为所述当前帧的下一帧;音视频播放单元,用于播放所述调节单元调节后的音视频。
[0015] 其中,所述累计时间记录单元为长计时器,所述长计时器的初始值为0。 [0016] 上述技术方案仅是本发明的一个优选技术方案,具有如下优点:本发明实施例通过在每次中断处理中判断当前的累计播放时间和文件中的时间戳的偏差是否在一帧时间之内,如果提前了一帧则退出中断处理,如果滞后一帧,则丢掉一帧,直接显示下一帧的方法,将音视频的偏差始终控制在一帧之内,使得音视频的播放保持同步。

附图说明

[0017] 图1是本发明实施例的一种音视频同步播放的方法的流程图;
[0018] 图2是本发明实施例的一种音视频同步播放的装置的结构图。

具体实施方式

[0019] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0020] 本发明实施例的一种音视频同步播放的方法的流程如图1所示,首先本实施例在不改动原来的同步机制前提下,引入了一个长Timer(计时器)来进行同步的修正,用长计时器来记录开始播放的累计时间,在计时器中断中向音频设备传输音频数据,同时显示视频图片,在计时器中断中,判断当前的累计时间和所述音视频文件中当前帧的时间戳的偏差是否在一帧时间之内,如果否,则调节视频文件的当前帧为目标帧,使得音视频的偏差始终控制在一帧之内,最后播放调节后的音视频。参照图1,本实施例包括以下步骤: [0021] 步骤s101,打开音视频文件。
[0022] 步骤s102,记录播放所述音视频的累计时间。本实施例中在开始播放所述音视频时,启动一个长计时器,用长计时器来记录开始播放的累计时间,所述长计时器的初始值为0,精度可以在毫秒级。
[0023] 步骤s103,在计时器中断中,获取所述长计时器当前的计数时间和所述音视频文件中当前帧的时间戳。
[0024] 步骤s104,计算所述计数时间和所述时间戳的偏差。
[0025] 步骤s105,判断所述偏差是否在所述音视频文件的一帧时间之内。如果是,则转步骤s106,否则转步骤s107。
[0026] 步骤s106,显示当前帧,然后将帧Buffer的标志置为已显示,并转步骤s110。 [0027] 步骤s107,判断所述当前的累计时间是否提前于当前帧的时间戳,如果是,则转步骤s108,否则转步骤s109。
[0028] 步骤s108,退出所述计时器中断处理,继续显示所述当前帧的上一帧,并转步骤s110。 [0029] 步骤s109,显示当前帧的下一帧,然后将所述当前帧和所述目标帧Buffer的标志都置为已显示。
[0030] 步骤s110,从所述音视频文件中读取音频和视频数据到缓冲中。
[0031] 步骤s111,将所述音频数据写到音频播放的Fifo(First In FirstOut,先入先出缓冲器)中。
[0032] 本发明实施例的一种音视频同步播放的装置如图2所示,所述装置包括累计时间记录单元21、时间戳获取单元22、判断单元23、调节单元24和音视频播放单元25。其中,判断单元23分别与累计时间记录单元21、时间戳获取单元22和调节单元24连接,音视频播放单元25与调节单元24连接。
[0033] 累计时间记录单元21为长计时器,其初始值为0,精度可以在毫秒级,用于记录播放音视频的累计时间;时间戳获取单元22用于获取音视频文件中当前帧的时间戳;判断单元23用于在Timer中断中,判断累计时间记录单元21记录的当前累计时间和时间戳获取单元22获取的时间戳的偏差是否在一帧时间之内;调节单元24用于当判断单元23的判断结果为否时,调节视频文件的当前帧为目标帧,所述目标帧的时间戳与所述当前累计时间的偏差在一帧时间之内;音视频播放单元25用于播放调节单元24调节后的音视频。 [0034] 实施例一,当播放一个音视频文件时,在开始播放所述音视频时,启动一个长计时器,用长计时器来记录开始播放的累计时间,所述长计时器的初始值为0,精度在毫秒级。假设在计时器中断中,所述音视频文件中当前帧A的时间戳为TA,当前帧的上一帧A-1的时间戳为TA-Tf,其中Tf为所述音视频文件的一帧时间,所述长计时器当前的计数时间T小于或等于TA-Tf,则长计时器当前的计数时间T和所述音视频文件中当前帧A的时间戳TA的偏差大于或等于所述音视频文件的一帧时间Tf。此时退出所述计时器中断处理,继续显示所述当前帧的上一帧A-1,然后从所述音视频文件中读取音频和视频数据到缓冲中,并将所述音频数据写到音频播放的Fifo中,对所述音视频文件进行播放。
[0035] 实施例二,当播放一个音视频文件时,在开始播放所述音视频时,启动一个长计时器,用长计时器来记录开始播放的累计时间,所述长计时器的初始值为0,精度在毫秒级。假设在计时器中断中,所述音视频文件中当前帧B的时间戳为TB,当前帧的下一帧B+1的时间戳为TB+Tf,其中Tf为所述音视频文件的一帧时间,所述长计时器当前的计数时间T大于或等于TB+Tf,则长计时器当前的计数时间T和所述音视频文件中当前帧B的时间戳TB的偏差大于或等于所述音视频文件的一帧时间Tf。此时显示当前帧的下一帧B+1,然后将所述当前帧B和所述当前帧的下一帧B+1的Buffer的标志都置为已显示,然后从所述音视频文件中读取音频和视频数据到缓冲中,并将所述音频数据写到音频播放的Fifo中,对所述音视频文件进行播放。
[0036] 由以上实施例可以看出,本发明实施例通过在每次中断处理中判断当前的累计播放时间和文件中的时间戳的偏差是否在一帧时间之内,如果提前了一帧则退出中断处理,如果滞后一帧,则丢掉一帧,直接显示下一帧的方法,将音视频的偏差始终控制在一帧之内,使得音视频的播放保持同步。
[0037] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。