一种音视频同步处理的方法和装置与流程

文档序号:14864439发布日期:2018-07-04 10:13阅读:179来源:国知局
一种音视频同步处理的方法和装置与流程

本发明涉及数字电视领域,尤其涉及一种音视频同步处理的方法和装置。



背景技术:

编码器中有一个频率为27mhz的系统时钟(stc,systemtimeclock),此时钟用来产生音视频的正确显示时间标签(pts,presentationtimestamp)和解码时间标签(dts,decodetimestamp),同时也可用来指示系统时钟本身的瞬时采样值。发送端在节目时钟参考(pcr,programclockreference)字段离开复用器的时刻将系统时钟的瞬时采样值插入到mpeg-2ts流的pcr域中,接收端可以通过提取pcr字段来恢复与编码器同步的27mhz系统时钟,再利用pes流中的pts和dts来实现音频和视频的同步。

mpeg-ts流中的pcr值为42bit,包括33bit的pcr_base和9bit的pcr_extension。其中pcr_base是以90khz时钟进行采样的,其作用是在切换节目时,提供本地stc计数的初始值,使得pcr值与pts、dts尽可能的有相同的时间起点。pcr_extension是以27mhz时钟进行采样的,其作用是通过接收端的锁相环修正解码器的系统时钟,从而获得与编码器一致的27mhz系统时钟。

然而,在一个音视频实时播放的系统中,唇音不同步的现象时有发生,主要就是由于重建的系统时钟不精准导致的。



技术实现要素:

为解决上述技术问题,本发明实施例期望提供一种音视频同步处理的方法和装置,能在解码端精准地重建与编码端一致的系统时钟,从而为音视频的同步提供准确的时钟参考,然后通过音视频同步处理解决视频播放过程中的唇音不同步问题。

本发明的技术方案是这样实现的:

第一方面,本发明实施例提供了一种音视频同步处理的方法,所述方法包括:

将当前节目时钟参考pcr值与当前系统时钟stc值进行比较,获得第一比较结果;

当所述第一比较结果不满足预设的判断条件时,通过调整当前stc计数步长来重建系统时钟stc;

将所述重建的系统时钟stc中的stc基础数值stc_base与显示时间标签pts值之间的差值绝对值和预设的时间间隔进行比较,获得第二比较结果;其中,所述预设的时间间隔是音频或视频帧间时间的m倍,且m大于0小于1;

根据所述第二比较结果调整所述音频或视频播放速度。

在上述方案中,所述将当前节目时钟参考pcr值与当前系统时钟stc值进行比较,获得第一比较结果,包括:

将第一个pcr值或重新加载的pcr值作为计数初值载入本地stc计数器;

利用本地系统时钟频率驱动所述本地stc计数器,对stc进行递增计数;其中,所述本地系统时钟频率为编码系统时钟频率的n倍,n为大于等于1的整数;

当检测到pcr中断时,读取所述本地stc计数器中的当前stc值和所述当前pcr值;

计算所述当前pcr值与所述本地stc计数器中的当前stc值的差值绝对值;其中,所述当前pcr值与所述本地stc计数器中的当前stc值的差值绝对值为所述第一比较结果。

在上述方案中,所述当所述第一比较结果不满足预设的判断条件时,通过调整当前stc计数步长来重建系统时钟stc,包括:

将所述第一比较结果与预设的判断条件进行比较;

当所述第一比较结果不满足预设的判断条件时,将所述当前pcr值与所述当前stc值进行比较;

若所述当前pcr值大于所述当前stc值,则增大当前stc计数步长;

若所述当前pcr值小于所述当前stc值,则减小当前stc计数步长。

在上述方案中,所述方法还包括:

当所述当前pcr值与所述当前stc值的差值绝对值满足预设的判断条件时,保持stc计数步长不变。

在上述方案中,当解码视频时,所述根据所述第二比较结果调整所述视频播放速度,包括:

利用所述第二比较结果对所述视频的解码速度进行相对应的调整;

当所述stc_base值与pts值的差值绝对值小于所述预设的时间间隔时,不对所述视频解码速度进行调整;

当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述视频解码速度进行调整。

在上述方案中,所述当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述视频解码速度进行调整,包括:

当所述stc_base值减去所述pts值所获得的差值大于等于所述预设的时间间隔时,所述视频解码速度小于预设的正常速度,根据所述视频帧的结构进行相应的同步调整;其中,所述视频帧的结构分别为:双向预测帧b帧、帧内预测帧i帧和单向预测帧p帧;

当所述pts值减去所述stc_base值所获得的差值大于等于所述预设的时间间隔时,所述视频解码速度大于预设的正常速度,重复显示上一个视频帧,视频解码暂停,待所述stc_base值与所述pts值相同时,显示当前图像。

在上述方案中,所述当所述stc_base值减去所述pts值所获得的差值大于等于预设的时间间隔时,所述视频解码速度小于预设的正常速度,根据所述视频帧的结构进行相应的同步调整,包括:

当所述视频帧为b帧时,丢弃当前帧,解码下一帧,同时显示前一帧;

当所述视频帧为i帧或p帧时,冻结前一帧图像并停止解码,等待下一个i帧或视频序列。

在上述方案中,当解码音频时,所述根据所述第二比较结果调整所述音频播放速度,包括:

利用所述第二比较结果对所述音频的解码速度进行相对应的调整;

当所述stc_base值与pts值的差值绝对值小于所述预设的时间间隔时,不对所述音频解码速度进行调整;

当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述音频解码速度进行调整。

在上述方案中,所述当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述音频解码速度进行调整,包括:

当所述stc_base值减去所述pts值所获得的差值大于等于所述预设的时间间隔时,所述音频解码速度小于预设的正常速度,跳过一个采样点;

当所述pts值减去所述stc_base值所获得的差值大于等于所述预设的时间间隔时,所述音频解码速度大于预设的正常速度,重复上一个采样点。

第二方面,本发明实施例提供了一种音视频同步处理的装置,所述装置包括:比较模块和调整模块;其中,

所述比较模块,用于将当前节目时钟参考pcr值与当前系统时钟stc值进行比较,获得第一比较结果;

所述调整模块,用于当所述第一比较结果不满足预设的判断条件时,通过调整当前stc计数步长来重建系统时钟stc;

所述比较模块,还用于将所述重建的系统时钟stc中的stc基础数值stc_base与显示时间标签pts值之间的差值绝对值和预设的时间间隔进行比较,获得第二比较结果;其中,所述预设的时间间隔是音频或视频帧间时间的m倍,且m大于0小于1;

所述调整模块,还用于根据所述第二比较结果调整所述音频或视频播放速度。

在上述方案中,所述装置还包括:加载模块、计数模块、读取模块和计算模块;其中,

所述加载模块,用于将所述第一个pcr值或重新加载的pcr值作为计数初值载入本地stc计数器;

所述计数模块,用于利用本地系统时钟频率驱动所述本地stc计数器,对stc进行递增计数;其中,所述本地系统时钟频率为编码系统时钟频率的n倍,n为大于等于1的整数;

所述读取模块,用于当检测到pcr中断时,读取所述本地stc计数器中的当前stc值和所述当前pcr值;

所述计算模块,用于计算所述当前pcr值与所述本地stc计数器中的当前stc值的差值绝对值;其中,所述当前pcr值与所述本地stc计数器中的当前stc值的差值绝对值为所述第一比较结果。

在上述方案中,所述比较模块,用于将所述第一比较结果与预设的判断条件进行比较;

所述调整模块,用于当所述第一比较结果不满足预设的判断条件时,将所述当前pcr值与所述当前stc值进行比较;

以及,若所述当前pcr值大于所述当前stc值,则增大当前stc计数步长;

以及,若所述当前pcr值小于所述当前stc值,则减小当前stc计数步长。

在上述方案中,所述装置还包括:保持模块;其中,

所述保持模块,用于当所述当前pcr值与所述当前stc值的差值绝对值满足预设的判断条件时,保持stc计数步长不变。

在上述方案中,所述调整模块,用于利用所述第二比较结果对所述视频的解码速度进行相对应的调整;

以及,当所述stc_base值与pts值的差值绝对值小于所述预设的时间间隔时,不对所述视频解码速度进行调整;

以及,当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述视频解码速度进行调整。

在上述方案中,所述调整模块,用于当所述stc_base值减去所述pts值所获得的差值大于等于所述预设的时间间隔时,所述视频解码速度小于预设的正常速度,根据所述视频帧的结构进行相应的同步调整;其中,所述视频帧的结构分别为:双向预测帧b帧、帧内预测帧i帧和单向预测帧p帧;

以及,当所述pts值减去所述stc_base值所获得的差值大于等于所述预设的时间间隔时,所述视频解码速度大于预设的正常速度,重复显示上一个视频帧,视频解码暂停,待所述stc_base值与所述pts值相同时,显示当前图像。

在上述方案中,所述调整模块,用于当所述视频帧为b帧时,丢弃当前帧,解码下一帧,同时显示前一帧;

以及,当所述视频帧为i帧或p帧时,冻结前一帧图像并停止解码,等待下一个i帧或视频序列。

在上述方案中,所述调整模块,用于利用所述第二比较结果对所述音频的解码速度进行相对应的调整;

以及,当所述stc_base值与pts值的差值绝对值小于所述预设的时间间隔时,不对所述音频解码速度进行调整;

以及,当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述音频解码速度进行调整。

在上述方案中,所述调整模块,用于当所述stc_base值减去所述pts值所获得的差值大于等于所述预设的时间间隔时,所述音频解码速度小于预设的正常速度,跳过一个采样点;

以及,当所述pts值减去所述stc_base值所获得的差值大于等于所述预设的时间间隔时,所述音频解码速度大于预设的正常速度,重复上一个采样点。

本发明实施例提供了一种音视频同步处理的方法和装置,在当前pcr值与当前stc值的比较结果不满足预设的判断条件时,调整当前stc计数步长重建系统时钟stc,然后根据重建的系统时钟stc中的stc_base值与显示时间标签pts值的差值绝对值与预设的时间间隔的比较结果,调整音/视频播放速度,在解码端精准地重建与编码端一致的系统时钟,从而为音视频的同步提供准确的时钟参考,解决了视频播放过程中的唇音不同步问题。

附图说明

图1为本发明实施例提供的重建本地系统时钟与音视频同步处理的装置示意图;

图2为本发明实施例一提供的音视频同步处理方法流程示意图一;

图3为本发明实施例一提供的音视频同步处理方法流程示意图二;

图4为本发明实施例一提供的音视频同步处理方法流程示意图三;

图5为本发明实施例一提供的利用pcr和本地stc计数器进行系统时钟重建的流程图;

图6为本发明实施例一提供的音视频同步处理方法流程示意图四;

图7为本发明实施例一提供的音视频同步处理方法流程示意图五;

图8为本发明实施例一提供的利用stc_base与pts进行音视频同步的流程图;

图9为本发明实施例二提供的音视频同步处理装置结构示意图一;

图10为本发明实施例二提供的音视频同步处理装置结构示意图二;

图11为本发明实施例三提供的音视频同步处理硬件模块图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

本发明的思路为:在实时工作的多媒体系统中,系统时钟的重建不精准导致音视频同步存在误差的问题。通过重建本地系统时钟,在重建本地系统时钟的基础上进行音视频同步处理。

参见图1,其示出了本发明实施例提供的重建本地系统时钟与音视频同步处理的装置示意图。该装置需要在本地建立一个stc计数器,当第一个pcr到来或需要重新载入pcr时,将当前pcr值载入stc计数器,stc计数器在108mhz时钟的驱动下进行计数,在检测到pcr中断后,读取stc计数器值与当前pcr值进行比较,偏差在可接受的范围内,则不调整,否则软件需要调整stc计数步长,来调整stc计数器,进而修正系统时钟。利用低通滤波器与压控振荡器进行锁相,避免因传输误码引入的较大偏差。

该装置中选择的驱动本地stc计数器的时钟为108mhz,而编码时钟为27mhz,是编码端时钟的4倍。此处提高频率是为了提高计数器的精度,同时也避免了奇数分频不准确导致重建的系统时钟不精准的问题。

装置中pcr是通过解复用器从mpeg-ts流的adaption_field中提取的,pcr的提取过程由硬件实现。当第二个pcr到来时,硬件给出pcr中断,并将当前pcr和stc计数器更新到寄存器中供软件读取。

装置中pts/dts也是通过解复用器提取并给到解码器的,每解到一个pts/dts,该pts/dts就作为其后送入解码器的输入缓冲器中的基本码流(es,elementarystream)数据的显示/解码时间,但此时送入缓冲器的es数据并不一定立即被解码,因此,解码器必须将pts/dts存入先进先出队列(fifo,firstinputfirstoutput)中,并记录该pts/dts所对应码流的位置,利于后续的解码和显示的同步。

采用上述的装置,可以在解码端精准地重建系统时钟,且在系统时钟出现偏差时,可以在较短时间内通过软件调整,使得系统时钟与编码端一致,进而为音视频同步提供准确的参考时钟。

实施例一

参见图2,其示出了本发明实施例提供的一种音视频同步处理的方法,所述方法包括:

s101、将当前节目时钟参考pcr值与当前系统时钟stc值进行比较,获得第一比较结果。

参见图3,具体地,步骤s101包括步骤s1011至s1014:

s1011、将第一个pcr值或重新加载的pcr值作为计数初值载入本地stc计数器。

需要说明的是,第一个pcr到来或需要重新载入pcr时,将当前pcr值载入本地stc计数器,作为计数初值。本地stc计数器同样也分stc_base和stc_extension分别计数;其中,stc_base为stc的基础数值,是stc的高33bit,初始值为pcr_base,后在90khz时钟的驱动下进行递增计数,主要用于与pts和dts比较,从而调整音视频解码和显示速度;stc_extension为stc的扩展数值,是stc的低9bit,初始值为pcr_extension,后在27mhz时钟的驱动下进行递增计数,主要用于系统时钟的恢复。

s1012、利用本地系统时钟频率驱动所述本地stc计数器,对stc进行递增计数;其中,所述本地系统时钟频率为编码系统时钟频率的n倍,n为大于等于1的整数。

优选地,本地stc计数器在本地108mhz时钟的驱动下进行计数。编码端系统时钟为27mhz,此处采用108mhz本地时钟是为了提高计数器的精度,使得通过软件调整锁相环更加精准。stc_base每1200个时钟周期加1,stc_extension每4个时钟周期加1。

s1013、当检测到pcr中断时,读取所述本地stc计数器中的当前stc值和所述当前pcr值。

具体地,当下一个pcr到来时,硬件提取当前的stc值和pcr值到寄存器中供软件查询,同时给出pcr中断,软件检测到中断,即可读取当前的stc和pcr值。

s1014、计算所述当前pcr值与所述本地stc计数器中的当前stc值的差值绝对值;其中,所述当前pcr值与所述本地stc计数器中的当前stc值的差值绝对值为所述第一比较结果。

具体地,通过软件计算当前pcr值与当前stc值的差值绝对值,其计算表达式为:δpcr=|pcr-stc|。软件计算出当前pcr值与当前stc值的差值绝对值后,清除pcr中断。

s102、当所述第一比较结果不满足预设的判断条件时,通过调整当前stc计数步长来重建系统时钟stc。

具体地,参见图4,步骤s102包括步骤s1021至s1024:

s1021、将所述第一比较结果与预设的判断条件进行比较。

需要说明的是,第一比较结果为δpcr=|pcr-stc|,将δpcr分为δpcr_base与δpcr_extension两部分。将δpcr_base与δpcr_extension的值分别预设一个取值范围作为预设的判断条件,优选地,当δpcr_base==0且δpcr_extension≤162时设定为满足预设的判断条件。

s1022、当所述第一比较结果不满足预设的判断条件时,将所述当前pcr值与所述当前stc值进行比较。

若不满足条件δpcr_base==0且δpcr_extension≤162,将当前pcr值与当前stc值进行比较,根据当前pcr值与当前stc值的比较结果判断stc计数速度的快慢,从而对应的调整stc计数步长,其中,stc计数步长初始值为230

s1023、若所述当前pcr值大于所述当前stc值,则增大当前stc计数步长。

可以理解地,若pcr>stc,则说明stc计数过慢,需要增大stc计数步长,对stc系统时钟进行相应的调整。

s1024、若所述当前pcr值小于所述当前stc值,则减小当前stc计数步长。

可以理解地,若pcr<stc,则说明stc计数过快,需要减小stc计数步长,对stc系统时钟进行相应的调整。

具体地,所述方法还包括:

当所述当前pcr值与所述当前stc值的差值绝对值满足预设的判断条件时,保持stc计数步长不变。

可以理解地,若满足条件δpcr_base==0且δpcr_extension≤162,则判断为系统时钟stc正常,不需要重建系统时钟,因此无需调整stc计数步长。

还需要说明的是,解复用器在进行mpeg-2ts包包头解析时,提取出pcr信息,并送入系统时钟恢复电路。每个新的pcr到来时,都会与本地stc计数器比较,进行系统时钟的恢复和锁相。这样在节目播放过程中,如果本地系统时钟与编码端系统时钟比较出现了偏差,也能在下一次pcr到来后得到校正,为音视频的同步处理提供精准的系统时钟参考。

上述过程为重建系统时钟的过程,参见图5,其示出了利用pcr和本地stc计数器进行系统时钟重建的流程图。在重建系统时钟后,就可以在重建系统时钟的基础上进行音视频同步的处理过程,音视频同步处理过程如下:

s103、将所述重建的系统时钟stc中的stc基础数值stc_base与显示时间标签pts值之间的差值绝对值和预设的时间间隔进行比较,获得第二比较结果;其中,所述预设的时间间隔是音频或视频帧间时间的m倍,且m大于0小于1。

需要说明的是,音视频中新的一帧到来后,软件计算stc_base与pts的差值绝对值,即|stc_base-pts|的值。音/视频帧间时间是δpts,预设的时间间隔是指δpts的m倍,这里m大于0小于1。

优选地,设定m值为0.5,因此0.5倍帧间时间为δpts/2。将音/视频的stc_base值与pts值的差值绝对值与0.5帧间时间进行比较,即|stc_base-pts|与δpts/2进行比较,|stc_base-pts|与δpts/2的比较结果即为第二比较结果。

s104、根据所述第二比较结果调整所述音频或视频播放速度。

需要说明的是,对音频和视频解码快慢程度的判断以及调整过程是不同的,对视频解码速度的调整需要根据视频的结构做出相应的同步调整,而音频则只需要根据解码快慢程度跳过一个采样点或者重复上一个采样点就可以对音频解码的速度进行调整。因此,将步骤s104分为解码视频和解码音频两种情况,s104a1至s104a3为解码视频时,对视频解码速度的调整过程,s104b1至s104b3为解码音频时,对音频解码速度的调整过程。

参见图6,具体地,当解码视频,对视频解码速度进行调整时,具体过程包括步骤s104a1至s104a3:

s104a1、利用所述第二比较结果对所述视频的解码速度进行相对应的调整。

可以理解地,根据第二比较结果对视频的解码速度进行相对应的调整就可以调整视频的播放速度。

s104a2、当所述stc_base值与pts值的差值绝对值小于所述预设的时间间隔时,不对所述视频解码速度进行调整。

可以理解地,若|stc_base-pts|<δpts/2,则说明视频解码正常,不需要对视频解码速度进行调整。

s104a3、当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述视频解码速度进行调整。

可以理解地,|stc_base-pts|≥δpts/2,则可以获知此时视频解码速度是不正常的,需要对视频解码速度进行调整。由于是根据stc_base值与pts值的差值绝对值与δpts/2进行的判断,不能获知视频解码速度的具体情况,不能确定视频解码速度是快还是慢,因此,去掉绝对值,判断是stc_base减去pts的值大于等于δpts/2,或者是pts减去stc_base的值大于等于δpts/2,对视频解码速度进行进一步判断。

针对步骤s104a3,对视频解码速度的判断并进行调整的过程具体包括以下两种过程:

一、当所述stc_base值减去所述pts值所获得的差值大于等于所述预设的时间间隔时,所述视频解码速度小于预设的正常速度,根据所述视频帧的结构进行相应的同步调整;其中,所述视频帧的结构分别为:双向预测帧b帧、帧内预测帧i帧和单向预测帧p帧。

可以理解地,若stc_base-pts≥δpts/2,则说明视频解码稍慢,解码器处于失步状态,应根据该帧的结构作出相应的同步调整。

根据不同的视频帧结构对视频解码速度进行相应的同步调整,因此,上述过程具体包括:

当所述视频帧为b帧时,丢弃当前帧,解码下一帧,同时显示前一帧;

当所述视频帧为i帧或p帧时,冻结前一帧图像并停止解码,等待下一个i帧或视频序列。

需要说明的是,在视频压缩编码中,所有的帧被分成了三个种类:i(intra-prediction)帧、b(bi-prediction)帧和p(prediction)帧,分别为帧内预测帧,双向预测帧以及单向预测帧。

二、当所述pts值减去所述stc_base值所获得的差值大于等于所述预设的时间间隔时,所述视频解码速度大于预设的正常速度,重复显示上一个视频帧,视频解码暂停,待所述stc_base值与所述pts值相同时,显示当前图像。

可以理解地,若pts–stc_base≥δpts/2,则说明视频解码稍快,那么可以暂停视频解码,将已经显示过的上一帧图像进行重复的显示,通过这种方法可以放缓视频的解码速度,等到stc_base与pts相同时,再显示当前帧图像。

参见图7,具体地,当解码音频,对音频解码速度进行调整时,具体过程包括步骤s104b1至s104b3:

s104b1、利用所述第二比较结果对所述音频的解码速度进行相对应的调整。

可以理解地,根据第二比较结果对音频的解码速度进行相对应的调整就可以调整音频的播放速度。

s104b2、当所述stc_base值与pts值的差值绝对值小于所述预设的时间间隔时,不对所述音频解码速度进行调整。

可以理解地,若|stc_base-pts|<δpts/2,则说明音频解码正常,不需要对音频的解码速度进行调整。

s104b3、当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述音频解码速度进行调整。

可以理解地,若|stc_base-pts|≥δpts/2,则可以获知此时音频解码速度是不正常的,需要对音频解码速度进行调整。由于是根据stc_base值与pts值的差值绝对值与δpts/2进行的判断,不能获知音频解码速度的具体情况,不能确定音频解码速度是快还是慢,因此,去掉绝对值,判断是stc_base减去pts的值大于等于δpts/2,或者是pts减去stc_base的值大于等于δpts/2,对音频解码速度进行进一步判断。

针对步骤s104b3,对音频解码速度的判断并进行调整的过程具体包括:

当所述stc_base值减去所述pts值所获得的差值大于等于所述预设的时间间隔时,所述音频解码速度小于预设的正常速度,跳过一个采样点;

当所述pts值减去所述stc_base值所获得的差值大于等于所述预设的时间间隔时,所述音频解码速度大于预设的正常速度,重复上一个采样点。

上述过程为在重建系统时钟的基础上进行音视频同步的过程,参见图8,其示出了利用stc_base与pts进行音视频同步的流程图。

本发明实施例提供了一种音视频同步处理的方法,在当前pcr值与当前stc值的比较结果不满足预设的判断条件时,调整当前stc计数步长重建系统时钟stc,然后根据重建的系统时钟stc中的stc_base值与显示时间标签pts值的差值绝对值与预设的时间间隔的比较结果,调整音/视频播放速度,在解码端精准地重建与编码端一致的系统时钟,从而为音视频的同步提供准确的时钟参考,解决了视频播放过程中的唇音不同步问题。

实施例二

参见图9,其示出了本发明实施例提供的一种音视频同步处理的装置9,所述装置包括:比较模块901和调整模块902;其中,

所述比较模块901,用于将当前节目时钟参考pcr值与当前系统时钟stc值进行比较,获得第一比较结果;

所述调整模块902,用于当所述第一比较结果不满足预设的判断条件时,通过调整当前stc计数步长来重建系统时钟stc;

所述比较模块901,还用于将所述重建的系统时钟stc中的stc基础数值stc_base与显示时间标签pts值之间的差值绝对值和预设的时间间隔进行比较,获得第二比较结果;其中,所述预设的时间间隔是音频或视频帧间时间的m倍,且m大于0小于1;

所述调整模块902,还用于根据所述第二比较结果调整所述音频或视频播放速度。

进一步地,参见图10,所述装置还包括:加载模块903、计数模块904、读取模块905和计算模块906;其中,

所述加载模块903,用于将所述第一个pcr值或重新加载的pcr值作为计数初值载入本地stc计数器;

所述计数模块904,用于利用本地系统时钟频率驱动所述本地stc计数器,对stc进行递增计数;其中,所述本地系统时钟频率为编码系统时钟频率的n倍,n为大于等于1的整数;

所述读取模块905,用于当检测到pcr中断时,读取所述本地stc计数器中的当前stc值和所述当前pcr值;

所述计算模块906,用于计算所述当前pcr值与所述本地stc计数器中的当前stc值的差值绝对值;其中,所述当前pcr值与所述本地stc计数器中的当前stc值的差值绝对值为所述第一比较结果。

进一步地,所述比较模块901,用于将所述第一比较结果与预设的判断条件进行比较;

所述调整模块902,用于当所述第一比较结果不满足预设的判断条件时,将所述当前pcr值与所述当前stc值进行比较;

以及,若所述当前pcr值大于所述当前stc值,则增大当前stc计数步长;

以及,若所述当前pcr值小于所述当前stc值,则减小当前stc计数步长。

进一步地,参见图10,所述装置还包括:保持模块907;其中,

所述保持模块907,用于当所述当前pcr值与所述当前stc值的差值绝对值满足预设的判断条件时,保持stc计数步长不变。

进一步地,所述调整模块902,用于利用所述第二比较结果对所述视频的解码速度进行相对应的调整;

以及,当所述stc_base值与pts值的差值绝对值小于所述预设的时间间隔时,不对所述视频解码速度进行调整;

以及,当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述视频解码速度进行调整。

进一步地,所述调整模块902,用于当所述stc_base值减去所述pts值所获得的差值大于等于所述预设的时间间隔时,所述视频解码速度小于预设的正常速度,根据所述视频帧的结构进行相应的同步调整;其中,所述视频帧的结构分别为:双向预测帧b帧、帧内预测帧i帧和单向预测帧p帧;

以及,当所述pts值减去所述stc_base值所获得的差值大于等于所述预设的时间间隔时,所述视频解码速度大于预设的正常速度,重复显示上一个视频帧,视频解码暂停,待所述stc_base值与所述pts值相同时,显示当前图像。

进一步地,所述调整模块902,用于当所述视频帧为b帧时,丢弃当前帧,解码下一帧,同时显示前一帧;

以及,当所述视频帧为i帧或p帧时,冻结前一帧图像并停止解码,等待下一个i帧或视频序列。

进一步地,所述调整模块902,用于利用所述第二比较结果对所述音频的解码速度进行相对应的调整;

以及,当所述stc_base值与pts值的差值绝对值小于所述预设的时间间隔时,不对所述音频解码速度进行调整;

以及,当所述stc_base值与pts值的差值绝对值大于等于所述预设的时间间隔时,对所述音频解码速度进行调整。

进一步地,所述调整模块902,用于当所述stc_base值减去所述pts值所获得的差值大于等于所述预设的时间间隔时,所述音频解码速度小于预设的正常速度,跳过一个采样点;

以及,当所述pts值减去所述stc_base值所获得的差值大于等于所述预设的时间间隔时,所述音频解码速度大于预设的正常速度,重复上一个采样点。

本发明实施例提供了一种音视频同步处理的装置,在当前pcr值与当前stc值的比较结果不满足预设的判断条件时,调整当前stc计数步长重建系统时钟stc,然后根据重建的系统时钟stc中的stc_base值与显示时间标签pts值的差值绝对值与预设的时间间隔的比较结果,调整音/视频播放速度,在解码端精准地重建与编码端一致的系统时钟,从而为音视频的同步提供准确的时钟参考,解决了视频播放过程中的唇音不同步问题。

实施例三

针对图9所示的装置,参见图11,其示出了本发明实施例提供的系统时钟的重建及音视频同步处理所涉及的硬件实现装置,所述硬件实现装置具体可以包括3大部分:cpu、解复用器demux和解码器decoder。

所述解复用器demux分为ts_ph_get模块与pcr_recovery模块,其中ts_ph_get模块进行包头解析,在mpeg2-ts流的自适应区中提取出pcr_flag和pcr值,送入pcr_recovery模块进行系统时钟的重建。

pcr_recovery模块保存pcr值,具体实现本地的stc计数器在本地系统时钟出现偏差时,可通过cpu调整stc步长来调整stc计数器,使其与当前pcr基本一致。pcr_recovery模块发送pcr_interrupt信号至cpu,pcr_interrupt信号表示pcr_recovery模块提取出pcr中断发送至cpu,cpu接收到中断后,查询stc_regs/pcr_regs,软件计算stc和pcr的差值后,再根据差值来调整stc计数步长,并反馈给pcr_recovery模块。

所述解码器decoder分为fifo模块、es数据缓冲器、解码模块和显示模块。

解复用器demux在开始新的一帧图像时,将该帧图像对应的pts/dts写入fifo模块,每解码到一帧图像时,就从fifo中读出对应的dts与stc进行比较,当两者相等时,则可以在解码模块中开始解码。同时,解复用器demux将esdata写入es数据缓存器中,es数据缓存器将esdata发送至解码模块进行解码。每一显示单元开始显示前,用其对应的pts与stc进行比较,当两者相等时,则可以在显示模块中开始显示。其中,esdata为基本码流(es,elementarystream)包含视频、音频或数据的连续码流。

还需要说明的是,并不是每一帧图像都有pts和dts,一个pes包可能会有多帧图像,只有第一帧图像有pts,而pes包里的其他图像帧均没有pts。若一帧图像没有pts,可以在前一pts的基础上加一增量得到对应该帧图像的pts,送入fifo中进行管理,并根据上述的方法进行音视频的同步处理。其中pes(packetelementarystream)为打包的基本码流,是将基本的码流es流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流pes流。

本发明实施例提供了一种音视频同步处理装置的硬件实现装置,在当前pcr值与当前stc值的比较结果不满足预设的判断条件时,调整当前stc计数步长重建系统时钟stc,然后根据重建的系统时钟stc中的stc_base值与显示时间标签pts值的差值绝对值与预设的时间间隔的比较结果,调整音/视频播放速度,在解码端精准地重建与编码端一致的系统时钟,从而为音视频的同步提供准确的时钟参考,解决了视频播放过程中的唇音不同步问题。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1