视频数据的处理方法和装置的制作方法

文档序号:7798008阅读:129来源:国知局
专利名称:视频数据的处理方法和装置的制作方法
技术领域
本发明属于视频处理领域,具体涉及一种视频数据的处理方法和装置。
背景技术
在当前视频播放技术中,用户进行本地视频播放时,先需要对视频进行解码,而视频的解码包括视频图像解码和音频解码。因为二者分别解码,往往会出现音频的解码速度与视频解码速度并不一致的现象;现有的播放技术为使得视频图像解码与音频解码尽量同步,采取以音频解码速度为准的方式。但这种解码方式,可能会出现在音频已解码播放了
1.5秒的内容时,而视频才解码了 I秒的内容,这时候视频解码速度就跟不上播放速度,就是音视频不同步了。目前针对音视频不同步的方法大多是提高视频解码速度,以使得视频解码速度跟上音频解码速度。但视频解码速度会依赖播放器的硬件配置,针对硬件配置不高的播放器则无法提高视频解码速度以获得音视频同步的效果。这种情况下急需一种方案能够让硬件配置较低的播放器能够完成音视频同步。

发明内容
本发明所要解决的技术问题是提供一种能够让硬件配置较低的播放器完成音视频同步的视频数据的处理方法和装置。为解决上述技术问题,本发明提供一种视频数据的处理方法,包括:调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中;调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据,并根据所述视频帧数据的大小同步播放对应的音频数据。在本发明另一实施例中,所述缓冲队列包括第一缓冲队列和第二缓冲队列;所述第一缓冲队列用于缓冲已完成播放的视频帧数据,所述第二缓冲队列用于缓冲等待播放的视频帧数据;所述缓冲队列中的视频帧数据为按照视频播放顺序排列好的视频帧数据。在本发明另一实施例中,所述调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中的步骤包括:监测所述第二缓冲队列中视频帧数据的大小;当所述第二缓冲队列中视频帧数据小于预设的阈值时,则调用预设的解码线程对等待播放的视频帧数据进行解密,并将解密后的视频帧数据放入所述第二缓冲队列。在本发明另一实施例中,所述调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据的步骤包括:若当前播放的视频帧数据为所述第二缓冲队列中队尾的视频帧数据,则停止播放所述第二缓冲队列中的视频帧数据;检测所述第二缓冲队列中视频帧数据的大小是否小于预设的阈值,并当检测结果为否时,调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据。
在本发明另一实施例中,还包括:接收视频播放后退指令,从所述第一缓冲队列往队首方向提取视频帧数据;若提取到所述第一缓冲队列中队首的视频帧数据,则调用解码器从所述队首位置往前解码预设大小的视频帧数据,并将所述解码后的视频帧数据按照视频播放顺序放入所述第一缓冲队列,形成所述第一缓冲队列新的队首的视频帧数据,执行所述从所述第一缓冲队列往队首方向提取视频帧数据的步骤。本发明还提供了一种视频数据处理装置,包括:解码线程处理模块,用于调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中;播放线程处理模块,用于调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据,并根据所述视频帧数据的大小同步播放对应的音频数据。在本发明另一实施例中,所述缓冲队列包括第一缓冲队列和第二缓冲队列;所述第一缓冲队列用于缓冲已完成播放的视频帧数据,所述第二缓冲队列用于缓冲等待播放的视频帧数据;所述缓冲队列中的视频帧数据为按照视频播放顺序排列好的视频帧数据。在本发明另一实施例中,所述解码线程处理模块还包括:检测模块,用于监测所述第二缓冲队列中视频帧数据的大小;解密模块,用于当所述第二缓冲队列中视频帧数据的大小小于预设的阈值时,调用预设的解码线程对等待播放的视频帧数据进行解密,并将解密后的视频帧数据放入所述第二缓冲队列。在本发明另一实施例中,所述播放线程处理模块还包括:第一处理子模块,用于当前播放的视频帧数据为所述第二缓冲队列中队尾的视频帧数据时,则停止播放所述第二缓冲队列中的视频帧数据;第二处理子模块,用于检测所述第二缓冲队列中视频帧数据的大小大于等于预设的阈值时,调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据。在本发明另一实施例中,所述播放线程处理模块还用于:接收视频播放后退指令,从所述第一缓冲队列往队首方向提取视频帧数据;若提取到所述第一缓冲队列中队首的视频帧数据,则从所述队首位置往前解码预设大小的视频帧数据,并将所述解码后的视频帧数据按照视频播放顺序放入所述第一缓冲队列,形成所述第一缓冲队列新的队首的视频帧数据,从所述第一缓冲队列往队首方向提取视频帧数据。本发明所达到的技术效果是:采用本发明实施例视频数据的处理方法和装置,会在解码速度跟不上播放速度时候暂停播放,等待解码缓冲,缓冲完成后继续播放,解决音视频不同步的问题。后退的时候,由于每一帧都是通过解码一段时间的视频帧,不会出现直接Seek所带来的定位不准确,造成回退的不准确问题。


图1为本发明一种视频数据的处理方法的一实施例的流程图;图2为本发明一种视频数据处理装置的一实施例的结构示意图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。参照图1为本发明一种视频数据的处理方法的一实施例的流程图,在本发明实施例中,第一缓冲队列用于缓冲已完成播放的视频帧数据,第二缓冲队列用于缓冲等待播放的视频帧数据;所述缓冲队列中的视频帧数据为按照视频播放顺序排列好的视频帧数据。步骤S101、调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中;在本步骤中,在解码视频数据时还可以监测所述第二缓冲队列中视频帧数据的大小;当所述第二缓冲队列中视频帧数据小于预设的阈值时,则调用预设的解码线程对等待播放的视频帧数据进行解密,并将解密后的视频帧数据放入所述第二缓冲队列。在本发明实施例中,需要预先开辟一个至少能够存储2N个视频帧的内存区,作为缓存区给缓冲队列使用。缓冲队列的定义,队首:缓冲队列里面视频帧时间戳最小的视频帧;队尾:视频帧时间戳最大的视频帧;当前视频帧:下一次播放取帧的位置;正常播放时,当前视频帧可以位于队列的中间,保证当前视频帧前为第一缓冲队列,当前视频帧后为第二缓冲队列。在正式播放前,先解码一段视频,把第一缓冲队列填满;播放开始后,播放器每取走一帧视频,当前视频帧加一,指向下一次取帧的位置;然后继续解码一个视频帧向第二缓冲队列填写,填写的位置就是队尾,队尾和队首加一;这样取一帧,写一帧。步骤S102、调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据,并根据所述视频帧数据的大小同步播放对应的音频数据。在步骤S102中若当前播放的视频帧数据为所述第二缓冲队列中队尾的视频帧数据,则停止播放所述第二缓冲队列中的视频帧数据;所述第二缓冲队列中队尾的视频帧数据即是时间戳最大的视频帧数据。当所述第二缓冲队列中视频帧数据大于等于预设的阈值时,调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据。如果第一缓冲队列长度是N,则当播放视频到第N+1帧时意味着,已播放完的视频帧达到N+1帧,未播放帧有N巾贞,为了保持缓存区空间够用,则可以将已播放完帧中离当前播放巾贞最远的一巾贞图片删除。当需要进行后退播放时,采用如下步骤:步骤S103、接收视频播放后退指令,从所述第一缓冲队列往队首方向提取视频帧数据。进一步,若提取到所述第一缓冲队列中队首的视频帧数据,则调用解码器从所述队首位置往前解码预设大小的视频帧数据,并将所述解码后的视频帧数据按照视频播放顺序放入所述第一缓冲队列,形成所述第一缓冲队列新的队首的视频帧数据,执行所述从所述第一缓冲队列往队首方向提取视频帧数据的步骤。进一步地,当视频解码速度跟不上取帧速度时可以采用如下步骤:
步骤S104、当播放所取帧与队尾帧重合时,发出缓冲消息等待解码;步骤S105、当解码N帧将缓冲队列的前进部分填满后继续播放取帧。当解码速度较慢,解码速度跟不上取帧速度,当前帧就会与队首帧重合,这时候就发缓冲消息,暂停取帧,解码N帧将缓冲队列的前进部分填满,然后继续播放。当用户需要采取后退播放时可以采用如下步骤:步骤S106、接收后退指令;当用户需要后退播放时,可以发出后退指令。步骤S107、根据所述后退指令取出当前帧,并将当前帧减一;步骤S108、当前帧与队首重叠时,调用解码器的Seek,回到当前帧的前N帧。步骤S109、解码N帧视频填写到缓存区的缓冲队列的前进部分;步骤S110、修改缓冲队列的标记,队首后退到当前帧位置,队尾移动到原队首位置。当用户需要后退播放的时候,视频数据处理装置可以取出当前播放帧,当前帧减一;当前播放帧与队尾最后一帧重叠的时候,意味着已经取完了所有的缓冲队列中的视频帧,就调用解码器的Seek,回退到当前帧(即队尾最后一帧)的前第N帧的地方,再解码这N帧视频,填写到缓冲队列的前进部分,然后修改缓冲队列的标记,队首后退N帧到当前帧的位置,队尾移动到原队首的位置,当前帧的位置不变,这样就可以继续后退了。可以根据用户要求一帧一帧地往后退,实现了当用户看到视频中某个场景,想截取,或回看时,可以准确地定位到某帧,去截取或者回看。现有中,当用户点击视频进度中某点,想回看或截取时,即调用了解码器的seek,会造成定位不准确。采用本发明实施例的视频数据的处理方法,会在解码速度跟不上播放速度时候暂停播放,等待解码缓冲,缓冲完成后继续播放,解决音视频不同步的问题。后退的时候,由于每一帧都是通过解码一段时间的视频帧,不会出现直接Seek所带来的定位不准确,造成回退的不准确问题。参照图2为本发明一种视频数据处理装置一实施例的结构示意图;本发明实施例提供的视频数据处理装置为图1对应方法实施例的装置,所述装置包括:解码线程处理模块21,用于调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中;播放线程处理模块22,用于调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据,并根据所述视频帧数据的大小同步播放对应的音频数据。在本发明另一实施例中,所述缓冲队列包括第一缓冲队列和第二缓冲队列;所述第一缓冲队列用于缓冲已完成播放的视频帧数据,所述第二缓冲队列用于缓冲等待播放的视频帧数据;所述缓冲队列中的视频帧数据为按照视频播放顺序排列好的视频帧数据。在本发明另一实施例中,所述解码线程处理模块21还包括:检测模块211,用于监测所述第二缓冲队列中视频帧数据的大小;解密模块212,用于当所述第二缓冲队列中视频帧数据的大小小于预设的阈值时,调用预设的解码线程对等待播放的视频帧数据进行解密,并将解密后的视频帧数据放入所述第二缓冲队列。
在本发明另一实施例中,所述播放线程处理模块22还包括:第一处理子模块221,用于当前播放的视频帧数据为所述第二缓冲队列中队尾的视频帧数据时,则停止播放所述第二缓冲队列中的视频帧数据;第二处理子模块222,用于检测所述第二缓冲队列中视频帧数据的大小大于等于预设的阈值时,调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据。在本发明另一实施例中,所述播放线程处理模块22还用于:接收视频播放后退指令,从所述第一缓冲队列往队首方向提取视频帧数据;若提取到所述第一缓冲队列中队首的视频帧数据,则从所述队首位置往前解码预设大小的视频帧数据,并将所述解码后的视频帧数据按照视频播放顺序放入所述第一缓冲队列,形成所述第一缓冲队列新的队首的视频帧数据,从所述第一缓冲队列往队首方向提取视频帧数据。在本命实施例中所述第一缓冲队列用于缓冲已完成播放的视频帧数据,所述第二缓冲队列用于缓冲等待播放的视频帧数据;所述缓冲队列中的视频帧数据为按照视频播放顺序排列好的视频帧数据。在本步骤中,在解码视频数据时还可以监测所述第二缓冲队列中视频帧数据的大小;当所述第二缓冲队列中视频帧数据小于预设的阈值时,则调用预设的解码线程对等待播放的视频帧数据进行解密,并将解密后的视频帧数据放入所述第二缓冲队列。在本发明实施例中,需要预先开辟一个至少能够存储2N个视频帧的内存区,作为缓存区给缓冲队列使用。缓冲队列的定义,队首:缓冲队列里面视频帧时间戳最小的视频帧;队尾:视频帧时间戳最大的视频帧;当前视频帧:下一次播放取帧的位置;正常播放时,当前视频帧可以位于队列的中间,保证当前视频帧前为第一缓冲队列,当前视频帧后为第二缓冲队列。在正式播放前,解码线程处理模块21先解码一段视频,把第一缓冲队列填满;播放开始后,播放线程处理模块22每取走一帧视频,当前视频帧加一,指向下一次取帧的位置;然后继续解码一个视频帧向第二缓冲队列填写,填写的位置就是队尾,队尾和队首加
一;这样取一巾贞,写一中贞。若播放线程处理模块22当前播放的视频帧数据为所述第二缓冲队列中队尾的视频帧数据,则停止播放所述第二缓冲队列中的视频帧数据;所述第二缓冲队列中队尾的视频帧数据即是时间戳最大的视频帧数据。当所述第二缓冲队列中视频帧数据大于等于预设的阈值时,播放线程处理模块22播放所述缓冲队列中的视频帧数据。如果第一缓冲队列长度是N,则当播放视频到第N+1帧时意味着,已播放完的视频帧达到N+1帧,未播放帧有N帧,为了保持缓存区空间够用,则播放线程处理模块22可以将已播放完帧中离当前播放帧最远的一帧图片删除。进一步,播放线程处理模块22若提取到所述第一缓冲队列中队首的视频帧数据,解码线程处理模块21从所述队首位置往前解码预设大小的视频帧数据,并将所述解码后的视频帧数据按照视频播放顺序放入所述第一缓冲队列,形成所述第一缓冲队列新的队首的视频帧数据,执行所述从所述第一缓冲队列往队首方向提取视频帧数据的步骤。
在正式播放前,解码线程处理模块21先解码一段视频,把缓冲队列前进部分填满;播放开始后,播放线程处理模块22每取走一帧视频,当前视频帧加一,指向下一次取帧的位置;然后解码线程处理模块21继续解码一个视频帧向缓冲队列填写,填写的位置就是队尾,队尾和队首加一;这样取一帧,写一帧,保证队列一半是未播放过的,另一半是已经播放过的。当播放线程处理模块22播放视频到第N+1帧时意味着,已播放完的视频帧达到N+1帧,未播放帧有N帧,为了保持缓存空间够用,播放线程处理模块22可以将已播放完帧中离当前播放帧最远的一帧图片删除。当解码线程处理模块21解码速度较慢,解码速度跟不上播放线程处理模块22取帧速度,当前帧就会与队首帧重合,这时候解码线程处理模块21可以发缓冲消息,播放线程处理模块22暂停取帧,然后解码线程处理模块21解码N帧将缓冲队列的前进部分填满,然后继续播放线程处理模块22播放。当用户需要后退播放的时候,播放线程处理模块22可以取出当前播放帧,当前帧减一;当前播放帧与队尾最后一帧重叠的时候,意味着已经取完了所有的缓冲队列中的视频帧,就调用解码模块的Seek,回退到当前帧(即队尾最后一帧)的前第N帧的地方,再解码这N帧视频,填写到缓冲队列的前进部分,然后修改缓冲队列的标记,队首后退N帧到当前帧的位置,队尾移动到原队首的位置,当前帧的位置不变,这样就可以继续后退了。可以根据用户要求一帧一帧地往后退,实现了当用户看到视频中某个场景,想截取,或回看时,可以准确地定位到某帧,去截取或者回看。现有中,当用户点击视频进度中某点,想回看或截取时,即调用了解码器的seek,会造成定位不准确。采用本发明实施例的视频数据处理装置,会在解码速度跟不上播放速度时候暂停播放,等待解码缓冲,缓冲完成后继续播放,解决音视频不同步的问题。后退的时候,由于每一帧都是通过解码一段时间的视频帧,不会出现直接Seek所带来的定位不准确,造成回退的不准确问题。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种视频数据的处理方法,其特征在于,包括: 调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中; 调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据,并根据所述视频帧数据的大小同步播放对应的音频数据。
2.根据权利要求1所述的方法,其特征在于,所述缓冲队列包括第一缓冲队列和第二缓冲队列; 所述第一缓冲队列用于缓冲已完成播放的视频帧数据,所述第二缓冲队列用于缓冲等待播放的视频帧数据; 所述缓冲队列中的视频帧数据为按照视频播放顺序排列好的视频帧数据。
3.根据权利要求2所述的方法,其特征在于,所述调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中的步骤包括: 监测所述第二缓冲队列中视频帧数据的大小; 当所述第二缓冲队列中视频帧数据小于预设的阈值时,则调用预设的解码线程对等待播放的视频帧数据进行解密,并将解密后的视频巾贞数据放入所述第二缓冲队列。
4.根据权利要求3所述的方法,其特征在于,所述调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据的步骤包括: 若当前播放的视频帧数据为所述第二缓冲队列中队尾的视频帧数据,则停止播放所述第二缓冲队列中的视频帧数据; 当所述第二缓冲队列中视频帧数据大于等于预设的阈值时,调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据。
5.根据权利要求2-4任一项所述的方法,其特征在于,还包括: 接收视频播放后退指令,从所述第一缓冲队列往队首方向提取视频帧数据; 若提取到所述第一缓冲队列中队首的视频帧数据,则调用解码器从所述队首位置往前解码预设大小的视频帧数据,并将所述解码后的视频帧数据按照视频播放顺序放入所述第一缓冲队列,形成所述第一缓冲队列新的队首的视频帧数据,执行所述从所述第一缓冲队列往队首方向提取视频帧数据的步骤。
6.一种视频数据的处理装置,其特征在于,包括: 解码线程处理模块,用于调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中; 播放线程处理模块,用于调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据,并根据所述视频帧数据的大小同步播放对应的音频数据。
7.根据权利要求6所述的装置,其特征在于,所述缓冲队列包括第一缓冲队列和第二缓冲队列; 所述第一缓冲队列用于缓冲已完成播放的视频帧数据,所述第二缓冲队列用于缓冲等待播放的视频帧数据; 所述缓冲队列中的视频帧数据为按照视频播放顺序排列好的视频帧数据。
8.根据权利要求7所述的装置,其特征在于,所述解码线程处理模块还包括: 检测模块,用于监测所述第二缓冲队列中视频帧数据的大小;解密模块,用于当所述第二缓冲队列中视频帧数据的大小小于预设的阈值时,调用预设的解码线程对等待播放的视频帧数据进行解密,并将解密后的视频帧数据放入所述第二缓冲队列。
9.根据权利要求8所述的装置,其特征在于,所述播放线程处理模块还包括: 第一处理子模块,用于当前播放的视频帧数据为所述第二缓冲队列中队尾的视频帧数据时,则停止播放所述第二缓冲队列中的视频帧数据; 第二处理子模块,用于检测所述第二缓冲队列中视频帧数据的大小大于等于预设的阈值时,调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据。
10.根据权利要求7-9任一项所述的装置,其特征在于,所述播放线程处理模块还用于: 接收视频播放后退指令,从所述第一缓冲队列往队首方向提取视频帧数据; 若提取到所述第一缓冲队列中队首的视频帧数据,则从所述队首位置往前解码预设大小的视频帧 数据,并将所述解码后的视频帧数据按照视频播放顺序放入所述第一缓冲队列,形成所述第一缓冲队列新的队首的视频帧数据,从所述第一缓冲队列往队首方向提取视频帧数据。
全文摘要
本发明公开一种视频数据的处理方法和装置,视频数据的处理方法包括调用预设的解码线程,对当前视频帧数据进行解码,并将解码后的视频帧数据放入预设的缓冲队列中;调用预设的视频播放线程,播放所述缓冲队列中的视频帧数据,并根据所述视频帧数据的大小同步播放对应的音频数据。本发明还公开一种视频数据的处理装置。采用本发明实施例视频数据的处理方法和装置,可解决播放时音视频不同步的问题;后退的时候,不会出现直接Seek所带来的定位不准确,造成回退的不准确问题。
文档编号H04N21/4402GK103179454SQ20111044219
公开日2013年6月26日 申请日期2011年12月26日 优先权日2011年12月26日
发明者林家恒 申请人:深圳万兴信息科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1