在服务器中用于自适应提供多码率流媒体的方法及装置与流程

文档序号:12279750阅读:447来源:国知局
在服务器中用于自适应提供多码率流媒体的方法及装置与流程

本发明涉及网络技术,尤其是涉及一种在服务器中用于自适应提供多码率流媒体的方法以及在服务器中用于自适应提供多码率流媒体的装置。



背景技术:

利用流媒体技术可以在网络中以流的方式传输音频以及视频等媒体内容。由于流媒体技术具有实时性强的特点而被广泛应用于视频点播、视频会议、远程教育、远程医疗以及在线直播等系统中。

流媒体服务器为用户提供多码率流媒体服务的方式通常包括如下两种:

方式一、用户根据其网络情况选择“流畅”、“清晰”或者“高清”等播放选项,服务器根据用户选择的播放选项向该用户提供相应码率的媒体流。

方式二、利用HLS(HTTP Live Streaming,HTTP直播流)自适应的为用户提供多码率流媒体,具体的,流媒体服务器向用户下发的媒体流由视频片组成,且每个视频片包括可播放10秒媒体内容的多媒体数据,流媒体服务器可以根据网络质量自适应的为用户不同码率的媒体流。

发明人在实现本发明过程中发现,上述方式一由于是根据用户选择的播放选项为用户推送相应码率的媒体流,因此,无法自适应的为用户提供多码率流媒体,智能化程度有所欠缺;另外,用户通常是在播放出现停顿或者马赛克等播放不正常的情况下更换播放选项,因此,上述方式一会对用户体验造成不良影响。上述方式二能够解决方式一存在的技术问题,但是,方式二中的视频片的播放时长会使码率切换存在较大的延时。



技术实现要素:

本发明的目的是,提供一种在服务器中用于自适应提供多码率流媒体的方法及装置。

根据本发明的一个方面,提供一种在服务器中用于自适应提供多码率流媒体的方法,包括:获取网络质量信息;在根据所述网络质量信息确定出需要码率切换的情况下,从所有队列中选择一个队列作为发送队列,其中,不同队列中存储有针对同一媒体内容的不同码率的多媒体数据帧;从所述发送队列中读取多媒体数据帧并下发;根据已下发的多媒体数据帧删除各队列中相应的多媒体数据帧。

根据本发明的另一个方面,提供一种在服务器中用于自适应提供多码率流媒体的装置,且所述自适应提供多码率流媒体的装置包括:用于获取网络质量信息的装置;用于在根据所述网络质量信息确定出需要码率切换的情况下,从所有队列中选择一个队列作为发送队列的装置,其中,不同队列中存储有针对同一媒体内容的不同码率的多媒体数据帧;用于从所述发送队列中读取出多媒体数据帧并下发,且其他队列中的与已下发的多媒体数据帧具有同一媒体内容的多媒体数据帧均被删除的装置。

与现有技术相比,本发明具有以下优点:本发明通过设置多个队列,并使各队列所对应的码率不同,使同一媒体内容的不同码率的多媒体数据帧可以各自设置于不同的队列中,这样,在根据网络质量信息确定出需要码率切换时,本发明可以通过从所有队列中选取出一个与当前网络质量更匹配的码率所对应的队列,并从该选取的队列中读取多媒体数据帧并下发,可以快速实现码率切换;本发明通过针对当前下发的多媒体数据帧,删除各队列中相应的多媒体数据帧,使各队列中位于队首的多媒体数据帧均是针对同一媒体内容的不同码率的多媒体数据帧,这样,无论何时确定出需要码率切换,本发明都能够在快速及时的实现码率切换的同时,保证码率切换操作不会影响媒体内容的连贯性;由此可知,本发明提供的技术方案在实现了自适应的码率切换的同时,降低了码率切换延时,并实现了快速无缝的自适应码率切换。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明实施例一的在服务器中用于自适应提供多码率流媒体的方法的流程图;

图2为本发明实施例二的在视频直播应用场景中,流媒体服务器为用户自适应提供多码率流媒体的方法示意图;

图3为本发明实施例四的在服务器中用于自适应提供多码率流媒体的装置的结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

在更加详细地讨论示例性实施例之前,应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的执行顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或者是由ASIC、FPGA、DSP等硬件执行预定处理过程,或者是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑以及笔记本电脑等。

所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。

需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。

后面所讨论的方法(其中一些通过流程图示出)可通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。

这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是,本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。

应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。

应当理解的是,当一个单元被称为“连接”或者“耦合”到另一个单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。

这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。

还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。

下面结合附图对本发明作进一步详细描述。

实施例一、在服务器中用于自适应提供多码率流媒体的方法。

本实施例是利用多个队列来为用户提供自适应多码率流媒体服务的,且队列的数量与码率的数量相适应。本实施例的方法由流媒体服务器执行。本实施例中的队列是指能够在逻辑上顺序存储多个多媒体数据帧的一段存储空间,如本实施例中的队列可以通过链表或者FIFO(First Input First Output,先入先出)队列等方式来实现。

本实施例的在服务器中用于自适应提供多码率流媒体的方法的流程如图1所示。图1中,本实施例的方法主要包括:S100、S110以及S120。

S100、获取网络质量信息。

作为示例,本实施例中的网络质量信息可以包括:网络传输延时、丢包率以及网络抖动信息等。优选的,本实施例中的网络质量信息可以使用队列的数据充盈信息来体现,队列的数据充盈信息即表示数据在队列中的存储情况的信息。

作为示例,本实施例中的队列的数据充盈信息可以具体为队列中存储的多媒体数据帧所占用的存储空间大小与队列的总存储空间大小的比值(也可以称为比例或者百分比等,且可以统称为队列的数据充盈率),队列的数据充盈信息也可以具体为队列中存储的多媒体数据帧所占用的存储空间大小或者队列中的闲置存储空间大小等能够反应网络质量的队列参数。

作为示例,本实施例可以定时(如1秒或者小于1秒等)获取所有队列中的任意一个队列的数据充盈信息,以根据该队列的数据充盈信息及时的获知当前网络状态。上述任意一个队列可以是随机确定出的一个队列,也可以是预先确定的一个固定的队列,即本实施例可以随机获取某一个队列的数据充盈信息,也可以固定获取某一个队列(如第一个队列或者第二个队列)的数据充盈信息。优选的,本实施例可以定时获取队列中的发送队列的数据充盈信息(如队列的数据充盈率),从而根据发送队列的数据充盈信息及时的获知当前网络状态。本实施例中的发送队列是指当前正在被发送给终端设备的多媒体数据帧所属的队列,也就是说,虽然本实施例针对不同码率的多媒体数据帧分别设置了相应的队列,且每一个队列中均存储有相应码率的多媒体数据帧,但是,针对任一时刻而言,只有一个队列中存储的多媒体数据帧被发送给终端设备,该队列即为发送队列。

S110、在根据网络质量信息确定出需要码率切换的情况下,从所有队列中选择一个队列作为发送队列。

作为示例,本实施例设置有多个队列,每一个队列均对应一种码率,且不同队列对应不同码率。每一个队列中都存储有多媒体数据帧,且所有队列中位于队首的多媒体数据帧所对应的媒体内容是完全相同的;一种优选的方式,所有队列中存储的多媒体数据帧的媒体内容是完全相同的,即从媒体内容的角度来说,所有队列中存储的多媒体数据帧是同步的,也就是说,针对同一媒体内容而言,不同码率的多媒体数据帧被设置在不同队列中。本实施例中的媒体内容可以为视频画面,同一媒体内容即同一视频画面。

作为示例,本实施例中的所有队列的存储空间大小通常会存在差异,然而,所有队列的存储空间所能够存储的多媒体数据帧的数量通常相同。在本实施例中的所有队列的存储空间所能够存储的多媒体数据帧的数量相同的情况下,由于不同队列存储不同码率的多媒体数据帧,而不同码率的多媒体数据帧所占用的存储空间存在差异,因此,本实施例中的所有队列的存储空间大小会存在差异,且对应高码率的队列的存储空间大小会高于对应低码率的队列的存储空间大小。当然,本实施例并不排除所有队列具有相同存储空间的可能性。各队列的存储空间大小可以根据实际需求来设置,然而,各队列的存储空间大小均不会小于两个多媒体数据帧所占用的存储空间,即每一个队列均至少能够存储两个多媒体数据帧。本实施例中的多媒体数据帧可以包括关键帧和该关键帧对应的所有非关键帧。

作为示例,本实施例中各队列中存储的多媒体数据帧可以采用GOP(Group of Pictures,画面组)结构,如在本实施例的多媒体数据帧采用基于MPEG(Moving Picture Experts Group,动态图像专家组)编码格式的多媒体数据帧的情况下,可以由一个I帧(即内部编码帧,也可以称为关键帧)、多个P帧(即前向预测帧)以及多个B帧(即双向内插帧)形成一个GOP,一个GOP即为一个多媒体数据帧。本实施例中的多媒体数据帧中的关键帧(如I帧)通常是一个完整的画面,而其他帧(如P帧和B帧)主要用于记录相对于关键帧的变化,没有关键帧,P帧和B帧则无法解码。

作为示例,本实施例的不同队列中存储的所有多媒体数据帧具有相同的编码格式,如不同队列中存储的所有多媒体数据帧具有相同的GOP结构。另外,不同队列中存储的多媒体数据帧通常是同步更新的,如同时删除针对同一媒体内容的多媒体数据帧,再如在同时删除各队列中的针对同一媒体内容的多媒体数据帧的情况下,同时在各队列中同步增加针对同一媒体内容的多媒体数据帧。当然,本实施例并不排除以非同步的方式在各队列中增加针对同一媒体内容的多媒体数据帧的可能性,但是,必须同时删除针对同一媒体内容的多媒体数据帧,以保证所有队列中位于队首的多媒体数据帧所对应的媒体内容是完全相同的。

作为示例,本实施例在各队列中同步增加针对同一媒体内容的多媒体数据帧的一个具体的例子为:本实施例为每一种码率均设置了一个缓存,如在多媒体数据帧采用GOP结构的情况下,本实施例为每一种码率分别设置了一个GOP缓存;首先,针对编码处理后的各多媒体数据帧(如针对MPEG编码处理后的各多媒体数据帧)进行转码处理,以获得多个不同码率的多媒体数据帧,然后,将不同码率的多媒体数据帧同时写入相应的GOP缓存中,如在各GOP缓存均为空(可以由于GOP缓存中的多媒体数据帧被放入队列而形成GOP缓存为空,也可以由于清空操作而使GOP缓存为空)的情况下,将转码处理后的不同码率的多媒体数据帧同时写入相应的GOP缓存中;之后,同时从各GOP缓存中读取相同数量的多媒体数据帧,并将读取出的相同数量的多媒体数据帧分别存储于相应的队列中,从而使各队列中同步增加了针对同一媒体内容的多媒体数据帧。

作为示例,在本实施例中的网络质量信息包括队列的数据充盈率,并且在所有队列各自的存储空间所能存储的多媒体数据帧的数量均相同的情况下,本实施例的根据网络质量信息确定出需要码率切换的过程可以为:预先针对所有队列设置两个统一的阈值,即第一阈值和第二阈值,从预先维护的信息中获取各队列的总存储空间大小,并定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(如定时获取发送队列当前存储的所有多媒体数据帧所占用的总存储空间大小),然后,根据上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小和该队列的总存储空间大小计算该队列的数据充盈率,在判断出该队列的数据充盈率高于第一阈值时,确定出需要向低码率切换;而在判断出该队列的数据充盈率低于第二阈值时,确定出需要向高码率切换。上述第一阈值通常远大于第二阈值,如第一阈值为80%,而第二阈值为20%。

作为示例,在本实施例中的网络质量信息包括队列的数据充盈率,并且在所有队列各自的存储空间所能存储的多媒体数据帧的数量不相同的情况下,本实施例的根据网络质量信息确定出需要码率切换的过程可以为:预先为每一个队列分别设置两个阈值,即每一个队列均对应各自的第一阈值和第二阈值,不同队列各自对应的第一阈值通常不相同,同样的,不同队列各自对应的第二阈值通常也不相同;从预先维护的信息中获取各队列的总存储空间大小以及各队列自身对应的第一阈值和第二阈值,定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(如定时获取发送队列当前存储的所有多媒体数据帧所占用的总存储空间大小),并根据上述获取到的队列中当前存储的所有多媒体数据所占用的总存储空间大小和该队列的总存储空间大小计算该队列的数据充盈率,在判断出该队列的数据充盈率高于该队列对应的第一阈值时,确定出需要向低码率切换;而在判断出该队列的数据充盈率低于该队列所对应的第二阈值时,确定出需要向高码率切换。上述第一阈值通常远大于第二阈值,如第一阈值为80%,而第二阈值为20%。

作为示例,在本实施例中的网络质量信息包括队列中当前存储的所有多媒体数据帧所占用的总存储空间大小的情况下,本实施例的根据网络质量信息确定出需要码率切换的过程可以具体为:无论所有队列各自的存储空间所能够存储的多媒体数据帧的数量是否相同,均预先为每一个队列分别设置两个阈值,即每一个队列均对应各自的第三阈值和第四阈值,且不同队列所对应的第三阈值通常不相同,同样的,不同队列所对应的第四阈值通常也不相同;从预先维护的信息中获取各队列分别对应的第三阈值和第四阈值,定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(如定时获取发送队列当前存储的所有多媒体数据帧所占用的总存储空间大小),并将上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小与该队列所对应的第三阈值和第四阈值进行比较,在比较的结果为上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小大于该队列所对应的第三阈值时,确定出需要向低码率切换;而在比较的结果为上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小小于该队列所对应的第四阈值时,确定出需要向高码率切换。上述第三阈值通常远大于第四阈值。

作为示例,在本实施例中的网络质量信息包括队列当前闲置存储空间大小的情况下,本实施例的根据网络质量信息确定出需要码率切换的过程可以为:无论所有队列各自的存储空间所能够存储的多媒体数据帧的数量是否相同,均预先为每一个队列分别设置两个阈值,即每一个队列均对应各自的第五阈值以及第六阈值,且不同队列各自对应的第五阈值通常不相同,同样的,不同队列各自对应的第六阈值通常也不相同;从预先维护的信息中获取各队列各自对应的第五阈值和第六阈值,定时获取所有队列中的任一队列当前闲置存储空间大小(如定时获取发送队列当前闲置存储空间大小),并将上述获取到的队列当前闲置存储空间大小与该队列所对应的第五阈值和第六阈值进行比较,在比较的结果为上述获取到的队列当前闲置存储空间大小大于上述获取到的第五阈值时,确定出需要向高码率切换;而在比较的结果为上述获取到的队列当前闲置存储空间大小小于第六阈值时,确定出需要向低码率切换。上述第五阈值通常远小于第六阈值。

作为示例,为避免出现由于网络抖动等原因而造成的频繁码率切换的现象,本实施例可以在判断是否需要码率切换的过程中,增加控制码率频繁切换的限制条件,也就是说,本实施例可以根据网络质量信息以及预先设置的码率切换的时间限制条件确定出需要码率切换。上述预先设置的码率切换的时间限制条件可以具体为当前时间距离前一次码率切换时间超过预定时长。

作为示例,本实施例根据网络质量信息和预先设置的码率切换的时间限制条件确定出需要码率切换的第一个具体例子为:在所有队列各自的存储空间所能够存储的多媒体数据帧的数量均相同的情况下,预先针对所有队列设置两个统一的阈值,即第一阈值和第二阈值,从预先维护的信息中获取队列的总存储空间大小、预定时长以及前一次码率切换的时间,并定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小,然后,根据上述获取到的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小和该队列的总存储空间大小计算队列的数据充盈率,在判断出该数据充盈率高于第一阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向低码率切换;而在判断出该数据充盈率低于第二阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向高码率切换。

作为示例,本实施例根据网络质量信息和预先设置的码率切换的时间限制条件确定出需要码率切换的第二个具体例子为:在所有队列各自的存储空间所能够存储的多媒体数据帧的数量不相同的情况下,预先针对每一个队列分别设置两个阈值,即每一个队列均对应各自的第一阈值和第二阈值,不同队列各自对应的第一阈值通常不相同,同样的,不同队列各自对应的第二阈值通常也不相同;从预先维护的信息中获取各队列的总存储空间大小、各队列各自对应的第一阈值和第二阈值、预定时长以及前一次码率切换的时间,定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(优选的,定时获取发送队列当前存储的所有多媒体数据帧所占用的总存储空间大小),并根据上述获取到的队列中当前存储的所有多媒体数据所占用的总存储空间大小和该队列的总存储空间大小计算队列的数据充盈率,在判断出该数据充盈率高于该队列对应的第一阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向低码率切换;而在判断出该数据充盈率低于该队列所对应的第二阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向高码率切换。上述第一阈值通常远大于第二阈值,如第一阈值为80%,而第二阈值为20%。

作为示例,本实施例根据网络质量信息和预先设置的码率切换的时间限制条件确定出需要码率切换的第三个具体例子为:预先针对每一个队列分别设置两个阈值,即每一个队列均对应各自的第三阈值和第四阈值,且不同队列所对应的第三阈值通常不相同,同样的,不同队列所对应的第四阈值通常也不相同;从预先维护的信息中获取各队列分别对应的第三阈值和第四阈值、预定时长以及前一次码率切换的时间,定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(优选的,可以定时获取发送队列当前存储的所有多媒体数据帧所占用的总存储空间大小),并将上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小与该队列所对应的第三阈值和第四阈值进行比较,在比较的结果为上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小大于该队列所对应的第三阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向低码率切换;而在比较的结果为上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小小于该队列所对应的第四阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向高码率切换。上述第三阈值通常远大于第四阈值。

作为示例,本实施例根据网络质量信息和预先设置的码率切换的时间限制条件确定出需要码率切换的第四个具体例子为:预先针对每一个队列分别设置两个阈值,即每一个队列均对应各自的第五阈值以及第六阈值,且不同队列各自对应的第五阈值通常不相同,同样的,不同队列各自对应的第六阈值通常也不相同;从预先维护的信息中获取各队列各自对应的第五阈值和第六阈值、预定时长以及前一次码率切换的时间,定时获取所有队列中的任一队列当前闲置存储空间大小(优选的,可以定时获取发送队列当前闲置存储空间大小),并将上述获取到的队列当前闲置存储空间大小与该队列所对应的第五阈值和第六阈值进行比较,在比较的结果为上述获取到的队列当前闲置存储空间大小大于上述获取到的第五阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向高码率切换;而在比较的结果为上述获取到的队列当前闲置存储空间大小小于第六阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向低码率切换。上述第五阈值通常远小于第六阈值。

需要特别说明的是,本实施例在确定出需要向低码率切换时,如果切换前的发送队列的码率已经是所有队列的码率中的最低码率,则切换后的新的发送队列仍然为切换前的发送队列,而如果切换前的发送队列的码率并不是所有队列的码率中的最低码率,则应从码率低于切换前的发送队列的码率的所有队列中选择一个队列作为发送队列,如从码率低于切换前的发送队列的码率的所有队列中选择码率最低的队列作为发送队列。本实施例在确定出需要向高码率切换时,如果切换前的发送队列的码率已经是所有队列的码率中的最高码率,则切换后的新的发送队列仍然为切换前的发送队列,而如果切换前的发送队列的码率并不是所有队列的码率中的最高码率,则应从码率高于切换前的发送队列的码率的所有队列中选择一个队列作为发送队列,如从码率高于切换前的发送队列的码率的所有队列中选择码率最高的队列作为发送队列。

S120、从发送队列中读取出多媒体数据帧并下发,且其他队列中的与已下发的多媒体数据帧具有同一媒体内容的多媒体数据帧均被删除。

作为示例,在不需要进行码率切换的情况下,本实施例应始终从发送队列中读取出多媒体数据帧并下发,从发送队列中读取出并下发的多媒体数据帧从发送队列中删除;而在确定出需要进行码率切换的情况下,本实施例应从切换后的新的发送队列中读取出多媒体数据帧并下发。

作为示例,在多媒体数据帧从发送队列中被读取出并下发时,本实施例还应同步删除其他队列(即所有队列中除了发送队列之外的所有队列)中相应的多媒体数据帧,以保证位于所有队列的队首处的多媒体数据帧始终对应同一媒体内容。

作为示例,在确定出需要进行码率切换的情况下,本实施例应注意从切换后的新的发送队列中读取多媒体数据帧并下发的时机,具体的,在确定出需要进行码率切换的情况下,本实施例应在需要从切换前的发送队列中读取出关键帧(如I帧)时,停止从切换前的发送队列中读取出多媒体数据帧并下发,而是从切换后的发送队列中读取出多媒体数据帧并下发;一个具体的例子,在确定出需要进行码率切换时,如果当前正在从切换前的发送队列中读取出非关键帧(如P帧或者B帧等)并下发,则应等待,直到从切换前的发送队列中读取完已下发的关键帧(如I帧)对应的所有非关键帧,并在需要从切换前的发送队列中读取出下一个关键帧并下发,且除了切换前的发送队列之外的所有队列中均删除了相应的非关键帧时,不再从切换前的发送队列中读取关键帧,而是开始从码率切换后的新的发送队列中读取出多媒体数据帧并下发,直到下一次码率切换。

实施例二、在视频直播应用场景中,流媒体服务器为用户自适应提供多码率流媒体的方法。

在视频直播应用场景中,设定流媒体服务器自适应的为网络中的n(n>2)个用户(即用户1、用户2,……以及用户n)分别提供三种码率的流媒体服务,则流媒体服务器自适应提供多码率流媒体的实现方式如图2所示。

在图2中,流媒体服务器针对三种码率设置了三个GOP缓存,并为一个用户分别设置了三个队列,即第一GOP缓存、第二GOP缓存、第三GOP缓存、第一队列、第二队列以及第三队列;其中第一GOP缓存和第一队列对应第一种码率,第二GOP缓存和第二队列对应第二种码率,第三GOP缓存和第三队列对应第三种码率,且第一码率高于第二码率,而第二码率高于第三码率。

本实施例中的三个GOP缓存的存储空间存在差异,但是三个GOP缓存所能存储的视频帧的数量相同。三个队列的存储空间存在差异,但是三个队列所能存储的视频帧的数量相同。

流媒体服务器针对当前实时产生的编码处理后的具有GOP结构的视频帧(即具有GOP结构的多媒体数据帧)进行转码处理,从而针对编码处理后的视频帧产生基于第一码率的视频帧、基于第二码率的视频帧以及基于第三码率的视频帧。

作为示例,流媒体服务器可以同步的将不同码率的视频帧放入相应的GOP缓存中,即基于第一码率的视频帧被缓存于第一GOP缓存中,基于第二码率的视频帧被缓存于第二GOP缓存中,基于第三码率的视频帧被缓存于第三GOP缓存中。流媒体服务器可以控制三个GOP缓存中的视频帧的数量相同,且三个GOP缓存中的视频帧所对应的媒体内容完全相同。

针对网络中的任意一个用户而言,流媒体服务器可以同步的将第一GOP缓存中的视频帧读取出放入第一队列中,将第二GOP缓存中的视频帧读取出并放入第二队列中,并将第三GOP缓存中的视频帧读取出并放入第三队列中。流媒体服务器可以控制同步放入三个队列中的视频帧所对应的媒体内容完全相同。

针对网络中的任意一个用户而言,在开始向该用户提供本次直播的媒体流时,流媒体服务器首先会将该用户对应的三个队列中的其中一个队列作为发送队列,如流媒体服务器根据缺省设置将相应的队列作为发送队列;再如流媒体服务器根据用户选择的码率将该码率对应的队列作为发送队列;再如流媒体服务器根据当前网络传输速率将相应码率的队列作为发送队列;流媒体服务器从发送队列(如第二个队列)中读取出视频帧并向该用户发送,且每下发一个视频帧,该视频帧即从发送队列中删除,流媒体服务器还会将第一个队列和第三个队列中的与该视频帧对应的码率不同的视频帧也删除。流媒体服务器在持续的从发送队列中读取视频帧并下发的过程中,会监测发送队列的数据充盈率(即发送队列当前存储的视频帧所占用的存储空间与发送队列的总存储空间大小的比值),流媒体服务器在监测到发送队列的数据充盈率高于第一充盈率,且距离前一次码率切换的时间达到预定时长时,确定出需要向低码率切换,流媒体服务器将第三个队列作为新的发送队列,在应该从第二个队列中读取I帧时,开始从新的发送队列(即第三个队列)中读取视频帧并下发,同样的,读取出的视频帧即从发送队列中删除,流媒体服务器还会将第一个队列和第二个队列中的与从第三个队列中读取出的视频帧对应的码率不同的视频帧也删除;流媒体服务器在监测到发送队列的数据充盈率高于第二充盈率,且距离前一次码率切换的时间达到预定时长时,确定出需要向高码率切换,流媒体服务器将第二个队列作为新的发送队列,在应该从第三个队列中读取I帧时,开始从新的发送队列(即第二个队列)中读取视频帧并下发,同样的,读取出的视频帧从发送队列中删除,流媒体服务器还会将第一个队列和第三个队列中的与从第二个队列中读取出的视频帧对应的码率不同的视频帧也删除。

实施例三、在视频电话会议应用场景中,流媒体服务器为用户自适应提供多码率流媒体的方法。

在视频电话会议应用场景中,设定流媒体服务器能够自适应的为参加视频电话会议的每一个与会者均提供三种码率的流媒体服务,流媒体服务器设置三个GOP缓存,即第一GOP缓存、第二GOP缓存以及第三GOP缓存,其中第一GOP缓存对应第一种码率,第二GOP缓存对应第二种码率,第三GOP缓存对应第三种码率,且第一码率高于第二码率,而第二码率高于第三码率。

在一个用户申请加入视频电话会议时,流媒体服务器为该用户配置相应的信息,如动态的为该用户设置三个队列,即第一队列、第二队列以及第三队列;其中第一队列对应第一种码率,第二队列对应第二种码率,第三队列对应第三种码率。本实施例中的三个GOP缓存的存储空间存在差异,但是三个GOP缓存所能存储的视频帧的数量相同。三个队列的存储空间存在差异,但是三个队列所能存储的视频帧的数量相同。

流媒体服务器在成功为该用户配置了相应的信息后,该用户成为本次视频电话会议中的与会者。流媒体服务器针对当前实时产生的编码处理后的具有GOP结构的视频帧进行转码处理,从而针对编码处理后的视频帧产生基于第一码率的视频帧、基于第二码率的视频帧以及基于第三码率的视频帧。

流媒体服务器可以同步的将不同码率的视频帧放入三个GOP缓存中,即基于第一码率的视频帧被缓存于第一GOP缓存中,基于第二码率的视频帧被缓存于第二GOP缓存中,基于第三码率的视频帧被缓存于第三GOP缓存中。流媒体服务器可以控制三个GOP缓存中的视频帧的数量相同,且三个GOP缓存中的视频帧所对应的媒体内容完全相同。

流媒体服务器可以同步的将该与会者的第一GOP缓存中的视频帧读取出放入第一队列中,将第二GOP缓存中的视频帧读取出并放入第二队列中,并将第三GOP缓存中的视频帧读取出并放入第三队列中。流媒体服务器可以控制同步放入三个队列中的视频帧所对应的媒体内容完全相同。

在开始向该与会者提供视频电话会议的媒体流时,流媒体服务器首先会根据该与会者选择的码率将该码率对应的队列作为发送队列;流媒体服务器从发送队列(如第三个队列)中读取出视频帧并向该与会者发送,且每下发一个视频帧,该视频帧即从发送队列中删除,流媒体服务器还会将第一个队列和第二个队列中的与该视频帧对应的码率不同的视频帧也删除。流媒体服务器在持续的从发送队列中读取视频帧并下发的过程中,会监测发送队列的数据充盈率,流媒体服务器在监测到发送队列的数据充盈率高于第一充盈率,且距离前一次码率切换的时间达到预定时长时,确定出需要向低码率切换,由于第三个队列的码率已经是最低码率,因此,流媒体服务器仍然将第三个队列作为发送队列,并继续从第三个队列中读取视频帧并下发;流媒体服务器在监测到发送队列的数据充盈率高于第二充盈率,且距离前一次码率切换的时间达到预定时长时,确定出需要向高码率切换,流媒体服务器将第二个队列作为新的发送队列,在应该从第三个队列中读取I帧时,开始从新的发送队列(即第二个队列)中读取视频帧并下发,同样的,读取出的视频帧从发送队列中删除,流媒体服务器还会将第一个队列和第三个队列中的与从第二个队列中读取出的视频帧对应的码率不同的视频帧也删除。

实施例四、在服务器中用于自适应提供多码率流媒体的装置。

本实施例的服务器即流媒体服务器,用于自适应提供多码率流媒体的装置通常会被设置于充当流媒体服务器的计算机设备中,如本实施例所记载的用于自适应提供多码率流媒体的装置可以设置于充当流媒体服务器的台式计算机、服务器以及其他网络设备中。本实施例的用于自适应提供多码率流媒体的装置的主要结构如图3所示。

下面参照具体实施例对在服务器中用于自适应提供多码率流媒体的装置进行说明。

图3中,本实施例的用于自适应提供多码率流媒体的装置包括:用于获取网络质量信息的装置(下述简称为“获取网络质量装置300”)、用于在根据网络质量信息确定出需要码率切换的情况下,从所有队列中选择一个队列作为发送队列的装置(下述简称为“控制码率切换装置310”)以及用于从发送队列中读取出多媒体数据帧并下发,且其他队列中的与已下发的多媒体数据帧具有同一媒体内容的多媒体数据帧均被删除的装置(下述简称为“下发数据帧装置320”);其中的获取网络质量装置可以包括:用于获取发送队列的数据充盈信息的装置(下述简称为“获取充盈信息装置301”)。可选的,本实施例的用于自适应提供多码率流媒体的装置还可以包括:用于将编码处理后的多媒体数据帧转码为不同码率的多媒体数据帧的装置(下述简称为“转码装置330”)、用于将转码后的不同码率的多媒体数据帧分别存储于相应的GOP缓存中的装置(下述简称为“第一存储控制装置340”)以及用于从各GOP缓存中同步读取多媒体数据帧,并将读取出的多媒体数据分别存储于相应的队列中的装置(下述简称为“第二存储控制装置350”)。

获取网络质量装置300主要用于获取网络质量信息。

作为示例,获取网络质量装置300所获取的网络质量信息可以包括:网络传输延时、丢包率以及网络抖动信息等。优选的,本实施例中的网络质量信息可以使用队列的数据充盈信息来体现,即由获取充盈信息装置301获取队列的数据充盈信息。

作为示例,获取充盈信息装置301所获取的队列的数据充盈信息可以具体为队列中存储的多媒体数据帧所占用的存储空间大小与队列的总存储空间大小的比值(即数据充盈率),也可以具体为队列中存储的多媒体数据帧所占用的存储空间大小或者队列中的闲置存储空间大小等能够反应网络质量的队列参数。

作为示例,获取充盈信息装置301可以定时(如1秒或者小于1秒等)获取所有队列中的任意一个队列的数据充盈信息,以根据该队列的数据充盈信息及时的获知当前网络状态。上述任意一个队列可以是随机确定出的一个队列,也可以是预先确定的一个固定的队列,即获取充盈信息装置301可以随机获取某一个队列的数据充盈信息,也可以固定获取某一个队列的数据充盈信息。优选的,获取充盈信息装置301可以定时获取队列中的发送队列的数据充盈信息,从而获取充盈信息装置301根据发送队列的数据充盈信息及时的获知当前网络状态。本实施例中的发送队列是指当前正在被发送给终端设备的多媒体数据帧所属的队列,也就是说,虽然本实施例针对不同码率的多媒体数据帧分别设置了相应的队列,且每一个队列中均存储有相应码率的多媒体数据帧,但是,针对任一时刻而言,只有一个队列中存储的多媒体数据帧被发送给终端设备,该队列即为发送队列。

控制码率切换装置310主要用于在根据网络质量信息确定出需要码率切换的情况下,从所有队列中选择一个队列作为发送队列。

作为示例,本实施例的不同队列中存储的所有多媒体数据帧具有相同的编码格式,如不同队列中存储的所有多媒体数据帧具有相同的GOP结构。另外,不同队列中存储的多媒体数据帧通常是同步更新的;如在多媒体数据帧采用GOP结构的情况下,本实施例为每一种码率分别设置一个GOP缓存;首先,转码装置330针对编码处理后的各多媒体数据帧进行转码处理,以获得多个不同码率的多媒体数据帧,然后,第一存储控制装置340将不同码率的多媒体数据帧同时写入相应的GOP缓存中,如在各GOP缓存均为空(可以由于GOP缓存中的多媒体数据帧被放入队列而形成GOP缓存为空,也可以由于清空操作而使GOP缓存为空)的情况下,第一存储控制装置340将转码处理后的不同码率的多媒体数据帧同时写入相应的GOP缓存中;之后,第二存储控制装置350同时从各GOP缓存中读取相同数量的多媒体数据帧,并将读取出的相同数量的多媒体数据帧分别存储于相应的队列中,从而使各队列中同步增加了针对同一媒体内容的多媒体数据帧。

作为示例,在获取网络质量装置300获取到的队列的数据充盈信息包括:队列的数据充盈率,并且在所有队列各自的存储空间所能够存储的多媒体数据帧的数量均相同的情况下,控制码率切换装置310根据网络质量信息确定出需要码率切换的过程可以具体为:预先针对所有队列设置两个统一的阈值,即第一阈值和第二阈值,控制码率切换装置310从预先维护的信息中获取各队列的总存储空间大小,并定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(如控制码率切换装置310定时获取发送队列当前存储的所有多媒体数据帧所占用的总存储空间大小),然后,控制码率切换装置310根据上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小和该队列的总存储空间大小计算队列的数据充盈率,在判断出该数据充盈率高于第一阈值时,确定出需要向低码率切换;而在判断出该数据充盈率低于第二阈值时,确定出需要向高码率切换。上述第一阈值通常远大于第二阈值,如第一阈值为80%,而第二阈值为20%。

作为示例,在获取网络质量装置300获取到的队列的数据充盈信息包括:队列的数据充盈率,并且在所有队列各自的存储空间所能够存储的多媒体数据帧的数量不相同的情况下,控制码率切换装置310根据网络质量信息确定出需要码率切换的过程可以为:预先为每一个队列分别设置两个阈值,即每一个队列均对应各自的第一阈值和第二阈值,不同队列各自对应的第一阈值通常不相同,同样的,不同队列各自对应的第二阈值通常也不相同;控制码率切换装置310从预先维护的信息中获取各队列的总存储空间大小以及各队列自身对应的第一阈值和第二阈值,控制码率切换装置310定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(如控制码率切换装置310定时获取发送队列当前存储的所有多媒体数据帧占用的总存储空间大小),并根据上述获取到的队列中当前存储的所有多媒体数据所占用的总存储空间大小以及该队列的总存储空间大小计算队列的数据充盈率,控制码率切换装置310在判断出该数据充盈率高于该队列对应的第一阈值时,确定出需要向低码率切换;而控制码率切换装置310在判断出该数据充盈率低于该队列所对应的第二阈值时,确定出需要向高码率切换。

作为示例,在本实施例中的网络质量信息包括:队列中当前存储的所有多媒体数据帧所占用的总存储空间大小的情况下,控制码率切换装置310根据网络质量信息确定出需要码率切换的过程可以具体为:无论所有队列各自的存储空间所能够存储的多媒体数据帧的数量是否相同,均预先为每一个队列分别设置两个阈值,即每一个队列均对应各自的第三阈值和第四阈值,且不同队列所对应的第三阈值通常不相同,同样的,不同队列所对应的第四阈值通常也不相同;控制码率切换装置310从预先维护的信息中获取各队列分别对应的第三阈值和第四阈值,控制码率切换装置310定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(如定时获取发送队列当前存储的所有多媒体数据帧占用的总存储空间大小),并将上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小与该队列所对应的第三阈值和第四阈值进行比较,在比较的结果为上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小大于该队列所对应的第三阈值时,控制码率切换装置310确定出需要向低码率切换;而在比较的结果为上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小小于该队列所对应的第四阈值时,控制码率切换装置310确定出需要向高码率切换。上述第三阈值通常远大于第四阈值。

作为示例,在本实施例中的网络质量信息包括:队列当前闲置存储空间大小的情况下,控制码率切换装置310根据网络质量信息确定出需要码率切换的过程可以具体为:无论所有队列各自的存储空间所能够存储的多媒体数据帧的数量是否相同,均预先为每一个队列分别设置两个阈值,即每一个队列均对应各自的第五阈值以及第六阈值,且不同队列各自对应的第五阈值通常不相同,同样的,不同队列各自对应的第六阈值通常也不相同;控制码率切换装置310从预先维护的信息中获取各队列各自对应的第五阈值和第六阈值,控制码率切换装置310定时获取所有队列中的任一队列当前闲置存储空间大小(如定时获取发送队列当前闲置存储空间大小),并将上述获取到的队列当前闲置存储空间大小与该队列所对应的第五阈值和第六阈值进行比较,在比较的结果为上述获取到的队列当前闲置存储空间大小大于上述获取到的第五阈值时,控制码率切换装置310确定出需要向高码率切换;而在比较的结果为上述获取到的队列当前闲置存储空间大小小于第六阈值时,控制码率切换装置310确定出需要向低码率切换。上述第五阈值通常远小于第六阈值。

作为示例,为避免出现由于网络抖动等原因而造成的频繁码率切换的现象,控制码率切换装置310可以在判断是否需要码率切换的过程中,考虑控制码率频繁切换的限制条件,也就是说,控制码率切换装置310可以根据网络质量信息以及预先设置的码率切换的时间限制条件确定出需要码率切换。上述预先设置的码率切换的时间限制条件可以具体为当前时间距离前一次码率切换时间超过预定时长。

作为示例,控制码率切换装置310根据网络质量信息和预先设置的码率切换的时间限制条件确定出需要码率切换的第一个具体例子为:在所有队列各自的存储空间所能够存储的多媒体数据帧的数量均相同的情况下,预先针对所有队列设置两个统一的阈值,即第一阈值和第二阈值,控制码率切换装置310从预先维护的信息中获取队列的总存储空间大小、预定时长以及前一次码率切换的时间,并定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小,然后,控制码率切换装置310根据上述获取到的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小和该队列的总存储空间大小计算队列的数据充盈率,在判断出该队列的数据充盈率高于第一阈值且当前时间与前一次码率切换的时间之差超过预定时长时,控制码率切换装置310确定出需要向低码率切换;而在判断出该队列的数据充盈率低于第二阈值且当前时间与前一次码率切换的时间之差超过预定时长时,控制码率切换装置310确定出需要向高码率切换。

作为示例,控制码率切换装置310根据网络质量信息和预先设置的码率切换的时间限制条件确定出需要码率切换的第二个具体例子为:在所有队列各自的存储空间所能够存储的多媒体数据帧的数量不相同的情况下,预先针对每一个队列分别设置两个阈值,即每一个队列均对应各自的第一阈值和第二阈值,不同队列各自对应的第一阈值通常不相同,同样的,不同队列各自对应的第二阈值通常也不相同;控制码率切换装置310从预先维护的信息中获取各队列的总存储空间大小、各队列各自对应的第一阈值和第二阈值、预定时长以及前一次码率切换的时间,控制码率切换装置310定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(如定时获取发送队列当前存储的所有多媒体数据帧所占用的总存储空间大小),并根据上述获取到的队列中当前存储的所有多媒体数据所占用的总存储空间大小和该队列的总存储空间大小计算队列的数据充盈率,在控制码率切换装置310判断出该数据充盈率高于该队列对应的第一阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向低码率切换;而在控制码率切换装置310判断出该数据充盈率低于该队列所对应的第二阈值且当前时间与前一次码率切换的时间之差超过预定时长时,确定出需要向高码率切换。上述第一阈值通常远大于第二阈值,如第一阈值为80%,而第二阈值为20%。

作为示例,控制码率切换装置310根据网络质量信息和预先设置的码率切换的时间限制条件确定出需要码率切换的第三个具体例子为:预先针对每一个队列分别设置两个阈值,即每一个队列均对应各自的第三阈值和第四阈值,且不同队列所对应的第三阈值通常不相同,同样的,不同队列所对应的第四阈值通常也不相同;控制码率切换装置310从预先维护的信息中获取各队列分别对应的第三阈值和第四阈值、预定时长以及前一次码率切换的时间,控制码率切换装置310定时获取所有队列中的任一队列中当前存储的所有多媒体数据帧所占用的总存储空间大小(如定时获取发送队列当前存储的所有多媒体数据帧所占用的总存储空间大小),并将上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小与该队列所对应的第三阈值和第四阈值进行比较,在比较的结果为上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小大于该队列所对应的第三阈值且当前时间与前一次码率切换的时间之差超过预定时长时,控制码率切换装置310确定出需要向低码率切换;而在比较的结果为上述获取到的队列中当前存储的所有多媒体数据帧所占用的总存储空间大小小于该队列所对应的第四阈值且当前时间与前一次码率切换的时间之差超过预定时长时,控制码率切换装置310确定出需要向高码率切换。上述第三阈值通常远大于第四阈值。

作为示例,控制码率切换装置310根据网络质量信息和预先设置的码率切换的时间限制条件确定出需要码率切换的第四个具体例子为:预先针对每一个队列分别设置两个阈值,即每一个队列均对应各自的第五阈值以及第六阈值,且不同队列各自对应的第五阈值通常不相同,同样的,不同队列各自对应的第六阈值通常也不相同;控制码率切换装置310从预先维护的信息中获取各队列各自对应的第五阈值和第六阈值、预定时长以及前一次码率切换的时间,控制码率切换装置310定时获取所有队列中的任一队列当前闲置存储空间大小(如定时获取发送队列当前闲置存储空间大小),并将上述获取到的队列当前闲置存储空间大小与该队列所对应的第五阈值和第六阈值进行比较,在比较的结果为上述获取到的队列当前闲置存储空间大小大于上述获取到的第五阈值且当前时间与前一次码率切换的时间之差超过预定时长时,控制码率切换装置310确定出需要向高码率切换;而在比较的结果为上述获取到的队列当前闲置存储空间大小小于第六阈值且当前时间与前一次码率切换的时间之差超过预定时长时,控制码率切换装置310确定出需要向低码率切换。上述第五阈值通常远小于第六阈值。

下发数据帧装置320主要用于从发送队列中读取出多媒体数据帧并下发,且其他队列中的与已下发的多媒体数据帧具有同一媒体内容的多媒体数据帧均被删除。

作为示例,下发数据帧装置320应始终从发送队列中读取出多媒体数据帧并下发,下发数据帧装置320从发送队列中读取出并下发的多媒体数据帧从发送队列中删除;在控制码率切换装置310确定出需要进行码率切换的情况下,下发数据帧装置320应从切换后的新的发送队列中读取出多媒体数据帧并下发。

作为示例,在多媒体数据帧从发送队列中被下发数据帧装置320读取出并下发时,下发数据帧装置320还应同步删除其他队列(即所有队列中除了发送队列之外的所有队列)中相应的多媒体数据帧,以保证位于所有队列的队首处的多媒体数据帧始终对应同一媒体内容。

作为示例,在控制码率切换装置310确定出需要进行码率切换的情况下,下发数据帧装置320应注意从切换后的新的发送队列中读取多媒体数据帧并下发的时机,具体的,在控制码率切换装置310确定出需要进行码率切换的情况下,下发数据帧装置320应在需要从切换前的发送队列中读取出关键帧(如I帧)时,停止从切换前的发送队列中读取出多媒体数据帧并下发,而是从切换后的发送队列中读取出多媒体数据帧并下发;一个具体的例子,在控制码率切换装置310确定出需要进行码率切换时,如果当前正在从切换前的发送队列中读取出非关键帧(如P帧或者B帧等)并下发,则应等待,直到下发数据帧装置320从切换前的发送队列中读取完已下发的关键帧(如I帧)对应的所有非关键帧,并在需要从切换前的发送队列中读取出下一个关键帧并下发,且除了切换前的发送队列之外的所有队列中均删除了相应的非关键帧时,下发数据帧装置320不再从切换前的发送队列中读取关键帧,而是开始从码率切换后的新的发送队列中读取出多媒体数据帧并下发,直到下一次码率切换。

需要特别说明的是,在控制码率切换装置310确定出需要向低码率切换时,如果切换前的发送队列的码率已经是所有队列的码率中的最低码率,则切换后的新的发送队列仍然为切换前的发送队列,而如果切换前的发送队列的码率并不是所有队列的码率中的最低码率,则控制码率切换装置310应从码率低于切换前的发送队列的码率的所有队列中选择一个队列作为发送队列,如控制码率切换装置310从码率低于切换前的发送队列的码率的所有队列中选择码率最低的队列作为发送队列。控制码率切换装置310在确定出需要向高码率切换时,如果切换前的发送队列的码率已经是所有队列的码率中的最高码率,则切换后的新的发送队列仍然为切换前的发送队列,而如果切换前的发送队列的码率并不是所有队列的码率中的最高码率,则控制码率切换装置310应从码率高于切换前的发送队列的码率的所有队列中选择一个队列作为发送队列,如控制码率切换装置310从码率高于切换前的发送队列的码率的所有队列中选择码率最高的队列作为发送队列。

实施例五、在视频直播应用场景中,流媒体服务器为用户自适应提供多码率流媒体的实现方式。

在视频直播应用场景中,设定流媒体服务器自适应的为网络中的n(n>2)个用户分别提供三种码率的流媒体服务。流媒体服务器针对三种码率设置了三个GOP缓存,且为每一个用户分别设置了三个队列,即第一GOP缓存、第二GOP缓存、第三GOP缓存、第一队列、第二队列以及第三队列;其中第一GOP缓存和第一队列对应第一种码率,第二GOP缓存和第二队列对应第二种码率,第三GOP缓存和第三队列对应第三种码率,且第一码率高于第二码率,而第二码率高于第三码率。三个GOP缓存的存储空间存在差异,但是三个GOP缓存所能存储的视频帧的数量相同。三个队列的存储空间存在差异,但是三个队列所能存储的视频帧的数量相同。

转码装置330针对当前实时产生的编码处理后的具有GOP结构的视频帧(即具有GOP结构的多媒体数据帧)进行转码处理,从而针对编码处理后的视频帧产生基于第一码率的视频帧、基于第二码率的视频帧以及基于第三码率的视频帧。

第一存储控制装置340可以同步的将不同码率的视频帧放入相应的GOP缓存中,即基于第一码率的视频帧被缓存于第一GOP缓存中,基于第二码率的视频帧被缓存于第二GOP缓存中,基于第三码率的视频帧被缓存于第三GOP缓存中。流媒体服务器可以控制三个GOP缓存中的视频帧的数量相同,且三个GOP缓存中的视频帧所对应的媒体内容完全相同。

针对网络中的任意一个用户而言,第二存储控制装置350可以同步的将第一GOP缓存中的视频帧读取出放入第一队列中,将第二GOP缓存中的视频帧读取出并放入第二队列中,并将第三GOP缓存中的视频帧读取出并放入第三队列中。第二存储控制装置350可以控制同步放入三个队列中的视频帧所对应的媒体内容完全相同。

针对网络中的任意一个用户而言,在开始向该用户提供本次直播的媒体流时,下发数据帧装置320首先会将该用户对应的三个队列中的其中一个队列作为发送队列,如根据缺省设置将相应的队列作为发送队列;再如根据用户选择的码率将该码率对应的队列作为发送队列;再如下发数据帧装置320根据当前网络传输速率将相应码率的队列作为发送队列;下发数据帧装置320从发送队列(如第二个队列)中读取出视频帧并向该用户发送,且每下发一个视频帧,该视频帧即从发送队列中删除,下发数据帧装置320还会将第一个队列和第三个队列中的与该视频帧对应的码率不同的视频帧也删除。下发数据帧装置320在持续的从发送队列中读取视频帧并下发的过程中,控制码率切换装置310会监测获取网络质量装置300获取的发送队列的数据充盈率(即发送队列当前存储的视频帧所占用的存储空间与发送队列的总存储空间大小的比值),控制码率切换装置310在监测到发送队列的数据充盈率高于第一充盈率,且距离前一次码率切换的时间达到预定时长时,确定出需要向低码率切换,控制码率切换装置310将第三个队列作为新的发送队列,在下发数据帧装置320应该从第二个队列中读取I帧时,下发数据帧装置320开始从新的发送队列(即第三个队列)中读取视频帧并下发,同样的,下发数据帧装置320读取出的视频帧即从发送队列中删除,下发数据帧装置320还会将第一个队列和第二个队列中的与从第三个队列中读取出的视频帧对应的码率不同的视频帧也删除;控制码率切换装置310在监测到发送队列的数据充盈率高于第二充盈率,且距离前一次码率切换的时间达到预定时长时,确定出需要向高码率切换,下发数据帧装置320将第二个队列作为新的发送队列,下发数据帧装置320在应该从第三个队列中读取I帧时,开始从新的发送队列(即第二个队列)中读取视频帧并下发,同样的,下发数据帧装置320读取出的视频帧从发送队列中删除,下发数据帧装置320还会将第一个队列和第三个队列中的与从第二个队列中读取出的视频帧对应的码率不同的视频帧也删除。

实施例六、在视频电话会议应用场景中,流媒体服务器为用户自适应提供多码率流媒体的实现方式。

在视频电话会议应用场景中,设定流媒体服务器能够自适应的为参加视频电话会议的每一个与会者均提供三种码率的流媒体服务,流媒体服务器设置三个GOP缓存,即第一GOP缓存、第二GOP缓存以及第三GOP缓存,其中第一GOP缓存对应第一种码率,第二GOP缓存对应第二种码率,第三GOP缓存对应第三种码率,且第一码率高于第二码率,而第二码率高于第三码率。

在一个用户申请加入视频电话会议时,流媒体服务器为该用户配置相应的信息,如动态的为该用户设置三个队列,即第一队列、第二队列以及第三队列;其中第一队列对应第一种码率,第二队列对应第二种码率,第三队列对应第三种码率。本实施例中的三个GOP缓存的存储空间存在差异,但是三个GOP缓存所能存储的视频帧的数量相同。三个队列的存储空间存在差异,但是三个队列所能存储的视频帧的数量相同。

流媒体服务器在成功为该用户配置了相应的信息后,该用户成为本次视频电话会议中的与会者。转码装置330针对当前实时产生的编码处理后的具有GOP结构的视频帧进行转码处理,从而针对编码处理后的视频帧产生基于第一码率的视频帧、基于第二码率的视频帧以及基于第三码率的视频帧。

第一存储控制装置340可以同步的将不同码率的视频帧放入三个GOP缓存中,即基于第一码率的视频帧被缓存于第一GOP缓存中,基于第二码率的视频帧被缓存于第二GOP缓存中,基于第三码率的视频帧被缓存于第三GOP缓存中。第一存储控制装置340可以控制三个GOP缓存中的视频帧的数量相同,且三个GOP缓存中的视频帧所对应的媒体内容完全相同。

第二存储控制装置350可以同步的将该与会者的第一GOP缓存中的视频帧读取出放入第一队列中,将第二GOP缓存中的视频帧读取出并放入第二队列中,并将第三GOP缓存中的视频帧读取出并放入第三队列中。第二存储控制装置350可以控制同步放入三个队列中的视频帧所对应的媒体内容完全相同。

在开始向该与会者提供视频电话会议的媒体流时,下发数据帧装置320首先会根据该与会者选择的码率将该码率对应的队列作为发送队列;下发数据帧装置320从发送队列(如第三个队列)中读取出视频帧并向该与会者发送,且每下发一个视频帧,该视频帧即从发送队列中删除,下发数据帧装置320还会将第一个队列和第二个队列中的与该视频帧对应的码率不同的视频帧也删除。下发数据帧装置320在持续的从发送队列中读取视频帧并下发的过程中,控制码率切换装置310会监测获取网络质量装置300获取的发送队列的数据充盈率,控制码率切换装置310在监测到发送队列的数据充盈率高于第一充盈率,且距离前一次码率切换的时间达到预定时长时,确定出需要向低码率切换,由于第三个队列的码率已经是最低码率,因此,控制码率切换装置310仍然将第三个队列作为发送队列,下发数据帧装置320继续从第三个队列中读取视频帧并下发;控制码率切换装置310在监测到发送队列的数据充盈率高于第二充盈率,且距离前一次码率切换的时间达到预定时长时,确定出需要向高码率切换,控制码率切换装置310将第二个队列作为新的发送队列,在下发数据帧装置320应该从第三个队列中读取I帧时,开始从新的发送队列(即第二个队列)中读取视频帧并下发,同样的,下发数据帧装置320将读取出的视频帧从发送队列中删除,下发数据帧装置320还会将第一个队列和第三个队列中的与从第二个队列中读取出的视频帧对应的码率不同的视频帧也删除。

需要注意的是,本发明可以在软件和/或者软件与硬件的组合体中被实施,例如,本发明的各个装置可采用专用集成电路(ASIC)或者任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读设置介质中,例如,RAM存储器、磁或者光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

对于本领域技术人员而言,显然,本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一方面来看,均应该将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明来限定,因此,旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应该将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一以及第二等词语用来表示名称,而并不表示任何特定顺序。

虽然前面特别示出并且描述了示例性实施例,但是本领域技术人员将会理解的是,在不背离权利要求书的精神和范围的情况下,在其形式和细节方面可以有所变化。这里所寻求的保护在所附权利要求书中做了阐述。

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