音视频同步方法、系统、计算机装置及计算机可读存储介质与流程

文档序号:13287442阅读:203来源:国知局
音视频同步方法、系统、计算机装置及计算机可读存储介质与流程

本发明属于音视频技术领域,尤其涉及一种音视频同步方法、系统、计算机装置及计算机可读存储介质。



背景技术:

音频与视频的同步技术是多媒体服务中最重要的核心部分,媒体播放如果在音视频上不同步则会直接影响用户的观感体验。因此,音视频同步技术领域的发展,可谓是各具特色,各有千秋。不同的产品,不同的应用场景需要设计相适应的同步技术。不同的技术实现对于同步的精度控制,平滑效果,异常处理等都会表现出不同的性能,但最终目的都是一致的,即使音频与视频达到一致同步的播放,呈现最佳视觉听觉体验。

目前市场现有的实时mpeg播放器,对于音视频同步设计及处理不尽相同,大多数是使用第三方音频解码库,如ffmpeg,vlc等。但是,由于第三方音频解码库在使用时需要支付大量的使用费,成本过高,因此通常会采用audioqueue处理mpegts实时流节目。

audioqueue是macosx与iphone中提供录音、播放功能的高级框架,比audiounit等框架更方便,因此,目前广泛的应用在音视频技术中。

目前,在基于audioqueue的音频处理框架下,进行音频播放时,由于audioqueue是一套封闭性套件模块,输入的是原始音频单元流,即压缩的未解码数据,对于内部数据的缓冲,流动及解码输出不能实时捕获,因此不能直接得到当前音频帧输出的流时间。而这个流相对时间对于音视频同步极其重要,视频帧是参考这个时间进行输出渲染,因此不能得到准确的时间戳,视频帧则不能准确的输出,造成音视频不能同步播放的问题。



技术实现要素:

本发明提供一种音视频同步的方法,旨在解决现有技术中,在基于audioqueue的音频处理框架下,进行音频播放时,不能得到准确的流时间,视频帧不能准确的输出,造成音视频不能同步播放的问题。

本发明是这样实现的,一种音视频同步方法,包括:

获取音频帧数据以及视频帧数据;

根据所述音频帧数据的起始播放流时间以及播放时长获取同步时间基准;

根据所述视频帧数据,获取当前待播放视频帧数据以及所述待播放视频帧数据对应的时间信息;

判断所述时间信息是否大于所述同步时间基准;

当判断结果为否时,判断所述时间信息与所述同步时间基准之间的时间差是否大于预设阈值;

当判断结果为否时,输出所述待播放视频帧数据。

本发明还提供了一种音视频同步系统,包括:

音视频帧数据获取单元,用于获取音频帧数据以及视频帧数据;

第一同步时间获取单元,用于根据所述音频帧数据的起始播放流时间以及播放时长获取同步时间基准;

视频帧数据控制单元,用于根据所述视频帧数据,获取当前待播放视频帧数据以及所述待播放视频帧数据对应的时间信息;

第一判断单元,用于判断所述时间信息是否大于所述同步时间基准;

第二判断单元,用于当判断结果为否时,判断所述时间信息与所述同步时间基准之间的时间差是否大于预设阈值;

视频显示单元,用于当判断结果为否时,输出所述待播放视频帧数据。

本发明实施例还提供了一种计算机装置,所述计算机系统包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现上述音视频同步方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序(指令),其特征在于,所述计算机程序(指令)被处理器执行时实现上述音视频同步方法的步骤。

本发明实施例中,提供了一种基于audioqueue框架下的音视频同步方法,通过获取音频帧数据以及视频帧数据,并根据音频帧数据的起始播放流时间以及播放时长获取同步时间基准,根据音频帧数据获取视频帧数据以及所述视频帧数据对应的时间信息,并在该同步时间基准与该时间信息之间的差值小于预设预设阈值时,输出视频帧,以实现音视频同步,通过对音频帧数据以及视频帧数据在缓冲、解码以及渲染等过程中的时间戳进行获取,并计算,以使视频帧根据同步时间基准进行播放,有效解决现有技术,在进行音频播放时,不能得到准确的时间戳,视频帧则不能准确的输出,造成音视频不能同步播放的问题。

附图说明

图1是本发明实施例提供的一种音视频同步系统的实施场景图;

图2是本发明实施例提供的一种音视频同步方法的实现流程图;

图3是本发明实施例提供的一种时间信息获取方法的实现流程图;

图4是本发明实施例提供的一种同步时间基准获取方法的实现流程图;

图5是本发明实施例提供的另一种音视频同步方法的实现流程图;

图6是本发明实施例提供的一种音视频同步系统的结构示意图;

图7是本发明实施例提供的一种时间信息获取单元的机构示意图;

图8是本发明实施例提供的一种第一同步时间基准获取单元的结构示意图;

图9是本发明实施例提供的另一种音视频同步系统的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例中,提供了一种基于audioqueue框架下的音视频同步方法,通过获取音频帧数据以及视频帧数据,并根据音频帧数据的起始播放流时间以及播放时长获取同步时间基准,根据音频帧数据获取视频帧数据以及所述视频帧数据对应的时间信息,并在该同步时间基准与该时间信息之间的差值小于预设预设阈值时,输出视频帧,以实现音视频同步,通过对音频帧数据以及视频帧数据在缓冲、解码以及渲染等过程中的时间戳进行获取,并计算,以使视频帧根据同步时间基准进行播放,有效解决现有技术,在进行音频播放时,不能得到准确的时间戳,视频帧则不能准确的输出,造成音视频不能同步播放的问题。

图1示出了本发明实施例提供的一种音视频同步系统的实施场景图,详述如下:

参见图1,实时mpeg-2传输流控制模块10实时通过网络端口、usb端口等通信端口接收节目传输流,并进行解密处理后,将节目传输流传输到mpeg-2传输流解复用模块20,通过mpeg-2传输流解复用模块20对节目传输流进行分离处理,以获取音频帧数据以及视频帧数据,之后,通过缓存处理单元30对音频帧数据以视频帧数据进行缓冲以及平滑处理,通过音频播放控制模块40对音频帧数据进行播放进度的控制,并根据音频帧起始播放流时间以及播放时长计算同步时间基准,计算完成后将该同步时间基准传输给同步时钟任务模块50,并将音频帧数据传输到audioqueue音频处理框架60中进行播放处理,而视频帧数据在缓平滑处理后,通过视频帧数据解码单元70进行解码处理,经过解码处理后,经视频帧图像缓存以及输出控制模块80获取当前待播放的视频帧图像以及对应的时间信息,并通过同步时钟任务模块50传输的音频帧的同步时间基准与音频帧数据同步输出。

其中缓存处理单元30包括音频缓存处理单元301以及视频缓存处理单元302。

图2示出了本发明实施例提供的一种音视频同步方法,详述如下:

在步骤s110中,获取音频帧数据以及视频帧数据。

在本发明实施例中,通过接收实时音视频传输流,对该音视频传输流进行解复用处理,以获取音频帧数据以及视频帧数据,具体的,可实时通过有线端口、网络端口、usb端口等获取实时节目流,并进行解密处理,在解密处理后,通过解复用模块将该音视频传输流中类型相同的packet进行存储,分别处理。以将音频、视频或者其他业务信息的数据区分开来。其作用在于,将音视频传输流中数据包分离,相同节目的ts包进行提取组合成音频帧或者视频帧的数据块。

在本发明实施例中,音频帧数据可以为压缩的数据也可以为原始的数据。

在步骤s120中,根据所述音频帧数据的起始播放流时间以及播放时长获取同步时间基准。

在本发明实施例中,起始播放流时间为视频同步到音频时,音频帧数据开始播放时的流时间点,即,在将音频数据输入到audioqueue音频处理框架中进行音视频播放,audioqueue音频处理框架根据实际情况对音频数据进行缓冲、解析、解码,并将解码后的音频帧数据进行播放,因此该起始播放流时间即为audioqueue音频处理框架开始播放第一帧音频数据的时间。

在本发明实施例中,该起始播放流时间具体可通过如下方式获取,当解复用模块对音频数据进行解复用后,获取解复用后音频显示时间戳pts,结合音频数据的播放进度,提供一个主同步时间单位,该主同步时间单元是从pes包的包头中解析出来的,该主同步时间单位即为起始播放流时间。

在本发明实施例中,音频帧数据的播放时长可以根据音频数据的播放数量,转换为播放时长,比如,播放一个音频帧花费的时间为0.01秒,则播放20个音频帧的时长为0.2秒。

在本发明实施例中,同步时间基准是用来同步视频帧画面的参考播放时间,比如,获取的音频数据的起始播放流时间为time0,音频数据继续播放,在到达某一时间,音频数据播放了time1(20分钟10秒32毫秒),则同步时间基准=time0+time1(20分钟10秒32毫秒),该时间为流时间,而非实际时间,另,播放的时长20分钟10秒32毫秒可从相关的接口直接获取。

在步骤s130中,根据所述视频帧数据,获取当前待播放视频帧数据以及所述待播放视频帧数据对应的时间信息。

在本发明实施例中,待播放视频帧数据可以通过获取的视频帧数据当前播放的进度进行获取。

作为本发明的一种实施例,可通过建立视频帧数据与时间信息之间的一一映射关系,并相互关联存储,根据该视频帧数据,获取当前待播放的视频帧图像,并根据当前待播放的视频帧数据查询预设的视频帧数据与时间信息的映射关系,以获取当前待播放的视频帧图像对应的时间信息。

其中,该时间信息为每个为每帧视频帧数据对应的时间戳,该时间戳可从解复用后的视频帧数据包的包头中提取出来,是视频帧数据中固有的时间信息。

在步骤s140中,判断所述时间信息是否大于所述同步时间基准。

在本发明实施例中,可通过时间信息与同步时间基准的差值进行判断,比如,时间信息为2秒,同步时间基准为1秒,则时间信息大于同步时间基准。

进一步,在进行判断时,可将时间信息与同步时间基准的时间单位进行统一,以便可直接根据时间信息与同步时间基准的差值进行判断。

在步骤s150中,当判断结果为否时,判断所述时间信息与所述同步时间基准之间的时间差是否大于预设阈值。

在本发明实施例中,预设阈值可以为具体的数值,比如,3秒、10分钟、1小时等,具体可以根据实际情况进行设置,本发明不做限定。

在本发明实施例中,在获取到时间信息与同步时间基准后,将两者之间的差值与预设阈值进行比对,进而判断是否大于该预设阈值。

在本发明实施例中,当判断结果为是时,则将该视频帧数据延迟播放,直到时间信息与同步时间基准。

在步骤s160中,当判断结果为否时,输出所述待播放视频帧数据。

在本发明实施例中,当时间信息与所述同步时间基准之间的时间差小于预设阈值时,则进行该待播放视频帧数据的播放,以实现音视频同步播放,当判断结果为是时,则认为该待播放视频帧数据为过期帧或者无效帧图像,根据情况进行跳帧处理。

参见图3,在本发明实施例中,步骤s130,包括:

在步骤s131中,对对所述视频流信息进行解码处理。

在本发明实施例中,由于原始的视频数据占用空间过大,传输浪费带宽,因此视频帧数据通常以压缩形式的数据进行传输,所以在播放过程中需要进行解码处理,具体的解码方式可以是软件解码、硬件解码以及无线解码等。

在步骤s132中,根据预存的视频帧数据与时间信息之间的对应关系,获取所述待播放视频帧数据对应的时间信息。

在本发明实施例中,在解码完成后,将解码后的视频帧以及每个视频帧的时间戳对应存储并建立索引,以便在消费一帧数据时,可以有效的判断这帧数据对应的时间戳,进而判断该帧数据是否显示输出或者丢弃处理。

进一步,根据预存的视频帧数据以及视频帧的时间戳,通过待播放视频帧数据,在建立的索引中查找对应时间信息。

参见图4,在本发明的一个实施例中,步骤s120,所述根据所述音频帧数据的起始播放时间以及播放时长获取同步时间基准,包括:

在步骤s121中,在将所述音频帧数据输入到音频处理系统中,获取所述音频帧数据的首帧的播放流时间以及音频播放时长。

在本发明实施例中,在本发明实施例中,起始播放流时间为视频同步到音频时,音频帧数据开始播放时的流时间点,即,在将音频数据输入到audioqueue音频处理框架中进行音视频播放,audioqueue音频处理框架根据实际情况对音频数据进行缓冲、解析、解码,并将解码后的音频帧数据进行播放,因此该起始播放流时间即为audioqueue音频处理框架开始播放第一帧音频数据的时间。

在本发明实施例中,该起始播放流时间具体可通过如下方式获取,当解复用模块对音频数据进行解复用后,获取解复用后音频显示时间戳pts,结合音频数据的播放进度,提供一个主同步时间单位,该主同步时间单元是从pes包的包头中解析出来的,该主同步时间单位即为起始播放流时间。

在本发明实施例中,音频帧数据的播放时长可以根据音频数据的播放数量,转换为播放时长,比如,播放一个音频帧花费的时间为0.01秒,则播放20个音频帧的时长为0.2秒。

在步骤s122中,根据所述首帧的播放流时间以及音频播放时长的和值,获取所述同步时间基准。

在本发明实施例中,同步时间基准是用来同步视频帧画面的参考播放时间,比如,获取的音频数据的起始播放流时间为time0,音频数据继续播放,在到达某一时间,音频数据播放了time1(20分钟10秒32毫秒),则同步时间基准=time0+time1(20分钟10秒32毫秒),该时间为流时间,而非实际时间,另,播放的时长20分钟10秒32毫秒可从相关的接口直接获取。

参见图5,在本发明的一个实施例中,在步骤s110,所述获取音频帧数据以及视频帧数据之后,还包括:

在步骤s170中,对所述音频帧数据以及视频帧数据分别进行缓冲以及平滑处理。

在本发明实施例中,对音频帧数据以及所述视频帧数据进行缓冲以及平滑处理,主要通过开辟一块内存,用于存储解复用后输出的pes流数据,由于实时传输流可能存在延时或者抖动,同时系统也存在调度的上分配,因此解复用模块对实时音视频传输流的处理输出就会有瞬时峰值及低谷,将会发生在下一级的消费则会对流的抖动不能适应,导致播放异常的问题,因此需要对解复用后的pes流数据进行平滑缓冲,即流在内存中缓存下来,然后以一定的消费速度向一级模块输入,起到了平滑作用。

其中,pes流为基本码流,pes是打包过的es(基本单元流,解复用后的视频流或音频流),已经插入pts和dts,一般是一个pes包为一帧图像。

在本发明的一个实施例中,所述音频帧数据的起始播放时间以及播放时长获取同步时间基准,之后还包括:

判断所述同步时间基准是否存在;

当所述同步时间基准不存在时,获取视频帧数据对应的同步时间基准,并根据所述视频帧同步时间基准输出所述待播放视频帧数据。

在本发明实施例中,可通过音频帧数据的起始播放流时间以及播放时长的和值,判断同步时间基准是否存在,具体的,当在播放一个节目时,如果当前节目播放是处于静音的状态,即,没有声音时,此时音频数据没有进行播放,即,无法计算同步时间基准,此时同步时间基准不存在。

在本发明实施例中,视频帧数据对应的同步时间基准是以视频帧开始播放的时间戳作为起始时间,以这个起始时间为基准向前推进,推进速度可通过视频帧的播放进行获取。并以此不断推进的时间轴作为同步时间基准,后续视频帧可通过该不断推进的时间轴作为参考,以判断是否输出显示。

在本发明的一个实施例中,所述根据所述视频帧数据,所述根据所述视频帧数据的首帧播放时间以及播放时长,获取视频帧数据对应的同步时间基准,之后还包括:

判断所述视频帧数据对应的同步时间基准是否存在。

当所述视频帧数据对应的同步时间基准不存在时,获取预设的同步时间基准,并根据所述预设的同步时间基准输出所述视频帧图像。

在本发明实施例中,判断视频帧数据对应的同步时间基准是否存在可以通过判断视频帧数据是否存在进行判断,当视频帧数据消失,或者视频帧没有播放时,解复用模块无法对视频帧数据进行处理,则无法获取解复用后视频帧的显示时间戳,此时视频帧对应的同步时间基准不存在。

在本发明实施例中,当音频帧数据以及视频帧数据都不能提供同步时间基准时,使用系统时钟作为同步时间基准,并根据该同步时间基准进行音视频播放,以实现音视频同步。

具体,系统中预设同步时钟,用于向外部提供音视频同步时间,音频或者视频根据此时间进行同步输出处理,而当音频或者视频突然消失时,则无法提供同步时间基准,此时需要切换同步时钟,采用系统的时钟作为同步时间基准,通过此种方式,可以使音视频在任何情况下都可以实现同步,降低了外界干扰,解决了audioqueue框架下无法获取流时间,造成无法同步播放的问题。

本发明实施例中,提供了一种基于audioqueue框架下的音视频同步方法,通过获取音频帧数据以及视频帧数据,并根据音频帧数据的起始播放流时间以及播放时长获取同步时间基准,根据音频帧数据获取视频帧数据以及所述视频帧数据对应的时间信息,并在该同步时间基准与该时间信息之间的差值小于预设预设阈值时,输出视频帧,以实现音视频同步,通过对音频帧数据以及视频帧数据在缓冲、解码以及渲染等过程中的时间戳进行获取,并计算,以使视频帧根据同步时间基准进行播放,有效解决现有技术,在进行音频播放时,不能得到准确的时间戳,视频帧则不能准确的输出,造成音视频不能同步播放的问题。

图6示出了本发明实施例提供的一种音视频同步系统的结构,为了便于说明,仅示出了与本发明实施例相关的部分。

音视频同步的系统200包括:音视频帧数据获取单元21、第一同步时间获取单元22、时间信息获取单元23、第一判断单元24、第二判断单元25以及视频显示单元26。

音视频帧数据获取单元21,用于获取音频帧数据以及视频帧数据。

在本发明实施例中,音视频帧数据获取单元21包括解复用模块,用于通过接收实时音视频传输流,对该音视频传输流进行解复用处理,以获取音频帧数据以及视频帧数据,具体的,可实时通过有线端口、网络端口、usb端口等获取实时节目流,并进行解密处理,在解密处理后,通过解复用模块将该音视频传输流中类型相同的packet进行存储,分别处理。以将音频、视频或者其他业务信息的数据区分开来。其作用在于,将音视频传输流中数据包分离,相同节目的ts包进行提取组合成音频帧或者视频帧的数据块。

在本发明实施例中,音频帧数据可以为压缩的数据也可以为原始的数据。

第一同步时间获取单元22,用于根据所述音频帧数据的起始播放流时间以及播放时长获取同步时间基准。

在本发明实施例中,起始播放流时间为视频同步到音频时,音频帧数据开始播放时的流时间点,即,在将音频数据输入到audioqueue音频处理框架中进行音视频播放,audioqueue音频处理框架根据实际情况对音频数据进行缓冲、解析、解码,并将解码后的音频帧数据进行播放,因此该起始播放流时间即为audioqueue音频处理框架开始播放第一帧音频数据的时间。

在本发明实施例中,该起始播放流时间具体可通过如下方式获取,当解复用模块对音频数据进行解复用后,获取解复用后音频显示时间戳pts,结合音频数据的播放进度,提供一个主同步时间单位,该主同步时间单元是从pes包的包头中解析出来的,该主同步时间单位即为起始播放流时间。

在本发明实施例中,音频帧数据的播放时长可以根据音频数据的播放数量,转换为播放时长,比如,播放一个音频帧花费的时间为0.01秒,则播放20个音频帧的时长为0.2秒。

在本发明实施例中,同步时间基准是用来同步视频帧画面的参考播放时间,比如,获取的音频数据的起始播放流时间为time0,音频数据继续播放,在到达某一时间,音频数据播放了time1(20分钟10秒32毫秒),则同步时间基准=time0+time1(20分钟10秒32毫秒),该时间为流时间,而非实际时间,另,播放的时长20分钟10秒32毫秒可从相关的接口直接获取。

时间信息获取单元23,用于根据所述视频帧数据,获取当前待播放视频帧数据以及所述待播放视频帧数据对应的时间信息。

在本发明实施例中,待播放视频帧数据可以通过获取的视频帧数据当前播放的进度进行获取。

作为本发明的一种实施例,可通过建立视频帧数据与时间信息之间的一一映射关系,并相互关联存储,根据该视频帧数据,获取当前待播放的视频帧图像,并根据当前带播放的视频帧图像查询预设的视频帧数据与时间信息的映射关系,以获取当前待播放的视频帧图像对应的时间信息。

其中,该时间信息为每个为每帧视频帧数据对应的时间戳,该时间戳可从解复用后的视频帧数据包的包头中提取出来,是视频帧数据中固有的时间信息。

第一判断单元24,用于判断所述时间信息是否大于所述同步时间基准。

在本发明实施例中,可通过时间信息与同步时间基准的差值进行判断,比如,时间信息为2秒,同步时间基准为1秒,则时间信息大于同步时间基准。

进一步,在进行判断时,可将时间信息与同步时间基准的时间单位进行统一,以便可直接根据时间信息与同步时间基准的差值进行判断。

第二判断单元25,用于当判断结果为否时,判断所述时间信息与所述同步时间基准之间的时间差是否大于预设阈值。

在本发明实施例中,预设阈值可以为具体的数值,比如,3秒、10分钟、1小时等,具体可以根据实际情况进行设置,本发明不做限定。

在本发明实施例中,在获取到时间信息与同步时间基准后,将两者之间的差值与预设阈值进行比对,进而判断是否大于该预设阈值。

在本发明实施例中,当判断结果为是时,则将该视频帧延迟等待,直到时间信息与同步时间基准

视频显示单元26,用于当判断结果为否时,输出所述待播放视频帧数据。在本发明实施例中,当时间信息与所述同步时间基准之间的时间差小于预设阈值时,则进行该待播放视频帧数据的播放,以实现音视频同步播放,当判断结果为是时,则认为该待播放视频帧数据为过期帧或者无效帧图像,根据情况进行跳帧处理。

本发明实施例中,提供了一种基于audioqueue框架下的音视频同步方法,通过获取音频帧数据以及视频帧数据,并根据音频帧数据的起始播放流时间以及播放时长获取同步时间基准,根据音频帧数据获取视频帧数据以及所述视频帧数据对应的时间信息,并在该同步时间基准与该时间信息之间的差值小于预设预设阈值时,输出视频帧,以实现音视频同步,通过对音频帧数据以及视频帧数据在缓冲、解码以及渲染等过程中的时间戳进行获取,并计算,以使视频帧根据同步时间基准进行播放,有效解决现有技术,在进行音频播放时,不能得到准确的时间戳,视频帧则不能准确的输出,造成音视频不能同步播放的问题。

参见图7,在本发明实施例中,时间信息获取单元23,包括:解码模块231以及时间信息获取模块432。

解码模块231,用于对所述视频帧数据进行解码处理。

在本发明实施例中,由于原始的视频数据占用空间过大,传输浪费带宽,因此视频帧数据通常以压缩形式的数据进行传输,所以在播放过程中需要进行解码处理,具体的解码方式可以是软件解码、硬件解码以及无线解码等。

时间信息获取模块232,用于根据预存的视频帧数据与时间信息之间的对应关系,获取所述待播放视频帧数据对应的时间信息。

在本发明实施例中,在解码完成后,将解码的视频帧以及每个视频帧的时间戳对应存储并建立索引,以便在消费一帧数据时,可以有效的判断这帧数据对应的时间戳,进而判断该帧数据是否显示输出或者丢弃处理。

进一步,根据预存的视频帧数据以及视频帧的时间戳,通过待播放的视频帧数据,在建立的索引中查找对应时间信息。

参见图8,在本发明的一个实施例中,第一同步时间基准获取单元22,包括:音频帧数据处理模块221以及同步时间基准获取模块222。

音频帧数据处理模块221,用于将所述音频帧数据输入到音频处理系统中,获取所述音频帧数据的首帧的播放流时间以及音频播放时长。

在本发明实施例中,在本发明实施例中,起始播放流时间为视频同步到音频时,音频帧数据开始播放时的流时间点,即,在将音频数据输入到audioqueue音频处理框架中进行音视频播放,audioqueue音频处理框架根据实际情况对音频数据进行缓冲、解析、解码,并将解码后的音频帧数据进行播放,因此该起始播放流时间即为audioqueue音频处理框架开始播放第一帧音频数据的时间。

在本发明实施例中,该起始播放流时间具体可通过如下方式获取,当解复用模块对音频数据进行解复用后,获取解复用后音频显示时间戳pts,结合音频数据的播放进度,提供一个主同步时间单位,该主同步时间单元是从pes包的包头中解析出来的,该主同步时间单位即为起始播放流时间。

在本发明实施例中,音频帧数据的播放时长可以根据音频数据的播放数量,转换为播放时长,比如,播放一个音频帧花费的时间为0.01秒,则播放20个音频帧的时长为0.2秒。

同步时间基准获取模块222,用于根据所述首帧的播放流时间以及音频播放时长的和值,获取所述同步时间基准。

在本发明实施例中,同步时间基准是用来同步视频帧画面的参考播放时间,比如,获取的音频数据的起始播放流时间为time0,音频数据继续播放,在到达某一时间,音频数据播放了time1(20分钟10秒32毫秒),则同步时间基准=time0+time1(20分钟10秒32毫秒),该时间为流时间,而非实际时间,另,播放的时长20分钟10秒32毫秒可从相关的接口直接获取。。

参见图9,在本发明的一个实施例中,音视频同步的系统,还包括:

缓存处理单元31,用于对所述音频帧数据以及视频帧数据分别进行缓冲以及平滑处理。

在本发明实施例中,对音频帧数据以及所述视频帧数据进行缓冲以及平滑处理,主要通过开辟一块内存,用于存储解复用后输出的pes流数据,由于实时传输流可能存在延时或者抖动,同时系统也存在调度的上分配,因此解复用模块对实时音视频传输流的处理输出就会有瞬时峰值及低谷,将会发生在下一级的消费则会对流的抖动不能适应,导致播放异常的问题,因此需要对解复用后的pes流数据进行平滑缓冲,即流在内存中缓存下来,然后以一定的消费速度向一级模块输入,起到了平滑作用。

其中,pes流为基本码流,pes是打包过的es(基本单元流,解复用后的视频流或音频流),已经插入pts和dts,一般是一个pes包为一帧图像。

在本发明的一个实施例中,所述音视频同步的系统,还包括:

第三判断单元,用于判断所述同步时间基准是否存在。

第二同步时间基准获取单元,用于当所述同步时间基准存在时,根据所述视频帧数据的首帧播放时间以及播放时长,获取视频帧数据对应的同步时间基准,并根据所述视频帧数据对应的同步时间基准输出所述待播放视频帧数据。

在本发明实施例中,可通过音频帧数据的起始播放流时间以及播放时长的和值,判断同步时间基准是否存在,具体的,当在播放一个节目时,如果当前节目播放是处于静音的状态,即,没有声音时,此时音频数据没有进行播放,即,无法计算同步时间基准,此时同步时间基准不存在。

在本发明实施例中,视频帧数据对应的同步时间基准是以视频帧开始播放的时间戳作为起始时间,以这个起始时间为基准向前推进,推进速度可通过视频帧的播放进行获取。并以此不断推进的时间轴作为同步时间基准,后续视频帧可通过该不断推进的时间轴作为参考,以判断是否输出显示。

在本发明的一个实施例中,所述音视频同步的系统,还包括:

第四判断单元,用于判断所述视频帧数据对应的同步时间基准是否存在。

第三同步时间基准获取单元,用于当所述视频帧数据对应的同步时间基准不存在时,获取预设的同步时间基准,并根据所述预设的同步时间基准输出所述待播放视频帧数据。

在本发明实施例中,判断视频帧数据对应的同步时间基准是否存在可以通过判断视频帧数据是否存在进行判断,当视频帧数据消失,或者视频帧没有播放时,解复用模块无法对视频帧数据进行处理,则无法获取解复用后视频帧的显示时间戳,此时视频帧对应的同步时间基准不存在。

在本发明实施例中,当音频帧数据以及视频帧数据都不能提供同步时间基准时,使用系统时钟作为同步时间基准,并根据该同步时间基准进行音视频播放,以实现音视频同步。

具体,系统中预设同步时钟,用于向外部提供音视频同步时间,音频或者视频根据此时间进行同步输出处理,而当音频或者视频突然消失时,则无法提供同步时间基准,此时需要切换同步时钟,采用系统的时钟作为同步时间基准,通过此种方式,可以使音视频在任何情况下都可以实现同步,降低了外界干扰,解决了audioqueue框架下无法获取流时间,造成无法同步播放的问题。

本发明实施例还提供了一种计算机装置,该计算机装置包括处理器和存储器,处理器用于执行存储器中存储的计算机程序时实现上述发明实施例提供的音视频同步方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序(指令),该计算机程序(指令)被处理器执行时实现上述发明实施例提供的音视频同步方法的步骤。

示例性的,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。例如,计算机程序可以被分割成上述各个方法实施例提供的音频同步方法的步骤。

本领域技术人员可以理解,上述计算机装置的描述仅仅是示例,并不构成对计算机装置的限定,可以包括比上述描述更多或更少的部件,或者组合某些部件,或者不同的部件,例如可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

所述计算机装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信号以及软件分发介质等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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