一种多媒体数据流的切换播放方法及装置转让专利

申请号 : CN201710120468.8

文献号 : CN106921885B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邵文博

申请人 : 深圳创维数字技术有限公司

摘要 :

本发明实施例公开了一种多媒体数据流的切换播放方法及装置。该方法包括:将多媒体数据流中至少两个通道数据按照播放时间顺序,存入对应的至少两个数据缓冲链表;从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,注入解码器中解码;按帧播放记录当前播放帧播放完成后的当前播放时间戳;在当前播放帧播放完成后,将播放时间小于等于当前播放时间戳的各通道数据删除;接收切换播放通道指令,将待切换目标通道变更为当前播放通道,清空解码器中切换前的通道数据,将切换后的通道数据注入解码器,执行播放。实现在切换多媒体数据流的播放通道时,通道数据无卡顿的无缝衔接,保证通道数据平滑切换,提高多媒体数据流的播放效果。

权利要求 :

1.一种多媒体数据流的切换播放方法,其特征在于,包括:

将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中,包括:将多媒体数据流区分为视频数据流和音频数据流;

将所述音频数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中;

从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中,包括:从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中的时间缓冲链表中;

通过所述解码器对注入的通道数据进行解码,按帧播放并记录当前播放帧播放完成后的当前播放时间戳;

在当前播放帧播放完成后,根据所述当前播放时间戳,将播放时间小于等于所述当前播放时间戳的各通道数据删除,包括:在当前播放帧播放完成后,根据所述当前播放时间戳,从时间缓冲链表中删除播放时间小于等于所述当前播放时间戳的当前播放通道数据,且从其他通道的数据缓冲链表中删除播放时间小于等于所述当前播放时间戳的其他通道数据;

接收切换播放通道的指令,将待切换的目标通道变更为当前播放通道,清空解码器中切换前的通道数据,并根据当前播放时间戳从对应的数据缓冲链表中将切换后的通道数据注入解码器,返回执行播放操作;

其中,所述当前播放时间戳的记录间隔为每播放一帧进行记录或播放完设定数量帧之后进行记录。

2.根据权利要求1所述的方法,其特征在于,所述设定帧大于或等于解码缓冲所需的帧数。

3.一种多媒体数据流的切换播放装置,其特征在于,包括:

数据存储模块,用于将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中,包括:将多媒体数据流区分为视频数据流和音频数据流;

将所述音频数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中;

数据注入模块,用于从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中;

通道数据播放模块,用于通过所述解码器对注入的通道数据进行解码,按帧播放并记录当前播放帧播放完成后的当前播放时间戳,包括:从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中的时间缓冲链表中;

其中,所述当前播放时间戳的记录间隔为每播放一帧进行记录或播放完设定数量帧之后进行记录;

通道数据删除模块,用于在当前播放帧播放完成后,根据所述当前播放时间戳,将播放时间小于等于所述当前播放时间戳的各通道数据删除,包括:在当前播放帧播放完成后,根据所述当前播放时间戳,从时间缓冲链表中删除播放时间小于等于所述当前播放时间戳的当前播放通道数据,且从其他通道的数据缓冲链表中删除播放时间小于等于所述当前播放时间戳的其他通道数据;

播放通道切换模块,用于接收切换播放通道的指令,将待切换的目标通道变更为当前播放通道,清空解码器中切换前的通道数据,并根据当前播放时间戳从对应的数据缓冲链表中将切换后的通道数据注入解码器,返回执行播放操作。

4.根据权利要求3所述的装置,其特征在于,所述设定帧大于或等于解码缓冲所需的帧数。

说明书 :

一种多媒体数据流的切换播放方法及装置

技术领域

[0001] 本发明实施例涉及音视频处理技术,尤其涉及一种多媒体数据流的切换播放方法及装置。

背景技术

[0002] 随着广大机顶盒用户对机顶盒播放功能的需求越来越大以及网络多音轨片源越来越多,为了提高广大用户使用机顶盒的体验和依赖度,这就对我们机顶盒播放过程中进行多音轨切换的功能提出了较高的要求。
[0003] 现存的切换音轨的方案,从连续接收到的音频数据流中区分出不同音轨的音频数据,当前即将播放的为主音轨数据,其他音轨数据为非主音轨数据;随着播放的进行,将主音轨数据和非主音轨数据顺序存入缓冲区中,再从缓冲区中提取部分数据注入解码器,由解码器边解码边播放,同时清空缓冲区中的对应数据。
[0004] 基于上述的音频播放技术存在的缺陷在于:如果在播放的过程中,当需要切换音轨时,由于缓冲区内的非主音轨数据已经被清除,而注入解码器的只有主音轨数据,所以只能重新自切换时间点从原始音频数据流中读入非主音轨数据到缓冲区,而后再注入解码器,这样会存在一段时间没有声音输出的情况。

发明内容

[0005] 本发明实施例提供一种多媒体数据流的切换播放方法及装置,解决当前在切换多媒体数据流进行播放时存在卡顿的问题。
[0006] 第一方面,本发明实施例提供了一种多媒体数据流的切换播放方法,该方法包括:
[0007] 将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中;
[0008] 从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中;
[0009] 通过所述解码器对注入的通道数据进行解码,按帧播放并记录当前播放帧播放完成后的当前播放时间戳;
[0010] 在当前播放帧播放完成后,根据所述当前播放时间戳,将播放时间小于等于所述当前播放时间戳的各通道数据删除;
[0011] 接收切换播放通道的指令,将待切换的目标通道变更为当前播放通道,清空解码器中切换前的通道数据,并根据当前播放时间戳从对应的数据缓冲链表中将切换后的通道数据注入解码器,返回执行播放操作。
[0012] 进一步的,从当前播放通道所对应的数据缓冲链表中,获取待播放的设定帧通道数据,并注入到解码器中包括:
[0013] 从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中的时间缓冲链表中;
[0014] 相应的,在当前播放帧播放完成后,根据所述当前播放时间戳,将播放时间小于等于所述当前播放时间戳的各通道数据删除包括:
[0015] 在当前播放帧播放完成后,根据所述当前播放时间戳,从时间缓冲链表中删除播放时间小于等于所述当前播放时间戳的当前播放通道数据,且从其他通道的数据缓冲链表中删除播放时间小于等于所述当前播放时间戳的其他通道数据。
[0016] 进一步的,将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中包括:
[0017] 将多媒体数据流区分为视频数据流和音频数据流;
[0018] 将所述音频数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中。
[0019] 进一步的,所述设定帧大于或等于解码缓冲所需的帧数。
[0020] 第二方面,本发明实施例还提供了一种多媒体数据流的切换播放装置,该装置包括:
[0021] 数据存储模块,用于将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中;
[0022] 数据注入模块,用于从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中;
[0023] 通道数据播放模块,用于通过所述解码器对注入的通道数据进行解码,按帧播放并记录当前播放帧播放完成后的当前播放时间戳;
[0024] 通道数据删除模块,用于在当前播放帧播放完成后,根据所述当前播放时间戳,将播放时间小于等于所述当前播放时间戳的各通道数据删除;
[0025] 播放通道切换模块,用于接收切换播放通道的指令,将待切换的目标通道变更为当前播放通道,清空解码器中切换前的通道数据,并根据当前播放时间戳从对应的数据缓冲链表中将切换后的通道数据注入解码器,返回执行播放操作。
[0026] 进一步的,所述数据注入模块具体用于:
[0027] 从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中的时间缓冲链表中;
[0028] 相应的,所述通道数据删除模块具体用于:
[0029] 在当前播放帧播放完成后,根据所述当前播放时间戳,从时间缓冲链表中删除播放时间小于等于所述当前播放时间戳的当前播放通道数据,且从其他通道的数据缓冲链表中删除播放时间小于等于所述当前播放时间戳的其他通道数据。
[0030] 进一步的,所述数据存储模块具体用于:
[0031] 将多媒体数据流区分为视频数据流和音频数据流;
[0032] 将所述音频数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中。
[0033] 进一步的,所述设定帧大于或等于解码缓冲所需的帧数。
[0034] 本发明实施例通过将播放时间小于等于当前播放时间戳的各通道数据删除,即其他通道数据随着播放的进行同步删除,当接收切换播放通道的指令时,待切换的目标通道的第一帧数据即为即将播放的数据,实现了在切换多媒体数据流中的播放通道时,通道数据无卡顿的无缝衔接,保证了通道数据的平滑切换,提高了多媒体数据流的播放效果。

附图说明

[0035] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0036] 图1是本发明实施例一提供的一种多媒体数据流的切换播放方法的流程示意图;
[0037] 图2是本发明实施例二提供的一种多媒体数据流的切换播放方法的流程示意图;
[0038] 图3是本发明实施例三提供的一种多媒体数据流的切换播放方法的流程示意图;
[0039] 图4是本发明实施例四提供的一种多媒体数据流的切换播放装置的结构示意图;
[0040] 图5是本发明实施例四提供的一种多媒体数据流的切换播放装置的结构示意图;
[0041] 图6是本发明实施例五提供的一种多媒体数据流的切换播放方法的流程示意图。

具体实施方式

[0042] 为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 实施例一
[0044] 图1是本发明实施例一提供的一种多媒体数据流的切换播放方法的流程图。本实施例的技术方案可以适用于切换多媒体数据流的播放通道的情况。该方法可以由本发明实施例提供的一种多媒体数据流的切换播放装置来执行,该装置可以采用软件和/或硬件的方式实现,一般集成于进行多媒体数据流播放的设备中,例如机顶盒或电视等。该方法具体包括如下操作:
[0045] S110、将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中。
[0046] 多媒体数据流可以是音频数据流、视频数据流或字幕数据流。示例性的,当多媒体数据流是音频数据流时,音频数据流中的至少两个通道数据可以是主音轨数据和非主音轨数据。主音轨数据可以是当前将要播放的音轨数据,非主音轨数据可以是当前不播放的音轨数据。非主音轨数据可以有多路数据来源,例如,当前主音轨数据是中文配音,非主音轨数据可以是英文配音、日文配音、韩语配音和西班牙配音等多种语言配音中的至少一种。将主音轨数据流按照播放时间顺序存入主音轨数据缓冲链表中,非主音轨数据流按照播放时间顺序存入非主音轨数据缓冲链表中。其中,主音轨数据缓冲链表和非主音轨数据缓冲链表可以存储在缓冲管理模块中。
[0047] S120、从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中。
[0048] 当前播放通道所对应的数据缓冲链表可以是主音轨数据对应的主音轨数据缓冲链表,从该链表中提取设定帧数的主音轨数据,注入到解码器中,同时可以删除主音轨数据缓冲链表中注入到解码器的主音轨数据,释放主音轨数据缓冲链表的空间,为新的数据提供存储空间。此时,其他数据缓冲链表中的数据并不进行删除。设定帧数可以根据播放器的播放要求进行设定,例如,能够保证持续解码和播放一定时间所需的帧数。
[0049] S130、通过所述解码器对注入的通道数据进行解码,按帧播放并记录当前播放帧播放完成后的当前播放时间戳。
[0050] 解码器对注入的主音轨数据进行解码,例如可以是解码器对注入的主音轨数据进行解压缩操作,以满足播放器播放的条件。主音轨数据的播放可以是逐帧数据进行播放,一帧数据的播放可能会持续一个小的时间段,每播放完成一帧数据对应一个时间节点,用时间戳记录该节点信息。用当前播放时间戳记录当前播放帧播放完成的时间,用时间戳记录时间信息便于存储和调用。当前播放时间戳的记录间隔可以是每播放一帧都进行记录,也可以是播放完设定数量帧之后记录当前播放帧的时间戳,例如,每播放三帧数据记录一次。
[0051] S140、在当前播放帧播放完成后,根据所述当前播放时间戳,将播放时间小于等于所述当前播放时间戳的各通道数据删除。
[0052] 由于在当前播放帧播放完成之前会存在已经播放完成的数据存储,所以在当前播放帧播放完成后,需要对已经播放完成的数据存储进行清除,所以通过将播放时间小于等于当前播放时间戳的各通道数据删除。示例性的,将播放时间小于等于当前播放时间戳的主音轨数据和所有非主音轨数据删除,可以保证在接收到切换播放通道指令时,非主音轨数据的待播放帧数据仍然没有被清空,可立即注入解码器进行解码播放,达到无缝平滑切换的目的,解决了卡顿的问题。
[0053] S150、接收切换播放通道的指令,将待切换的目标通道变更为当前播放通道,清空解码器中切换前的通道数据,并根据当前播放时间戳从对应的数据缓冲链表中将切换后的通道数据注入解码器,返回执行播放操作。
[0054] 切换播放通道的指令可以是用户触发的,也可以是片源的自身播放需要触发的。将待切换的目标通道变更为当前播放通道,例如可以是将主音轨数据切换为非主音轨数据,清空解码器中切换前待播放但未播放的主音轨数据。根据当前播放时间戳,从切换后的非主音轨数据缓冲链表中提取时间戳为当前播放时间戳的下一个时间戳的非主音轨数据,且满足设定帧数的要求,将该非主音轨数据注入解码器进行解码播放。
[0055] 在上述切换的过程中,删除播放时间小于等于当前播放时间戳的各通道数据所需的时间一般在40ms之内,再加上音频数据注入解码器的时间,以及解码器启动音频播放所需的时间,整个过程切换播放通道的时间之和理论在100ms之内,所以人耳几乎听不出来发生了音轨切换。
[0056] 本实施例在播放的过程中记录当前播放时间戳,并以此为依据对数据缓冲链表中的其他通道数据与播放过程进行同步清除,所以在切换通道数据时,能够迅速从缓冲区中将下一时间戳的数据注入解码器,解决当前在切换多媒体数据流进行播放时存在卡顿的问题,实现了在切换多媒体数据流中的播放通道时,通道数据无卡顿的无缝衔接,保证了通道数据的平滑切换,提高了多媒体数据流的播放效果。
[0057] 实施例二
[0058] 图2是本发明实施例二提供的一种多媒体数据流的切换播放方法的流程图。本发明实施例在上述实施例的基础上,进一步将从当前播放通道所对应的数据缓冲链表中,获取待播放的设定帧通道数据,并注入到解码器中的操作进行优化。
[0059] 相应的,本实施例的方法包括:
[0060] S210、将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中。
[0061] S220、从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中的时间缓冲链表中。
[0062] 通过时间缓冲链表可以统计注入到解码器中的数据的缓冲大小,时间单位为毫秒。当前播放通道的数据,从缓冲区的数据缓冲链表中转移到时间缓冲链表中,这样数据缓冲链表的空间被释放,能够用于存储新的数据。其他通道的数据,仍然保留在相应通道的数据缓冲链表中。
[0063] S230、通过所述解码器对注入的通道数据进行解码,按帧播放并记录当前播放帧播放完成后的当前播放时间戳。
[0064] S240、在当前播放帧播放完成后,根据所述当前播放时间戳,从时间缓冲链表中删除播放时间小于等于所述当前播放时间戳的当前播放通道数据,且从其他通道的数据缓冲链表中删除播放时间小于等于所述当前播放时间戳的其他通道数据。
[0065] 根据所述当前播放时间戳,从时间缓冲链表中删除播放时间小于等于所述当前播放时间戳的当前播放通道数据可以实现释放解码器的空间的目的,为注入新的数据提供空间。从其他通道的数据缓冲链表中删除播放时间小于等于所述当前播放时间戳的其他通道数据,可以保证在接收到切换播放通道指令时,数据缓冲链表中当前存储的数据包括了即将播放通道的第一帧待播放数据,达到无缝平滑切换的目的。
[0066] S250、接收切换播放通道的指令,将待切换的目标通道变更为当前播放通道,清空解码器中切换前的通道数据,并根据当前播放时间戳从对应的数据缓冲链表中将切换后的通道数据注入解码器,返回执行播放操作。
[0067] 本实施例通过将注入到解码器中的数据存入时间缓冲链表中,并将小于等于当前播放时间戳的时间缓冲链表中的数据和数据缓冲链表中的数据删除,实现了待播放数据的存储和待切换数据的实时跟踪,保证在接收到切换播放通道指令时,数据缓冲链表中当前存储的数据包括了即将播放通道的第一帧待播放数据,达到无缝平滑切换的目的。
[0068] 在本实施例的另一优选实施方式中,所述设定帧大于或等于解码缓冲所需的帧数。
[0069] 解码器中存在播放水线,播放水线为解码器能够进行流畅播放所需的最小帧数,即,一般解码器中的数据需要达到一定数量,才会开始边解码边播放。因此设定帧需要大于或等于解码缓冲所需的帧数。
[0070] 面对一种特殊的切换情况时,即用户由音轨A切换至音轨B,而后又立即切换回到音轨A的情况,若采用上述技术方案时,会发生解码器中音轨A的数据已经在第一次切换时删除,且数据缓冲链表中的数据也在注入解码器时删除,所以当用户又第二次切换回到音轨A时,需要重新从多媒体数据流中先缓冲数据再注入解码器,同样会存在一定的延时。所以,本发明实施例优选的,设定帧等于解码缓冲所需的帧数,即设定帧数越小越好。当设定帧足够小时,在面对由音轨A切换到音轨B,又马上由音轨B切换到音轨A这种情况时,可以保证解码器中的音频缓冲足够小,即由音轨A切换到音轨B时,被清除的解码器中的音轨A的数据足够少,当音轨B马上切换回音轨A的时候,音轨A虽然丢失了一段数据但是数据足够少,导致的延迟时间人耳几乎听不出。
[0071] 实施例三
[0072] 图3是本发明实施例三提供的一种多媒体数据流的切换播放方法的流程图。本发明实施例在上述实施例的基础上,进一步将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中的操作优化为:将多媒体数据流区分为视频数据流和音频数据流;将所述音频数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中。
[0073] 相应的,本实施例的方法包括:
[0074] S310、将多媒体数据流区分为视频数据流和音频数据流。
[0075] 示例性的,多媒体数据流为网络多音轨片源,将多媒体数据流区分为视频数据流和音频数据流,视频数据流可以存储在视频数据缓冲链表中。视频数据流和音频数据流在时间上相互对应,用户在观看时,即可有顺畅的观赏感受。
[0076] S320、将所述音频数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中。
[0077] S330、从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中。
[0078] 在从主音轨数据缓冲链表中提取待播放的设定帧的主音轨数据注入到解码器时,主音轨数据从缓冲区的主音轨数据缓冲链表中转移到音轨时间缓冲链表中;与此同时,与主音轨数据在播放时间上相对应的视频数据,从缓冲区的视频数据缓冲链表中转移到视频时间缓冲链表中。
[0079] S340、通过所述解码器对注入的通道数据进行解码,按帧播放并记录当前播放帧播放完成后的当前播放时间戳。
[0080] S350、在当前播放帧播放完成后,根据所述当前播放时间戳,将播放时间小于等于所述当前播放时间戳的各通道数据删除。
[0081] 根据当前播放时间戳,从音轨时间缓冲链表中删除播放时间小于等于当前播放时间戳的音轨数据,从视频时间缓冲链表中删除播放时间小于等于当前播放时间戳的视频数据,并将音轨时间缓冲链表和视频时间缓冲链表中的无数据节点分别放入至少两个空闲节点链表中,以供新数据注入时使用。空闲节点链表、视频数据缓冲链表、主音轨数据缓冲链表、非主音轨数据缓冲链表、视频时间缓冲链表和音轨时间缓冲链表的描述如表1所示。
[0082] 表1链表描述
[0083]
[0084] S360、接收切换播放通道的指令,将待切换的目标通道变更为当前播放通道,清空解码器中切换前的通道数据,并根据当前播放时间戳从对应的数据缓冲链表中将切换后的通道数据注入解码器,返回执行播放操作。
[0085] 本发明实施例通过将多媒体数据流区分为视频数据流和音频数据流,实现了在切换音频数据时,音频无卡顿,音视频数据同步播放。
[0086] 实施例四
[0087] 图4是本发明实施例四提供的一种多媒体数据流的切换播放装置的结构框图。该装置用于执行上述任意实施例所提供的一种多媒体数据流的切换播放方法。该装置包括:
[0088] 数据存储模块410,用于将多媒体数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中;
[0089] 数据注入模块420,用于从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中;
[0090] 通道数据播放模块430,用于通过所述解码器对注入的通道数据进行解码,按帧播放并记录当前播放帧播放完成后的当前播放时间戳;
[0091] 通道数据删除模块440,用于在当前播放帧播放完成后,根据所述当前播放时间戳,将播放时间小于等于所述当前播放时间戳的各通道数据删除;
[0092] 播放通道切换模块450,用于接收切换播放通道的指令,将待切换的目标通道变更为当前播放通道,清空解码器中切换前的通道数据,并根据当前播放时间戳从对应的数据缓冲链表中将切换后的通道数据注入解码器,返回执行播放操作。
[0093] 进一步的,所述数据注入模块420具体用于:
[0094] 从当前播放通道所对应的数据缓冲链表中,提取待播放的设定帧通道数据,并注入到解码器中的时间缓冲链表中;
[0095] 相应的,所述通道数据删除模块440具体用于:
[0096] 在当前播放帧播放完成后,根据所述当前播放时间戳,从时间缓冲链表中删除播放时间小于等于所述当前播放时间戳的当前播放通道数据,且从其他通道的数据缓冲链表中删除播放时间小于等于所述当前播放时间戳的其他通道数据。
[0097] 进一步的,所述数据存储模块410具体用于:
[0098] 将多媒体数据流区分为视频数据流和音频数据流;
[0099] 将所述音频数据流中至少两个通道数据按照播放时间顺序,分别存入对应的至少两个数据缓冲链表中。
[0100] 进一步的,所述设定帧大于或等于解码缓冲所需的帧数。
[0101] 本实施例提供的多媒体数据流的切换播放装置结构图如图5所示,还可以包括demux(demux,多路分配器)模块510、缓冲管理模块520和解码模块530。其中,demux模块510,可实现数据存储模块410中的将多媒体数据流区分为视频数据流和音频数据流的功能;缓冲管理模块520,可实现数据存储模块410、数据注入模块420、通道数据删除模块440和播放通道切换模块450的功能;解码模块530可实现通道数据播放模块430的功能。由demux模块510到缓冲管理模块520的数据为ES(Elementary Streams,原始流)数据,ES数据为只包含一种内容的数据流,如只含音频或只含视频。
[0102] 本发明实施例四提供的多媒体数据流的切换播放装置,实现了在切换多媒体数据流中的播放通道时,通道数据无卡顿的无缝衔接,保证了通道数据的平滑切换,提高了多媒体数据流的播放效果。
[0103] 本发明实施例所提供的多媒体数据流的切换播放装置可执行本发明任意实施例所提供的多媒体数据流的切换播放方法,具备执行方法相应的功能模块和有益效果。
[0104] 实施例五
[0105] 图6为本发明实施例五提供的一种多媒体数据流的切换播放方法的流程图,本实施例提供了一个优选实施例。
[0106] 具体流程如下:
[0107] S601、启动播放多媒体数据流的播放器。
[0108] S602、demux操作。
[0109] demux操作是将多媒体数据流区分为视频数据流和音频数据流,并将音频数据流区分为主音轨数据和非主音轨数据。
[0110] S603、判断是否是音频数据流,若是,执行S605,若否,执行S604。
[0111] S604、把视频数据流注入到视频缓冲区。
[0112] S605、判断是否是主音轨数据,当是时,执行S608,当否时,执行S607。
[0113] S606、将一帧视频数据注入解码模块,在视频缓冲区中删除该帧数据,并将该帧数据的pts(presentation time stamp,显示时间戳)记录在视频pts链表中。
[0114] S607、把非主音轨数据注入到非主音轨缓冲区。
[0115] S608、把主音轨数据注入到主音轨缓冲区。
[0116] S609、将一帧主音轨数据注入解码模块,在主音轨缓冲区中删除该帧数据,并将该帧数据的pts记录在音轨pts链表中。
[0117] S610、记录回调pts。
[0118] 将当前播放帧的主音轨数据的pts记录和视频数据的pts记录分别作为回调pts进行记录。
[0119] S611、判断是否是音频数据,当是时,执行S613,当否时,执行S612。
[0120] S612、清除视频pts链表中小于等于该回调pts的记录。
[0121] S613、判断是否是主音轨数据,当是时,执行S615,当否时,执行S614。
[0122] S614、清除非主音轨pts链表中小于等于该回调pts的记录。
[0123] S615、清除主音轨pts链表中小于等于该回调pts的记录。
[0124] 本发明实施例通过删除视频pts链表、主音轨pts链表和非主音轨pts链表中小于等于回调pts的记录,在切换通道数据时,能够迅速从将回调pts记录的下一pts记录的数据注入解码器进行播放,实现了在切换多媒体数据流中的播放通道时,通道数据无卡顿的无缝衔接,保证了通道数据的平滑切换,提高了多媒体数据流的播放效果。
[0125] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。