一种流媒体传输方法、装置、服务器及终端与流程

文档序号:11156693阅读:407来源:国知局
一种流媒体传输方法、装置、服务器及终端与制造工艺

本发明涉及多媒体技术,尤其涉及一种流媒体传输方法、装置、服务器及终端。



背景技术:

随着通信技术的发展,多媒体技术的应用越来越广。在多媒体数据的直播过程中,一般采用分段节目的方式进行下载。分段节目是指在节目制作时将节目进行分段,生成多个分段节目和播放列表。对于分段节目,播放时客户端采用超文本传输协议流媒体直播(HLS,HTTP Live Streaming)协议首先获取播放列表,即主M3U8,然后解析主M3U8获取子M3U8的统一资源定位符(URL,Uniform Resource Locator),随后根据子M3U8的URL获取子M3U8,最后解析子M3U8获取分段节目的URL,根据分段节目的URL依次获取分段节目播放,这种方式能够兼容现有的内容分发网络(CDN,Content Delivery NetWorks)系统。

对于分段节目,启动播放时,客户端首先从服务器下载较低码率的分段文件,然后启动播放,在下载较低码率的分段文件后,如果检测到网络带宽比较高,就可以开始下载较高码率的分段文件。在下载某一个分段文件的过程中,如果网络带宽发生变化,客户端只有等待这个分段文件下载完成后,再根据网络带宽请求并下载码率合适的分段文件。这种直播码率切换的方法滞后于客户端网络带宽的变化,从而增加了端到端的时延。



技术实现要素:

为解决现有存在的技术问题,本发明实施例提供一种流媒体传输方法、装置、服务器及终端。

本发明实施例的技术方案是这样实现的:

本发明实施例提供了一种流媒体传输方法,包括:

接收客户端发送的流媒体播放请求;

响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;

在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成;

所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据。

上述方案中,响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据之前,所述方法还包括:

针对每种码率的流媒体数据,在流媒体数据中添加第三参数;所述第三参数表征媒体数据解码信息;

相应地,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据之前,所述方法还包括:

从第二码率的流媒体数据中获取对应的第三参数;

向所述客户端发送第三参数;发送的第三参数用于指示所述客户端对解码器进行调整。

上述方案中,所述在流媒体数据中添加第三参数,包括:

在每个数据单元中添加第三参数;

相应地,从所述第二数据单元中获取对应的第三参数。

上述方案中,所述在每个数据单元中添加第三参数,包括:

在每个数据单元的起始位置添加第三参数;

相应地,从所述第二数据单元的起始位置获取对应的第三参数。

上述方案中,所述方法还包括:

在播放第一码率的流媒体数据过程中获取所述客户端的第一参数及第二参数。

上述方案中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,所述方法还包括:

利用所述客户端的第一参数及第二参数,并结合服务器的第四参数,确定进行码率切换;所述第四参数表征所述服务器当前的流媒体处理能力。

上述方案中,响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据之前,所述方法还包括:

生成不同码率的流媒体数据时,将每种码率的流媒体数据的数据单元在时间上对齐;

相应地,所述利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元,包括:

从第一码率的流媒体数据中确定第一数据单元对应的时间;

利用确定的时间从第二码率的流媒体数据中得到所述第二数据单元。

上述方案中,向所述客户端发送第二码率的流媒体数据,包括:

采用超文本传输协议(HTTP)分块传输(Chunk)的方式发送采用以下之一方式封装的第二码率的流媒体数据:

基于MPEGTS封装;

基于MPEGTS封装后再基于实时传输协议(RTP)封装;

基于MP4封装;

基于FLV的标签(Flag)封装。

本发明实施例还提供了一种流媒体传输方法,包括:

向服务器发送流媒体播放请求,并接收所述服务器发送的第一码率的流媒体数据;

在播放第一码率的流媒体数据过程中,接收所述服务器发送的第二码流的流媒体数据;接收的第二码率的流媒体数据是从第二码流的第二数据单元开始的;

利用重置的解码器解码第二码流的流媒体数据,并进行播放。

本发明实施例又提供了一种流媒体传输装置,包括:

第一接收单元,用于接收客户端发送的流媒体播放请求;

第一发送单元,用于响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;

切换单元,用于在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成;

所述第一发送单元,还用于所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据。

上述方案中,所述装置还包括:

生成单元,用于针对每种码率的流媒体数据,在流媒体数据中添加第三参数;所述第三参数表征媒体数据解码信息;

切换单元,还用于从第二码率的流媒体数据中获取对应的第三参数;

所述第一发送单元,还用于从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据之前,向所述客户端发送第三参数;发送的第三参数用于指示所述客户端对解码器进行调整。

上述方案中,所述装置还包括:

获取单元,用于在播放第一码率的流媒体数据过程中获取所述客户端的第一参数及第二参数。

上述方案中,所述切换单元,用于利用所述客户端的第一参数及第二参数,并结合服务器的第四参数,确定进行码率切换;所述第四参数表征所述服务器当前的流媒体处理能力。

上述方案中,所述装置还包括:

生成单元,用于生成不同码率的流媒体数据时,将每种码率的流媒体数据的数据单元在时间上对齐;

所述切换单元,具体用于:

从第一码率的流媒体数据中确定第一数据单元对应的时间;

利用确定的时间从第二码率的流媒体数据中得到所述第二数据单元。

本发明实施例还提供了一种流媒体传输装置,包括:

第二发送单元,用于向服务器发送流媒体播放请求;

第二接收单元,用于接收所述服务器发送的第一码率的流媒体数据;以及在播放第一码率的流媒体数据过程中,接收所述服务器发送的第二码流的流媒体数据;接收的第二码率的流媒体数据是从第二码流的第二数据单元开始的;

播放单元,用于利用重置的解码器解码第二码流的流媒体数据,并进行播放。

本发明实施例又提供了一种服务器,包括:

第一通信接口,用于接收客户端发送的流媒体播放请求;响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;以及所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据;

第一处理器,用于在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率进行时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成。

上述方案中,所述第一处理器,还用于响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据之前针对每种码率的流媒体数据,在流媒体数据中添加第三参数;所述第三参数表征媒体数据解码信息;以及从第二码率的流媒体数据中获取对应的第三参数;

相应地,所述第一通信接口,还用于从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据之前,向所述客户端发送第三参数;发送的第三参数用于指示所述客户端对解码器进行调整。

上述方案中,所述第一处理器,还用于响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据之前,生成不同码率的流媒体数据时,将每种码率的流媒体数据的数据单元在时间上对齐;

所述第一处理器,具体用于:

从第一码率的流媒体数据中确定第一数据单元对应的时间;

利用确定的时间从第二码率的流媒体数据中得到所述第二数据单元。

本发明实施例还提供了一种终端,包括:

第二通信接口,用于向服务器发送流媒体播放请求,并接收所述服务器发送的第一码率的流媒体数据;以及在播放第一码率的流媒体数据过程中,接收所述服务器发送的第二码流的流媒体数据;接收的第二码率的流媒体数据是从第二码流的第二数据单元开始的;

第二处理器,用于利用重置的解码器解码第二码流的流媒体数据,并进行播放。

本发明实施例提供的流媒体传输方法、装置、服务器及终端,接收客户端发送的流媒体播放请求;响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成;所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据,由服务器端根据所述客户端的第一参数及第二参数来确定进行码率切换,如此,能够根据客户端的网络带宽及解码能力及时地进行码率的切换,减少了端到端的时延。而且,流媒体数据仅划分成了不同的数据单元,如此,不需要服务器端去准备索引和分段文件,减少了流媒体数据在服务器端的缓存时间,进一步减少了端到端的时延。

附图说明

在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。

图1为本发明实施例一流媒体传输的方法流程示意图;

图2为本发明实施例二一种流媒体传输系统结构示意图;

图3为本发明实施例二另一种流媒体传输系统结构示意图;

图4为本发明实施例二服务器端和客户端交互的流程示意图;

图5为本发明实施例三多种码流的码流结构示意图;

图6为本发明实施例四多种码流的码流结构示意图;

图7为本发明实施例五多种码流的码流结构示意图;

图8为本发明实施例六多种码流的码流结构示意图;

图9为本发明实施例七一种流媒体传输装置结构示意图;

图10为本发明实施例七另一种流媒体传输装置结构示意图;

图11为本发明实施例服务器结构示意图;

图12为本发明实施例终端结构示意图。

具体实施方式

下面结合附图及实施例对本发明再作进一步详细的描述。

当前直播过程中码率切换的方法,当检测到网络带宽发生变化时,客户端只有在当前的分段文件下载完成后才能根据网络带宽向服务器端请求并下载码率合适的分段文件,这种切换方式是滞后于客户端网络带宽的变化的,码率切换的实时性差;另一方面,由于文件是以分段为单位进行下载的,所以服务器端需要根据客户端的请求至少需要缓存一个分段文件才能发送给客户端,这也需要服务器端消耗一定的时长去得到这个分段文件,两方面的原因导致客户端直播的时延长,用户体验差。在实际的HLS时延测量试验中发现,即使在播放时长为1秒一个分段文件,利用清流传输这样一个实验条件下,测量得到端到端的时延也超过了5秒,大大影响了用户体验。

基于此,在本发明的各种实施例中:接收客户端发送的流媒体播放请求;响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成;所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据。

实施例一

本发明实施例流媒体传输方法,应用于服务器,具体来说是媒体服务器,如图1所示,该方法包括以下步骤:

步骤101:接收客户端发送的流媒体播放请求;

步骤102:响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;

步骤103:在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;

这里,所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力。

其中,实际应用时,所述第二参数可以是所述客户端的系统资源,包含:CPU、内存的使用情况等。本发明实施例并不对所述第二参数进行限定,只要是能反映客户端的解码能力的信息即可。

这里,实际应用时,服务器在播放第一码率的流媒体数据过程中获取所述客户端的第一参数及第二参数,以便能够及时作出是否要进行码率切换的决策,降低端到端的时延。

其中,服务器可以通过以下方式之一获取到第一参数及第二参数:

所述客户端向网络侧设备上报自身的第一参数及第二参数,网络侧设备向服务器上报所述客户端的第一参数及第二参数;

服务器通过仿真客户端的网络状态,得到第一参数,并通过仿真所述客户单的状态,来得到第二参数。

第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成。

换句话说,不同码率的流媒体数据是由多个数据单元的数据组成的,实际应用时,可以根据时延的具体要求,来确定流媒体数据由多少个数据单元组成。

在本步骤中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,服务器还可以利用所述客户端的第一参数及第二参数,并结合服务器的第四参数,确定进行码率切换;所述第四参数表征所述服务器当前的流媒体处理能力。在码率切换决策过程中,既考虑了客户端的网络带宽和解码能力,又考虑了服务器侧的处理能力,如此,能够进一步降低端到端的时延。

这里,所述第四参数可以是CPU、内存的使用情况等。本发明实施例并不对此作限定,只要是能反映服务器的流媒体处理能力的信息即可。

实际应用时,服务器利用所述客户端的第一参数及第二参数,来进行码率切换决策,或者利用所述客户端的第一参数及第二参数,并结合服务器的第四参数进行码率切换决策时,可以有很多种决策方式,本发明实施例并不对此进行限定,举个例子来说,当服务器利用所述客户端的第一参数及第二参数,并结合服务器的第四参数进行码率切换决策时,可以先考虑服务器的CPU使用情况,当CPU空闲超过30%时,再比较第一参数及第二参数,当所述客户端的网络带宽为10M,CPU空闲超过90%,且内存占用低于50%时,决定进行码率切换,即将码率切换为高码率,比如高清等。

步骤104:所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据。

实际应用时,在执行步骤102之前,所述服务器还可以根据得到的流媒体数据生成不同码率的流媒体数据,且针对每种码率的流媒体数据,在流媒体数据中添加第三参数;所述第三参数表征媒体数据解码信息;

相应地,执行步骤104之前,该方法还可以包括:

从第二码率的流媒体数据中获取对应的第三参数;

向所述客户端发送第三参数;发送的第三参数用于指示所述客户端对解码器进行调整。

其中,在流媒体数据中添加第三参数,当服务器确定进行码率切换时,服务器能够快速获知对应码率的流媒体数据的解码信息,并通知给所述客户端,进而能够让所述客户端尽快重置解码器,从而减少播放时延。

这里,所述在流媒体数据中添加第三参数,具体包括:

在每个数据单元中添加第三参数;

相应地,从所述第二数据单元中获取对应的第三参数。

其中,由于每个数据单元中均添加有第三参数,所以只要服务器确定第二数据单元后,即可从第二数据单元中直接获取第三参数,无需再去重新去其它位置获取第三参数,如此,能够快速地获取第二码率的流媒体数据对应的第三参数。

在一实施例中,可以在每个数据单元的起始位置添加第三参数;相应地,所述服务器从所述第二数据单元的起始位置获取对应的第三参数。

这里,在数据单元的起始位置添加第三参数,如此,能进一步快速地获取第二码率的流媒体数据对应的第三参数。

在一实施例中,所述服务器根据得到的流媒体数据生成不同码率的流媒体数据时,可以将每种码率的流媒体数据的数据单元在时间上对齐;

相应地,所述利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元,具体包括:

从第一码率的流媒体数据中确定第一数据单元对应的时间;

利用确定的时间从第二码率的流媒体数据中得到所述第二数据单元。

每种码率的流媒体数据的数据单元在时间上对齐,这样服务器可以根据第一数据单元快速得到第二数据单元。

实际应用时,在向所述客户端发送第二码率的流媒体数据时,服务器可以采用HTTP Chunk的方式发送基于MPEGTS封装的第二码率的流媒体数据,还可以采用HTTP Chunk的方式发送先基于MPEGTS封装后再基于RTP封装的第二码率的流媒体数据,也可以采用HTTP Chunk的方式发送基于MP4封装的第二码率的流媒体数据,还可以采用HTTP Chunk的方式发送基于FLV的Flag封装的第二码率的流媒体数据,以满足传输需求。

从上面的描述中可以看出,本发明实施例提供的方案,是基于一次流媒体播放请求向客户端传输流媒体数据的方案,是一种基于HTTP的流媒体数据的传输方案。

相应地,本发明实施例还提供了一种流媒体传输方法,应用于客户端,具体来说是位于终端的客户端,包括以下步骤:

向服务器发送流媒体播放请求,并接收所述服务器发送的第一码率的流媒体数据;

在播放第一码率的流媒体数据过程中,接收所述服务器发送的第二码流的流媒体数据;接收的第二码率的流媒体数据是从第二码流的第二数据单元开始的;

利用重置的解码器解码第二码流的流媒体数据,并进行播放。

其中,所述重置的解码器是指:将解码第一码率的流媒体数据的解码器进行重置,以便利用重置的解码器解码第二码流的流媒体数据。

本发明实施例提供的方案,特别适用于直播场景,此时服务器端的数据流是实时注入的,也就是说,向客户端发送的流媒体数据是服务器端实时接收到的流媒体数据。当然,实际应用时,本发明实施例提供的方案也可以适用在点播场景下。

本发明实施例提供的流媒体传输方法,接收客户端发送的流媒体播放请求;响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成;所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据,由服务器端根据所述客户端的第一参数及第二参数来确定进行码率切换,如此,能够根据客户端的网络带宽及解码能力及时地进行码率的切换,减少了端到端的时延。而且,流媒体数据仅划分成了不同的数据单元,如此,不需要服务器端去准备索引和分段文件,减少了流媒体数据在服务器端的缓存时间,进一步减少了端到端的时延。

实施例二

在实施例一的基础上,本实施例详细描述码率切换的过程。

在本实施例中,如图2或3所示,媒体服务器可以生成高清(高码率)、标清(中码率)以及流畅三路码流(低码率),直播时,客户端所在的终端向媒体服务器发送HTTP GET请求;而媒体服务器收到请求后,可以根据终端的网络带宽及系统资源,在这三路码流中选择合适的码率的流媒体数据,通过HTTPGET响应发送给终端。在该过程中,如图2所示,终端向网络服务器实时上报自身的网络带宽,并向状态服务器实时上报自身的系统资源,网络服务器实时将终端的网络带宽发送给媒体服务器,状态服务器实时将终端的系统资源发送给媒体服务器,以便媒体服务器可以实时获取到终端的网络带宽及系统资源。当然,如图3所示,媒体服务器还可以通过仿真终端的网络状态和终端状态,来实时获取到终端的网络带宽及系统资源。

本实施例服务器端和客户端交互的流程,如图4所示,包括以下步骤:

步骤401:媒体服务器利用获取的媒体流数据,分别生成高清、标清和流畅三路码流;

这里,三路码流均由多个数据单元组成。

步骤402:在每路码流的每个数据单元的起始位置增加媒体数据解码信息;

这样在每路码流的每个数据单元处,既可以获知媒体数据解码信息,从而可以快速进行码率切换。

步骤403:启动播放时,客户端获取码流的HTTP URL;

这里,所述客户端接收用户的操作,响应用户的操作从网页中获取码流的HTTP URL。

步骤404:根据码流的HTTP URL,向媒体服务器发送HTTP GET请求,以从媒体服务器获取流媒体数据;

这里,收到HTTP GET请求后,媒体服务器可以实时获取到客户端所在终端的网络带宽及系统资源,可以采用图2或图3所描述的方式获取客户端所在终端的网络带宽及系统资源。

步骤405:媒体服务器收到HTTP GET请求后,先向客户端发送流畅码流,以便客户端能够正常启动:

步骤406:客户端收到流畅码流后,利用相应的解码器解码流畅码流,并进行播放;

步骤407:在播放过程中,媒体服务器根据实时获取的客户端所在的终端的网络带宽及系统资源、自身的流媒体处理能力,来决策是否进行码率切换,当确定要进行码率切换时,向客户端发送媒体数据解码信息;

这里,媒体服务器根据正在发送的数据单元确定另外一档码率对应的数据单元的位置,然后从另外一档码率对应的数据单元得到媒体数据解码信息,并发送给客户端。

假设媒体服务器根据实时获取的客户端所在的终端的网络带宽及系统资源、自身的流媒体处理能力,决定码率可以切换到标清码率,此时,媒体服务器根据正在发送的流畅码流的数据单元确定标清码率的码流对应的数据单元,并从标清码率的码流对应的数据单元得到数据解码信息,并发送给客户端。

步骤408:客户端基于接收的媒体数据解码信息重置解码器;

步骤409:媒体服务器向客户端发送码率切换后对应码率的码流;

步骤410:客户端利用重置的解码器解码相应的码流,并进行播放。

针对上述例子,在步骤408中,客户端基于标清码率对应的媒体数据解码信息重置解码器;在步骤409中,媒体服务器向客户端发送标清码流;在步骤410中,客户端利用重置的解码器解码标清码流,并进行播放。

从上面的描述中可以看出,本发明实施例提供的方案,媒体服务器和客户端采用HTTP进行流式传输,由媒体服务器进行码率切换,避免了使用索引文件和分片文件,从而减少了码流端到端的传输延时。

实施例三

在实施例一、二的基础上,本实施例详细描述媒体服务器和客户端进行交互的过程。该过程包括以下步骤:

步骤A1:媒体服务器生成多种码率的码流;

具体地,在每种码率的码流的数据单元处增加媒体解码信息,且如图5所示,每种码率的码流的数据单元在时间上进行对齐。每一种码率的音视频采用MPEGTS进行封装。假设三种低、中、高码率。

步骤B1:启动播放的过程中,客户端首先获取媒体流的HTTP URL,然后发送HTTP请求,以从媒体服务器上获取码流;

具体地,获取的HTTP URL中包括频道的名称,然后根据HTTP URL发送HTTP GET请求到媒体服务器。

步骤C1:媒体服务器收到请求后,先发送低码率的码流,以便让客户端正常启动;

这里,媒体服务器首先发送HTTP响应头部,然后采用HTTP Chunk的方式发送低码率的PAT、PMT、IDR和TS数据包。

步骤D1:媒体服务器实时获取客户端端的网络带宽及系统资源;

步骤E1:媒体服务器根据客户端端的网络带宽及系统资源发现可以发送较高码率的码流,媒体服务器在数据单元处计算出较高码率对应的数据单元的位置,并获得对应的媒体解码信息,并发送给客户端,以便进行解码器的重置;

步骤F1:随后媒体服务器立即进行码率切换,发送较高码率的码流;

具体地,媒体服务器从计算出的较高码率对应的数据单元的位置开始,向客户端发送新的媒体流的PAT、PMT、IDR和TS数据包。

步骤H1:客户端在接收码流的过程中接收到媒体解码信息,发现码率发生了切换,利用接收的媒体解码信息重置解码器,然后接收较高码率的码流进行播放。

实施例四

在实施例一、二的基础上,本实施例详细描述媒体服务器和客户端进行交互的过程。该过程包括以下步骤:

步骤A2:媒体服务器生成多种码率的码流;

具体地,在每种码率的码流的数据单元处增加媒体解码信息,且如图6所示,每种码率的码流的数据单元在时间上进行对齐。每一种码率的音视频采用MPEGTS进行封装,然后在采用RTP包进行封装。假设三种低、中、高码率。

步骤B2:启动播放的过程中,客户端首先获取媒体流的HTTP URL,然后发送HTTP请求,以从媒体服务器上获取码流;

具体地,获取的HTTP URL中包括频道的名称,然后根据HTTP URL发送HTTP GET请求到媒体服务器。

步骤C2:媒体服务器收到请求后,先发送低码率的码流,以便让客户端正常启动;

这里,媒体服务器首先发送HTTP响应头部,然后采用HTTP Chunk的方式发送低码率的RTP数据包。

步骤D2:媒体服务器实时获取客户端端的网络带宽及系统资源;

步骤E2:媒体服务器根据客户端端的网络带宽及系统资源发现可以发送较高码率的码流,媒体服务器在数据单元处计算出较高码率对应的数据单元的位置,并获得对应的媒体解码信息,并发送给客户端,以便进行解码器的重置;

步骤F2:随后媒体服务器立即进行码率切换,发送较高码率的码流;

具体地,媒体服务器从计算出的较高码率对应的数据单元的位置开始,向客户端发送新的媒体流的RTP数据包。

步骤H2:客户端在接收码流的过程中接收到媒体解码信息,发现码率发生了切换,利用接收的媒体解码信息重置解码器,然后接收较高码率的码流进行播放。

实施例五

在实施例一、二的基础上,本实施例详细描述媒体服务器和客户端进行交互的过程。该过程包括以下步骤:

步骤A3:媒体服务器生成多种码率的码流;

具体地,在每种码率的码流的数据单元处增加媒体解码信息,且如图7所示,每种码率的码流的数据单元在时间上进行对齐。每一种码率的音视频采用MP4进行封装。假设三种低、中、高码率。

步骤B3:启动播放的过程中,客户端首先获取媒体流的HTTP URL,然后发送HTTP请求,以从媒体服务器上获取码流;

具体地,获取的HTTP URL中包括频道的名称,然后根据HTTP URL发送HTTP GET请求到媒体服务器。

步骤C3:媒体服务器收到请求后,先发送低码率的码流,以便让客户端正常启动;

这里,媒体服务器首先发送HTTP响应头部,然后采用HTTP Chunk的方式发送低码率的MP4数据包。

步骤D3:媒体服务器实时获取客户端端的网络带宽及系统资源;

步骤E3:媒体服务器根据客户端端的网络带宽及系统资源发现可以发送较高码率的码流,媒体服务器在数据单元处计算出较高码率对应的数据单元的位置,并获得对应的媒体解码信息,并发送给客户端,以便进行解码器的重置;

步骤F3:随后媒体服务器立即进行码率切换,发送较高码率的码流;

具体地,媒体服务器从计算出的较高码率对应的数据单元的位置开始,向客户端发送新的媒体流的MP4数据包。

步骤H3:客户端在接收码流的过程中接收到媒体解码信息,发现码率发生了切换,利用接收的媒体解码信息重置解码器,然后接收较高码率的码流进行播放。

实施例六

在实施例一、二的基础上,本实施例详细描述媒体服务器和客户端进行交互的过程。该过程包括以下步骤:

步骤A4:媒体服务器生成多种码率的码流;

具体地,在每种码率的码流的数据单元处增加媒体解码信息,且如图8所示,每种码率的码流的数据单元在时间上进行对齐。每一种码率的音视频采用FLV的Flag进行封装。假设三种低、中、高码率。

步骤B4:启动播放的过程中,客户端首先获取媒体流的HTTP URL,然后发送HTTP请求,以从媒体服务器上获取码流;

具体地,获取的HTTP URL中包括频道的名称,然后根据HTTP URL发送HTTP GET请求到媒体服务器。

步骤C4:媒体服务器收到请求后,先发送低码率的码流,以便让客户端正常启动;

这里,媒体服务器首先发送HTTP响应头部,然后采用HTTP Chunk的方式发送低码率的FLVHeader(头)、PreviousTagSize0和Tag数据包。

步骤D4:媒体服务器实时获取客户端端的网络带宽及系统资源;

步骤E4:媒体服务器根据客户端端的网络带宽及系统资源发现可以发送较高码率的码流,媒体服务器在数据单元处计算出较高码率对应的数据单元的位置,并获得对应的媒体解码信息,并发送给客户端,以便进行解码器的重置;

步骤F4:随后媒体服务器立即进行码率切换,发送较高码率的码流;

具体地,媒体服务器从计算出的较高码率对应的数据单元的位置开始,向客户端发送新的媒体流的Tag数据包数据包。

步骤H4:客户端在接收码流的过程中接收到媒体解码信息,发现码率发生了切换,利用接收的媒体解码信息重置解码器,然后接收较高码率的码流进行播放。

需要说明的是:在实施例二至六中,实际应用时,高、中、低码率可以根据需要码率大小来区分。举个例子来说,通常,可以将码率为8M的码流称为高码率的码流,可以将码率为4M的码率称为中码率的码流,可以将码率为2M的码流称为低码率的码流。

实施例七

为实现本发明实施例的方法,本实施例提供一种流媒体传输装置,设置在服务器,具体来说是媒体服务器,如图9所示,该装置包括:

第一接收单元91,用于接收客户端发送的流媒体播放请求;

第一发送单元92,用于响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;

切换单元93,用于在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成;

所述第一发送单元92,还用于所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据。

其中,实际应用时,所述第二参数可以是所述客户端的系统资源,包含:CPU、内存的使用情况等。本发明实施例并不对所述第二参数进行限定,只要是能反映客户端的解码能力的信息即可。

在一实施例中,该装置还可以包括:

获取单元,用于在播放第一码率的流媒体数据过程中获取所述客户端的第一参数及第二参数,以便能够及时作出是否要进行码率切换的决策,降低端到端的时延。

其中,所述获取单元可以通过以下方式之一获取到第一参数及第二参数:

所述客户端向网络侧设备上报自身的第一参数及第二参数,网络侧设备向获取单元上报所述客户端的第一参数及第二参数;

获取单元通过仿真客户端的网络状态,得到第一参数,并通过仿真所述客户单的状态,来得到第二参数。

不同码率的流媒体数据由至少两个数据单元的数据组成。换句话说,不同码率的流媒体数据是由多个数据单元的数据组成的,实际应用时,可以根据时延的具体要求,来确定流媒体数据由多少个数据单元组成。

在一实施例中,所述切换单元93还可以利用所述客户端的第一参数及第二参数,并结合服务器的第四参数,确定进行码率切换;所述第四参数表征所述服务器当前的流媒体处理能力。在码率切换决策过程中,既考虑了客户端的网络带宽和解码能力,又考虑了服务器侧的处理能力,如此,能够进一步降低端到端的时延。

这里,所述第四参数可以是CPU、内存的使用情况等。本发明实施例并不对此作限定,只要是能反映服务器的流媒体处理能力的信息即可。

实际应用时,所述切换单元93利用所述客户端的第一参数及第二参数,来进行码率切换决策,或者利用所述客户端的第一参数及第二参数,并结合服务器的第四参数进行码率切换决策时,可以有很多种决策方式,本发明实施例并不对此进行限定,举个例子来说,当所述切换单元93利用所述客户端的第一参数及第二参数,并结合服务器的第四参数进行码率切换决策时,可以先考虑服务器的CPU使用情况,当CPU空闲超过30%时,再比较第一参数及第二参数,当所述客户端的网络带宽为10M,CPU空闲超过90%,且内存占用低于50%时,决定进行码率切换,即将码率切换为高码率,比如高清等。

实际应用时,该装置还可以包括:

生成单元,用于根据得到的流媒体数据生成不同码率的流媒体数据,且针对每种码率的流媒体数据,在流媒体数据中添加第三参数;所述第三参数表征媒体数据解码信息;

相应地,所述切换单元93,还用于从第二码率的流媒体数据中获取对应的第三参数;

所述第一发送单元92,还用于从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据之前,向所述客户端发送第三参数;发送的第三参数用于指示所述客户端对解码器进行调整。

其中,在流媒体数据中添加第三参数,当服务器确定进行码率切换时,服务器能够快速获知对应码率的流媒体数据的解码信息,并通知给所述客户端,进而能够让所述客户端尽快重置解码器,从而减少播放时延。

这里,所述在流媒体数据中添加第三参数,具体包括:

所述生成单元在每个数据单元中添加第三参数;

相应地,所述切换单元93从所述第二数据单元中获取对应的第三参数。

其中,由于每个数据单元中均添加有第三参数,所以只要切换单元83确定第二数据单元后,即可从第二数据单元中直接获取第三参数,无需再去重新去其它位置获取第三参数,如此,能够快速地获取第二码率的流媒体数据对应的第三参数。

在一实施例中,所述生成单元可以在每个数据单元的起始位置添加第三参数;相应地,所述切换单元93从所述第二数据单元的起始位置获取对应的第三参数。

这里,在数据单元的起始位置添加第三参数,如此,能进一步快速地获取第二码率的流媒体数据对应的第三参数。

实际应用时,所述生成单元根据得到的流媒体数据生成不同码率的流媒体数据时,可以将每种码率的流媒体数据的数据单元在时间上对齐;

相应地,所述切换单元93,具体用于:

从第一码率的流媒体数据中确定第一数据单元对应的时间;

利用确定的时间从第二码率的流媒体数据中得到所述第二数据单元。

每种码率的流媒体数据的数据单元在时间上对齐,这样服务器可以根据第一数据单元快速得到第二数据单元。

实际应用时,在向所述客户端发送第二码率的流媒体数据时,所述第一发送单元92可以采用HTTP Chunk的方式发送基于MPEGTS封装的第二码率的流媒体数据,还可以采用HTTP Chunk的方式发送先基于MPEGTS封装后再基于RTP封装的第二码率的流媒体数据,也可以采用HTTP Chunk的方式发送基于MP4封装的第二码率的流媒体数据,还可以采用HTTP Chunk的方式发送基于FLV的Flag封装的第二码率的流媒体数据,以满足传输需求。

实际应用时,第一接收单元91、第一发送单元92可由流媒体传输装置中的通信芯片实现;切换单元93及生成单元可由流媒体传输装置中的处理器实现,获取单元可由流媒体传输装置中的处理器结合通信芯片实现。

从上面的描述中可以看出,本发明实施例提供的方案,是基于一次流媒体播放请求向客户端传输流媒体数据的方案,是一种基于HTTP的流媒体数据的传输方案。

相应地,为实现本发明实施例的方法,本实施例还提供了一种流媒体传输装置,设置在终端,如图10所示,该装置包括:

第二发送单元101,用于向服务器发送流媒体播放请求;

第二接收单元102,用于接收所述服务器发送的第一码率的流媒体数据;以及在播放第一码率的流媒体数据过程中,接收所述服务器发送的第二码流的流媒体数据;接收的第二码率的流媒体数据是从第二码流的第二数据单元开始的;

播放单元103,用于利用重置的解码器解码第二码流的流媒体数据,并进行播放。

实际应用时,第二发送单元101及第二接收单元102可由流媒体传输装置中的通信芯片实现;播放单元103可由流媒体传输装置中的处理器实现。

本发明实施例提供的方案,特别适用于直播场景,此时服务器端的数据流是实时注入的,也就是说,向客户端发送的流媒体数据是服务器端实时接收到的流媒体数据。当然,实际应用时,本发明实施例提供的方案也可以适用在点播场景下。

本发明实施例提供的流媒体传输装置,第一接收单元91接收客户端发送的流媒体播放请求;第一发送单元92响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;在播放第一码率的流媒体数据过程中,切换单元93利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成;所述第一数据单元发送完成后,第一发送单元92从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据,由服务器端根据所述客户端的第一参数及第二参数来确定进行码率切换,如此,能够根据客户端的网络带宽及解码能力及时地进行码率的切换,减少了端到端的时延。而且,流媒体数据仅划分成了不同的数据单元,如此,不需要服务器端去准备索引和分段文件,减少了流媒体数据在服务器端的缓存时间,进一步减少了端到端的时延。

基于上述装置,本发明实施例还提供了一种服务器,如图11所示,该服务器包括:

第一通信接口111,用于接收客户端发送的流媒体播放请求;响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据;以及所述第一数据单元发送完成后,从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据;

第一处理器112,用于在播放第一码率的流媒体数据过程中,利用所述客户端的第一参数及第二参数,确定进行码率切换时,利用所述第一码率的流媒体数据的第一数据单元确定第二码率的流媒体数据对应的第二数据单元;所述第一参数表征所述客户端当前的网络带宽;所述第二参数表征所述客户端当前的解码能力;第一数据单元为所述客户端当前正在播放的数据单元;不同码率的流媒体数据由至少两个数据单元的数据组成。

在一实施例中,所述第一处理器112,还用于在播放第一码率的流媒体数据过程中通过所述第一通信接口111获取所述客户端的第一参数及第二参数。

在一实施例中,所述第一处理器112还可以利用所述客户端的第一参数及第二参数,并结合服务器的第四参数,确定进行码率切换;所述第四参数表征所述服务器当前的流媒体处理能力。

在一实施例中,所述第一处理器112,还用于响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据之前针对每种码率的流媒体数据,在流媒体数据中添加第三参数;所述第三参数表征媒体数据解码信息;以及从第二码率的流媒体数据中获取对应的第三参数;

相应地,所述第一通信接口111,还用于从所述第二数据单元开始,向所述客户端发送第二码率的流媒体数据之前,向所述客户端发送第三参数;发送的第三参数用于指示所述客户端对解码器进行调整。

所述第一处理器112,还用于响应所述流媒体播放请求,向客户端发送第一码率的流媒体数据之前,生成不同码率的流媒体数据时,将每种码率的流媒体数据的数据单元在时间上对齐;

所述第一处理器112,具体用于:

从第一码率的流媒体数据中确定第一数据单元对应的时间;

利用确定的时间从第二码率的流媒体数据中得到所述第二数据单元。

其中,第一通信接口111及第一处理器112的实现功能可参照前述方法和装置的相关描述而理解,这里不再赘述。

基于上述装置,本发明实施例还提供了一种终端,如图12所示,该终端包括:

第二通信接口121,用于向服务器发送流媒体播放请求,并接收所述服务器发送的第一码率的流媒体数据;以及在播放第一码率的流媒体数据过程中,接收所述服务器发送的第二码流的流媒体数据;接收的第二码率的流媒体数据是从第二码流的第二数据单元开始的;

第二处理器122,用于利用重置的解码器解码第二码流的流媒体数据,并进行播放。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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