一种流媒体音视频同步播放的方法及其系统转让专利

申请号 : CN200710125243.8

文献号 : CN101466044B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙健黄国标

申请人 : 康佳集团股份有限公司

摘要 :

本发明公开了一种流媒体音视频同步播放的方法,包括:将音视频数据缓存到预先设置的缓冲区中,并将所述音视频数据分解为多个独立的视频帧和音频帧;将每个独立的视频帧和音频帧分别按照其时间戳值的大小进行排序,并将时间戳值最小且大于预设的时间戳参考值的视频帧和音频帧放入音视频解码器中播放。相应地,本发明还提供一种流媒体音视频同步播放的系统。借此,本发明可以提供有效实现音视频同步播放的技术,消除由音视频不能同步而带来的画面或声音的滞留的问题。

权利要求 :

1.一种流媒体音视频同步播放的方法,其特征在于,包括:

A、将流媒体音视频同步播放系统的内存划分为若干个固定大小的内存区作为缓存音视频数据的缓冲区,并设置时间戳参考值;

B、将音视频数据缓存到预先设置的缓冲区中,并将所述音视频数据分解为多个独立的视频帧和音频帧;

C、将每个独立的视频帧和音频帧分别按照其时间戳值的大小进行排序,并将时间戳值最小且大于预设的时间戳参考值的视频帧和音频帧放入音视频解码器中播放;

D、将步骤C中的所述时间戳值最小且大于预设的时间戳参考值的时间戳值设置为下一轮流媒体音视频同步播放过程中的预设的时间戳参考值,并返回到步骤C中,进行流媒体音视频同步播放处理直到音视频数据流处理结束。

2.根据权利要求1所述的流媒体音视频同步播放的方法,其特征在于,所述步骤B包括:B1.在若干个缓冲区中查找到一个空闲的缓冲区,将音视频数据存满该缓冲区,并将音视频数据分解为多个独立的视频帧和音频帧;

B2.当所述缓冲区中的音视频数据分解完成后,将该缓冲区的状态设置为空闲状态。

3.根据权利要求1所述的流媒体音视频同步播放的方法,其特征在于,在所述步骤C包括:C1.将每一个独立的视频帧和音频帧作为节点分别建立视频帧单向链表和音频帧单向链表;

C2.将每个节点按照其时间戳值的大小,从小到大的顺序进行排序,并从视频帧单向链表和音频帧单向链表中分别查找到时间戳值最小的视频帧和音频帧;

C3.若所述时间戳值最小的视频帧和音频帧的时间戳值大于所述预设的时间戳参考值,则将该视频帧和音频帧放入音视频解码器中播放,否则将该视频帧和音频帧丢弃。

4.根据权利要求1所述的流媒体音视频同步播放的方法,其特征在于, 所述预设的时间戳参考值是由一个记录当前流媒体播放时间的整型变量所记录的当前播放流媒体的时间。

5.根据权利要求4所述的流媒体音视频同步播放的方法,其特征在于,所述预设的时间戳参考值的初始值为0。

6.一种流媒体的音视频同步播放的系统,其特征在于,包括:

流媒体预处理模块,用于将流媒体音视频同步播放系统的内存划分为若干个固定大小的内存区作为缓存音视频数据的缓冲区,以及设置时间戳参考值;

流媒体处理模块,用于将音视频数据缓存到预先设置的缓冲区中,并将所述音视频数据分解为多个独立的视频帧和音频帧;

流媒体播放模块,用于将每个独立的视频帧和音频帧分别按照其时间戳值的大小进行排序,并将时间戳值最小且大于预设的时间戳参考值的视频帧和音频帧放入音视频解码器中播放;

流媒体后处理模块,用于将所述时间戳值最小且大于预设的时间戳参考值的时间戳值设置为下一轮流媒体音视频同步播放过程中的预设的时间戳参考值。

7.根据权利要求6所述的流媒体音视频同步播放的系统,其特征在于,所述流媒体处理模块包括:分解模块,用于在若干个缓冲区中查找到一个空闲的缓冲区,将音视频数据存满该缓冲区,并将音视频数据分解为多个独立的视频帧和音频帧;

缓冲区状态设置模块,用于当所述缓冲区中的音视频数据分解完成后,将该缓冲区的状态设置为空闲状态。

8.根据权利要求6所述的流媒体音视频同步播放的系统,其特征在于,所述流媒体播放模块包括:链表建立模块,用于将每一个独立的视频帧和音频帧作为节点分别建立视频帧单向链表和音频帧单向链表;

排序模块,用于将每个节点按照其时间戳值的大小,从小到大的顺序进行排序,并从视频帧单向链表和音频帧单向链表中分别查找到时间戳值最小的视频帧和音频帧;

播放模块,用于当所述时间戳值最小的视频帧和音频帧的时间戳值大于所述预设的时间戳参考值时,将该视频帧和音频帧放入音视频解码器中播放,否 则将该视频帧和音频帧丢弃。

说明书 :

一种流媒体音视频同步播放的方法及其系统

技术领域

[0001] 本发明涉及流媒体领域,尤其涉及一种流媒体音视频同步播放的方法及其系统。

背景技术

[0002] 随着网络电视、通信技术及多媒体产品的迅速发展,流媒体播放系统逐渐成为热点,而在流媒体播放技术中,如何能够在接收端正确的恢复音频和视频之间的关系,即实现流媒体同步播放,成为业内人士所共同关心的问题之一。
[0003] 在现有的流媒体音视频同步播放的技术中,以一个IP网络流媒体音视频同步播放技术为例,终端在开始流媒体播放后,就不断的接收到来自网络的媒体数据包。这时的处理流程如下(以媒体的视频为mpeg4,音频为mp3为例):
[0004] (1)首先通过RTP Payload(RTP载荷)判断媒体类型,得知其是那种格式的音频或视频媒体;
[0005] (2)根据媒体类型,将媒体数据及其pts(时间标签)送到内存中的音频或视频缓冲区;
[0006] (3)a.当视频缓存区内视频数据达到一定数目后,开启定时器,根据视频数据的pts将其送到视频解码器处理,并输出视频;
[0007] (3)b.当音频缓存区内音频数据达到一定数目后,开启定时器,根据音频数据的pts,将音频缓存区内音频数据解码,并把解码输出的PCM数据送到音频芯片/声卡处理,并输出音频。
[0008] 由于IP网络传输数据的复杂因素,上述流媒体播放过程,音视频同步精度不确定,随机误差大,同步效果较差,受异常情况影响较大;因此,会产生由于音视频不能同步而带来的画面或声音的滞留。
[0009] 综上可知,现有流媒体音视频同步播放技术在实际使用上,显然存在不便与缺陷,所以有必要加以改进。

发明内容

[0010] 针对上述的缺陷,本发明的目的在于提供一种流媒体音视频同步播放的方法,以提供有效实现音视频同步播放的技术,消除由音视频不能同步而带来的画面或声音的滞留的问题。
[0011] 为了实现上述目的,本发明提供一种流媒体音视频同步播放的方法,包括:
[0012] A.将音视频数据缓存到预先设置的缓冲区中,并将所述音视频数据分解为多个独立的视频帧和音频帧;
[0013] B.将每个独立的视频帧和音频帧分别按照其时间戳值的大小进行排序,并将时间戳值最小且大于预设的时间戳参考值的视频帧和音频帧放入音视频解码器中播放。
[0014] 根据本发明的流媒体音视频同步播放的方法,在所述步骤A之前还包括将流媒体音视频同步播放系统的内存划分为若干个固定大小的内存区作为缓存音视频数据的缓冲区,以及设置时间戳参考值的步骤;和/或
[0015] 所述步骤B之后还包括将步骤B中的所述时间戳值最小且大于预设的时间戳参考值的时间戳值设置为下一轮流媒体音视频同步播放过程中的预设的时间戳参考值;以及返回到步骤B中,进行流媒体音视频同步播放处理至到音视频数据流处理结束的步骤。
[0016] 根据本发明的流媒体音视频同步播放的方法,所述步骤A包括:
[0017] A1.在若干个缓冲区中查找到一个空闲的缓冲区,将音视频数据存满该缓冲区,并将音视频数据分解为多个独立的视频帧和音频帧;
[0018] A2.当所述缓冲区中的音视频数据分解完成后,将该缓冲区的状态设置为空闲状态。
[0019] 根据本发明的流媒体音视频同步播放的方法,在所述步骤B包括:
[0020] B1.将每一个独立的视频帧和音频帧作为节点分别建立视频帧单向链表和音频帧单向链表;
[0021] B2.将每个节点按照其时间戳值的大小,从小到大的顺序进行排序,并从视频帧单向链表和音频帧单向链表中分别查找到时间戳值最小的视频帧和音频帧;
[0022] B3.若所述时间戳值最小的视频帧和音频帧的时间戳值大于所述预设的时间戳参考值,则将该视频帧和音频帧放入音视频解码器中播放,否则将该视频帧和音频帧丢弃。
[0023] 根据本发明的流媒体音视频同步播放的方法,所述预设的时间戳参考值是由一个记录当前流媒体播放时间的整型变量所记录的当前播放流媒体的时间。
[0024] 根据本发明的流媒体音视频同步播放的方法,所述预设的时间戳参考值的初始值为0。
[0025] 本发明还提供一种流媒体音视频同步播放的系统,包括:
[0026] 流媒体处理模块,用于将音视频数据缓存到预先设置的缓冲区中,并将所述音视频数据分解为多个独立的视频帧和音频帧;
[0027] 流媒体播放模块,用于将每个独立的视频帧和音频帧分别按照其时间戳值的大小进行排序,并将时间戳值最小且大于预设的时间戳参考值的视频帧和音频帧放入音视频解码器中播放。
[0028] 根据本发明的流媒体音视频同步播放的系统,还包括:
[0029] 流媒体预处理模块,用于将流媒体音视频同步播放系统的内存划分为若干个固定大小的内存区作为缓存音视频数据的缓冲区,以及设置时间戳参考值;和/或[0030] 流媒体后处理模块,用于将所述时间戳值最小且大于预设的时间戳参考值的时间戳值设置为下一轮流媒体音视频同步播放过程中的预设的时间戳参考值。
[0031] 根据本发明的流媒体音视频同步播放的系统,所述流媒体处理模块包括:
[0032] 分解模块,用于在若干个缓冲区中查找到一个空闲的缓冲区,将音视频数据存满该缓冲区,并将音视频数据分解为多个独立的视频帧和音频帧;
[0033] 缓冲区状态设置模块,用于当所述缓冲区中的音视频数据分解完成后,将该缓冲区的状态设置为空闲状态。
[0034] 根据本发明的流媒体音视频同步播放的系统,所述流媒体播放模块包括:
[0035] 链表建立模块,用于将每一个独立的视频帧和音频帧作为节点分别建立视频帧单向链表和音频帧单向链表;
[0036] 排序模块,用于将每个节点按照其时间戳值的大小,从小到大的顺序进行排序,并从视频帧单向链表和音频帧单向链表中分别查找到时间戳值最小的视频帧和音频帧;
[0037] 播放模块,用于当所述时间戳值最小的视频帧和音频帧的时间戳值大于所述预设的时间戳参考值时,将该视频帧和音频帧放入音视频解码器中播放,否则将该视频帧和音频帧丢弃。
[0038] 本发明通过将流媒体音视频同步播放的系统的缓冲区分块独立管理,提高了音视频数据流在播放过程中的容错能力,其受网络异常情况影响小。在音视频数据流解复用后,对音视频帧分别重新排序,避免了以往对解复用后的音视频帧杂乱无章的处理方式;并且利用音视频帧的重新排序,有效避免了丢帧现象。时间戳参考值的设置简单有效地实现了音视频同步,有效消除了由音频和视频帧不同步所引起的画面或声音滞留的现象。

附图说明

[0039] 图1是本发明提供的流媒体音视频同步播放的系统结构图;
[0040] 图2是本发明一个实施例中提供的流媒体音视频同步播放的系统结构图;
[0041] 图3是本发明另一个实施例中提供的流媒体音视频同步播放的系统结构图;
[0042] 图4是本发明提供的流媒体音视频同步播放的方法流程图。

具体实施方式

[0043] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0044] 图1是本发明提供的流媒体音视频同步播放的系统结构图;该流媒体音视频同步播放的系统1,包括了流媒体处理模块10、流媒体播放模块11;其中,
[0045] 流媒体处理模块10,用于将音视频数据缓存到预先设置的缓冲区中,并将所述音视频数据分解为多个独立的视频帧和音频帧;在本发明中,在流媒体音视频同步播放的系统1的内存中预先设置的缓冲区,用于缓存音视频数据,以对音视频数据进行分解处理。
[0046] 流媒体播放模块11,用于将每个独立的视频帧和音频帧分别按照其时间戳值的大小进行排序,并将时间戳值最小且大于预设的时间戳参考值的视频帧和音频帧放入音视频解码器中播放。当音视频数据分解为多个独立的视频帧和音频帧后,需要对这些视频帧和音频帧进行排序,以防止丢帧现象的发生,而造成流媒体在播放的过程中声音或图像的不连续。
[0047] 图2是本发明一个实施例中提供的流媒体音视频同步播放的系统结构图;在本实施例中,流媒体音视频同步播放的系统1还包括:
[0048] 流媒体预处理模块12,用于将流媒体音视频同步播放系统的内存划分为若干个固定大小的内存区作为缓存音视频数据的缓冲区,以及设置时间戳参考值。在利用流媒体音视频同步播放的系统1播放流媒体音视频之前,需要在流媒体音视频同步播放的系统1中的内存划分为若干个固定大小的内存区作为缓存音视频数据的缓冲区。在本发明中将缓冲区分块独立管理,容错能力强,受网络异常情况影响小。而对于划分后的缓冲区的大小无特殊要求,但一般在16k字节至64k字节之间比较合适。由于网络数据传输速率的变化范围比较小,将系统内存划分为固定大小,就可以使每块缓冲区数据的处理时间大致相等,便于管理。而设置时间戳参考值是为后续流媒体音视频同步播放的系统1播放流媒体音视频所预设的参考值。和/或
[0049] 流媒体后处理模块13,用于将所述时间戳值最小且大于预设的时间戳参考值的时间戳值设置为下一轮流媒体音视频同步播放过程中的预设的时间戳参考值。由于之前符合要求的音视频帧数据已经放入解码器中播放,因此它的时间戳值大小就是当前流媒体播放的时间,因此把它的时间戳值赋予一个记录当前播放时间的整型变量——PresentationTime(呈现时间),就作为下一轮流媒体音视频同步播放过程中的预设的时间戳参考值。
[0050] 图3是本发明另一个实施例中提供的流媒体音视频同步播放的系统结构图;其中,流媒体处理模块10包括:
[0051] 分解模块101,用于在若干个缓冲区中查找到一个空闲的缓冲区,将音视频数据存满该缓冲区,并将音视频数据分解为多个独立的视频帧和音频帧。由于在本发明中是将系统内存划分为多个缓冲区,在将音视频数据存入缓冲区中,需要该缓冲区处于空闲状态,进一步的为了最到限度的利用内存空间,本发明将会将音视频数据存满该缓冲区。对于音视频数据的分解,每分解一帧调用一次回调函数处理。
[0052] 缓冲区状态设置模块102,用于当所述缓冲区中的音视频数据分解完成后,将该缓冲区的状态设置为空闲状态。待在缓冲区中完成了音视频数据分解完成后,该缓冲区处于空闲状态,由缓冲区状态设置模块102设置该缓冲区处于空闲状态,以待下一轮的音视频数据存储到该缓冲区。
[0053] 而流媒体播放模块11包括:
[0054] 链表建立模块111,用于将每一个独立的视频帧和音频帧作为节点分别建立视频帧单向链表和音频帧单向链表;建立这两个链表,可以将音频数据和视频数据分别有序地存储。
[0055] 排序模块112,用于将每个节点按照其时间戳值的大小,从小到大的顺序进行排序,并从视频帧单向链表和音频帧单向链表中分别查找到时间戳值最小的视频帧和音频帧。由于流媒体的播放是一帧一帧地、按时间戳从小到大的顺序播放,因此将视频帧和音频帧按时间戳排序,就不会像现有技术中对解复用后的音视频帧杂乱无章;音视频帧重新排序,有效的避免了丢帧现象。
[0056] 播放模块113,用于当所述时间戳值最小的视频帧和音频帧的时间戳值大于所述预设的时间戳参考值时,将该视频帧和音频帧放入音视频解码器中播放,否则将该视频帧和音频帧丢弃。取时间戳值最小,且时间戳值大于所述预设的时间戳参考值的视频帧和音频帧放入音视频解码器中播放,将由PresentationTime记录的当前流媒体音视频播放时间开始播放,这样流媒体音视频在时间上是连续的,不会发生声音或图像的滞留。
[0057] 图4是本发明提供的流媒体音视频同步播放的方法流程图,描述如下;
[0058] 在步骤S401中,流媒体处理模块10将音视频数据缓存到预先设置的缓冲区中,并将所述音视频数据分解为多个独立的视频帧和音频帧;
[0059] 在步骤S402中,流媒体处理模块11将每个独立的视频帧和音频帧分别按照其时间戳值的大小进行排序,并将时间戳值最小且大于预设的时间戳参考值的视频帧和音频帧放入音视频解码器中播放。
[0060] 在所述步骤S401之前还包括将流媒体音视频同步播放系统内存划分为若干个固定大小的内存区作为缓存音视频数据的缓冲区,以及设置时间戳参考值的步骤;在该步骤中,由流媒体预处理模块12预先将流媒体音视频同步播放系统内存划分为若干个固定大小的内存区;并且预设时间戳参考值。和/或
[0061] 所述步骤S402之后还包括将步骤S402中的所述时间戳值最小且大于预设的时间戳参考值的时间戳值设置为下一轮流媒体音视频同步播放过程中的预设的时间戳参考值;以及返回到步骤S402中,进行流媒体音视频同步播放处理至到音视频数据流处理结束的步骤。在该步骤中,流媒体后处理模块13对流媒体音视频同步播放进行后续处理。流媒体后处理模块13将步骤S402中的时间戳值最小且大于预设的时间戳参考值的时间戳值设置为下一轮流媒体音视频同步播放过程中的预设的时间戳参考值;并且返回到步骤S402中处理后续的媒体流,待所有的媒体流都处理完毕后,则结束整个流媒体音视频同步播放流程。
[0062] 在本发明的一个实施例中,所述步骤S401包括在若干个缓冲区中查找到一个空闲的缓冲区,将音视频数据存满该缓冲区,并将音视频数据分解为多个独立的视频帧和音频帧的步骤;以及,当所述缓冲区中的音视频数据分解完成后,将该缓冲区的状态设置为空闲状态的步骤。在该步骤中,分解模块101查找到一个空闲的缓冲区后,将需要处理的音视频数据存满该缓冲区,并将音视频数据分解为多个独立的视频帧和音频帧。而待分解模块101处理完成之后,缓冲区状态设置模块102将该缓冲区的状态设置为空闲状态。
[0063] 在本发明的又一个实施例中,步骤S402中包括将每一个独立的视频帧和音频帧作为节点分别建立视频帧单向链表和音频帧单向链表的步骤;将每个节点按照其时间戳值的大小,从小到大的顺序进行排序,并从视频帧单向链表和音频帧单向链表中分别查找到时间戳值最小的视频帧和音频帧的步骤;以及,若所述时间戳值最小的视频帧和音频帧的时间戳值大于所述预设的时间戳参考值,则将该视频帧和音频帧放入音视频解码器中播放,否则将该视频帧和音频帧丢弃的步骤。
[0064] 为了将音频数据和视频数据分别有序地存储,链表建立模块111将每一个独立的视频帧和音频帧作为节点分别建立视频帧单向链表和音频帧单向链表。在链表建立模块111建立上述两个链表之后,排序模块112对每个节点按照其时间戳值的大小,从小到大的顺序进行排序,并从视频帧单向链表和音频帧单向链表中分别查找到时间戳值最小的视频帧和音频帧。最后,音视频的播放是由播放模块113完成的。播放模块113在时间戳值最小的视频帧和音频帧的时间戳值大于所述预设的时间戳参考值,将该视频帧和音频帧放入音视频解码器中播放,否则将该视频帧和音频帧丢弃。
[0065] 而在上述多个实施例中,所述预设的时间戳参考值是由一个记录当前播放时间的整型变量所记录的当前播放流媒体的时间。而且,预设的时间戳参考值的初始值为0。当前播放流媒体的时间是指流媒体片源从开头以正常速率不间断播放到当前位置所需要的时间。
[0066] 综上所述,本发明通过将流媒体音视频同步播放的系统的缓冲区分块独立管理,提高了音视频数据流在播放过程中的容错能力,其受网络异常情况影响小。在音视频数据流解复用后,对音视频帧分别重新排序,避免了以往对解复用后的音视频帧杂乱无章的处理方式;并且利用音视频帧的重新排序,有效避免了丢帧现象。时间戳参考值的设置简单有效地实现了音视频同步。有效消除了由音频和视频帧不同步所引起的画面或声音滞留的现象。
[0067] 可以理解的是,对于本领域的普通技术人员来说,可以根据本发明的技术方案和技术构思作出其他各种相应的改变和变形,而所有这些改变和变形都应属于本发明后附的权利要求的保护范围。