一种流媒体实时播放方法及装置与流程

文档序号:16547485发布日期:2019-01-08 20:55阅读:170来源:国知局
一种流媒体实时播放方法及装置与流程

本申请涉及媒体播放技术领域,尤其涉及一种流媒体实时播放方法及装置。



背景技术:

流媒体,又可称为流式媒体,是多媒体的一种。通过流媒体技术,能够在视频传播的过程中进行播放,实现边传边播,极大地方便了用户的工作和生活。

其中,在流媒体播放过程中,通常需要编码器、服务器和客户端共同协作。编码器用于对原始的媒体流进行压缩编码;服务器对压缩编码后的数据进行处理,将其封装成数据包,并将处理后的数据包传输至客户端;客户端在接收到数据包之后,获取数据包对应的数据帧,并由客户端的播放器件播放各个数据帧,实现流媒体的播放。

但是,发明人在本申请的研究过程中发现,在流媒体播放的过程中,受到网络抖动等因素的影响,往往会导致播放器件获取到的数据帧的数量不稳定,进一步影响流媒体播放的稳定性。例如,若出现网络抖动,通常导致客户端无法及时接收到数据包,也就是说,在播放完客户端已获取的数据帧之后,客户端往往还未获取到新的数据帧,播放器件获取到的数据帧变为零,从而导致播放画面出现卡顿。



技术实现要素:

本申请实施例公开一种流媒体实时播放方法及装置,以解决通过现有技术播放流媒体时,受到网络抖动等因素的影响,所导致的流媒体在播放过程中出现不稳定的问题。

在第一方面,本申请实施例公开一种流媒体实时播放方法,包括:

在接收流媒体的数据包之后,通过对所述数据包进行解析,获取各个数据帧,并将所述数据帧缓存至缓冲区;

获取所述缓冲区内的数据帧的数量,并计算缓存至所述缓冲区的数据帧的平均缓存帧间隔;

将所述缓冲区内的数据帧的数量与预设的缓存帧阈值相比较,并根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔;

根据所述实际提取帧间隔,从所述缓冲区中提取数据帧,并将提取的数据帧传输至播放器件,以便所述播放器件播放所述提取的数据帧。

可选的,所述根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔,包括:

若所述数据帧的数量大于所述缓存帧阈值,确定所述实际提取帧间隔小于所述平均缓存帧间隔;

若所述数据帧的数量小于所述缓存帧阈值,确定所述实际提取帧间隔大于所述平均缓存帧间隔;

若所述数据帧的数量等于所述缓存帧阈值,确定所述实际提取帧间隔等于所述平均缓存帧间隔。

可选的,所述根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔,包括:

根据以下公式计算本次的偏差系数:

s=s0+n;

其中,s表示本次的偏差系数;若首次确定所述实际提取帧间隔,s0为零,若并非首次确定所述实际提取帧间隔,s0表示上一次计算得到的偏差系数;n表示预设的间隔调整幅度,若所述缓冲区内的数据帧的数量大于所述缓存帧阈值,n为大于0的数值,若所述缓冲区内的数据帧的数量小于所述缓存帧阈值,n为小于0的数值,若所述缓冲区内的数据帧的数量等于所述缓存帧阈值,n为0;

根据以下公式计算所述实际提取帧间隔:

t=t0+s;

其中,t表示所述实际提取帧间隔;t0表示所述平均缓存帧间隔。

可选的,所述计算缓存至所述缓冲区的数据帧的平均缓存帧间隔,包括:

获取所述缓冲区内的数据帧的缓存时间;

计算所述缓冲区内的数据帧的数量与所述缓存时间的比值,所述比值为所述缓冲区的数据帧的平均缓存帧间隔。

可选的,所述数据帧包括:i帧、p帧和/或b帧。

在第二方面,本申请实施例公开一种流媒体实时播放装置,包括:

数据帧获取模块,用于在接收流媒体的数据包之后,通过对所述数据包进行解析,获取各个数据帧,并将所述数据帧缓存至缓冲区;

缓存帧间隔计算模块,用于获取所述缓冲区内的数据帧的数量,并计算缓存至所述缓冲区的数据帧的平均缓存帧间隔;

实际提取帧间隔确定模块,用于将所述缓冲区内的数据帧的数量与预设的缓存帧阈值相比较,并根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔;

数据帧传输模块,用于根据所述实际提取帧间隔,从所述缓冲区中提取数据帧,并将提取的数据帧传输至播放器件,以便所述播放器件播放所述提取的数据帧。

可选的,所述实际提取帧间隔确定模块具体用于,若所述数据帧的数量大于所述缓存帧阈值,确定所述实际提取帧间隔小于所述平均缓存帧间隔,若所述数据帧的数量小于所述缓存帧阈值,确定所述实际提取帧间隔大于所述平均缓存帧间隔,若所述数据帧的数量等于所述缓存帧阈值,确定所述实际提取帧间隔等于所述平均缓存帧间隔。

可选的,所述实际提取帧间隔确定模块包括:

第一偏差系数计算单元,用于根据以下公式计算本次的偏差系数:

s=s0+n;

其中,s表示本次的偏差系数;若首次确定所述实际提取帧间隔,s0为零,若并非首次确定所述实际提取帧间隔,s0表示上一次计算得到的偏差系数;n表示预设的间隔调整幅度,若所述缓冲区内的数据帧的数量大于所述缓存帧阈值,n为大于0的数值,若所述缓冲区内的数据帧的数量小于所述缓存帧阈值,n为小于0的数值,若所述缓冲区内的数据帧的数量等于所述缓存帧阈值,n为0;

第一实际提取帧间隔计算单元,用于根据以下公式计算所述实际提取帧间隔:

t=t0+s;

其中,t表示所述实际提取帧间隔;t0表示所述平均缓存帧间隔。

可选的,所述缓存帧间隔计算模块包括:

缓存时间获取单元,用于获取所述缓冲区内的数据帧的缓存时间;

缓存帧间隔计算单元,用于计算所述缓冲区内的数据帧的数量与所述缓存时间的比值,所述比值为所述缓冲区的数据帧的平均缓存帧间隔。

可选的,所述通过对所述数据包进行解析,获取各个数据帧,包括:

所述数据帧包括:i帧、p帧和/或b帧。

本申请实施例公开一种流媒体实时播放方法及装置,该方法中,在实时接收流媒体的数据包之后,通过对所述数据包进行解析,获取各个数据帧,并将所述数据帧缓存至缓冲区;获取所述缓冲区内的数据帧的数量,并计算缓存至所述缓冲区的各个数据帧的平均缓存帧间隔;将所述缓冲区内的数据帧的数量与预设的缓存帧阈值相比较,并根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔;根据所述实际提取帧间隔,从所述缓冲区中提取数据帧,并将提取的数据帧传输至播放器件,以便所述播放器件播放所述提取的数据帧。

通过本申请实施例公开的方案,能够在进行流媒体播放的客户端中缓存数据帧,并能够根据缓存的数据帧的数量调整向播放器件传输数据帧的速度,从而使播放器件获取到数据帧的数量在较为稳定的范围内,解决现有流媒体播放技术中,客户端获取到的数据帧不稳定的问题,从而提高了流媒体播放的稳定性,实现了流媒体的平滑播放。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种流媒体实时播放方法的工作流程示意图;

图2为本申请实施例提供的一种流媒体实时播放方法中缓冲区的缓存示意图;

图3(a)为现有技术提供的流媒体实时播放方法中,发生网络抖动时,数据帧与时间轴的关系示意图;

图3(b)为本申请实施例提供的一种流媒体实时播放方法中,发生网络抖动时,数据帧与时间轴的关系示意图;

图4为本申请实施例提供的一种流媒体实时播放方法的结构示意图。

具体实施方式

为了解决通过现有技术播放流媒体时,受到网络抖动等因素的影响,所导致的流媒体在播放过程中不稳定的问题,本申请实施例公开一种流媒体实时播放方法及装置。

在本申请实施例中,公开一种流媒体实时播放方法,该方法通常应用于能够进行流媒体播放的客户端。参见图1所示的工作流程示意图,本申请实施例公开的所述流媒体实时播放方法包括以下步骤:

步骤s11、在接收流媒体的数据包之后,通过对所述数据包进行解析,获取各个数据帧,并将所述数据帧缓存至缓冲区。

在客户端中,设置有缓冲区。上述步骤中,客户端在接收到流媒体的数据包之后,就对数据包进行解析,从而获取各个数据帧。其中,通过解析,通常可将该媒体流解析为i帧、p帧和b帧三种数据帧的类型。

步骤s12、获取所述缓冲区内的数据帧的数量,并计算缓存至所述缓冲区的数据帧的平均缓存帧间隔。

其中,缓存帧间隔指的是缓冲区中相邻两个数据帧之间的缓存时间的间隔,而平均缓存帧间隔指的是缓冲区中每相邻两个数据帧之间的缓存时间的间隔的平均值。

步骤s13、将所述缓冲区内的数据帧的数量与预设的缓存帧阈值相比较,并根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔。

缓存帧阈值的具体数值可根据客户端的性能,以及客户端获取数据帧的不稳定性的严重程度等因素确定,并且,通常还可通过对客户端的操控,调整所述缓存帧阈值的具体数值。其中,在某一可行的实施方式中,参见图2所示的缓冲区的缓存示意图,该示意图中,将缓存帧阈值设置为3,而缓冲区中实际缓存的数据帧的数量为2,即缓存的数据帧的数量小于缓存帧阈值。当然,也可将其设置为其他数值,本申请实施例对此不做限定。

步骤s14、根据所述实际提取帧间隔,从所述缓冲区中提取数据帧,并将提取的数据帧传输至播放器件,以便所述播放器件播放所述提取的数据帧。

在客户端中,设置有播放器件,该播放器件能够播放获取到的数据帧,实现流媒体的播放。其中,该播放器件可包括解码模块和播放模块,解码模块能够对接收到的数据帧进行解码,而播放模块用于根据解码后的数据帧,进行音视频的播放。该步骤中,在确定实际提取帧间隔之后,按照实际提取帧间隔从缓冲区中提取数据帧,从而能够将数据帧传输至播放器件,使播放器件进行流媒体的播放。

在本申请实施例中,预先设定缓存帧阈值。该步骤中,能够根据缓冲区内的数据帧的数量与预设的缓存帧阈值的比较结果以及平均缓存帧间隔,确定实际提取帧间隔,以便在后续步骤中,根据实际提取帧间隔从缓冲区中提取数据帧,再将提取的数据帧传输至播放器件进行播放。也就是说,通过本申请实施例公开的方案,能够通过缓冲区缓存数据帧,并能够根据缓存的数据帧的数量调整向播放器件传输数据帧的速度,以使播放器件获取到数据帧保持在较为稳定的范围。

本申请实施例公开一种流媒体实时播放方法,该方法中,在接收流媒体的数据包之后,通过对所述数据包进行解析,获取各个数据帧,并将所述数据帧缓存至缓冲区;获取所述缓冲区内的数据帧的数量,并计算缓存至所述缓冲区的数据帧的平均缓存帧间隔;将所述缓冲区内的数据帧的数量与预设的缓存帧阈值相比较,并根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔;根据所述实际提取帧间隔,从所述缓冲区中提取数据帧,并将提取的数据帧传输至播放器件,以便所述播放器件播放所述提取的数据帧。

通过本申请实施例公开的方案,能够在进行流媒体播放的客户端中缓存数据帧,并能够根据缓存的数据帧的数量调整向播放器件传输数据帧的速度,从而使播放器件获取到数据帧的数量在较为稳定的范围内,解决现有流媒体播放技术中,客户端获取到的数据帧不稳定的问题,从而提高了流媒体播放的稳定性,实现了流媒体的平滑播放。

另外,在本申请实施例所公开的流媒体实时播放方法中,所述根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔,包括:

若所述数据帧的数量大于所述缓存帧阈值,确定所述实际提取帧间隔小于所述平均缓存帧间隔;

若所述数据帧的数量小于所述缓存帧阈值,确定所述实际提取帧间隔大于所述平均缓存帧间隔;

若所述数据帧的数量等于所述缓存帧阈值,确定所述实际提取帧间隔等于所述平均缓存帧间隔。

其中,若缓冲区内的数据帧的数量大于该缓存帧阈值,则表明缓冲区中缓存的数据帧较多,这种情况下,确定所述实际提取帧间隔小于所述平均缓存帧间隔,从而能够加快从缓冲区中提取数据帧的速度,以加快缓冲区内的数据帧的消耗,避免缓冲区中缓存较多数据帧。若缓冲区内的数据帧的数量小于该缓存帧阈值,则表明缓冲区中缓存的数据较少,这种情况下,确定所述实际提取帧间隔大于所述平均缓存帧间隔,从而减缓从缓冲区中提取数据帧的速度,以减慢缓冲区内的数据帧的消耗,避免缓冲区中缓存的数据帧数量过少。因此,能够使播放器件获取到数据帧的数量在较为稳定的范围内。

在网络抖动过程中,服务器和客户端之间的网络连接中断,服务器无法向客户端进行数据传输。而通过现有技术进行流媒体播放时,客户端通常不执行缓存操作,或者,在客户端缓存固定容量的数据包。

其中,若客户端不执行缓存操作,则由于无法获取到新的数据包,流媒体播放过程会出现卡顿。

另外,若客户端缓存固定容量的数据包,由于数据帧包含多种类型,不同类型的数据帧的大小不同,因此,每次在对缓存的数据包进行解析之后,获取到的数据帧的数量并不稳定,若获取到的数据帧的数量较少,则会在流媒体播放过程中出现卡顿。进一步的,若获取到的数据帧的数量较多,则表明在流媒体播放的过程中,缓存的数据帧较多,这将导致客户端在流媒体的播放过程中出现较明显的延时现象,流媒体播放的实时性较差。例如,若客户端播放视频帧率为25帧/秒,即相邻的数据帧之间的间隔为40毫秒,这种情况下,若缓存的数据帧的数量较多,如缓存20帧数据帧,则播放延时为800毫秒,严重影响流媒体播放的实时性。

而通过本申请实施例公开的方案,在缓冲区中缓存数据帧,并且能够根据缓存的数据帧的数量调整向播放器件传输数据帧的速度。这种情况下,当发生网络抖动时,缓冲区内缓存的数据帧的数量将逐步减少,若减少到小于缓存帧阈值,确定实际提取帧间隔大于平均缓存帧间隔,从而减缓向播放器件传输数据帧的速度,避免出现卡顿,提高了流媒体播放过程中的稳定性。

进一步的,在本申请实施例公开的方案中,若缓存的数据帧的数量大于缓存帧阈值,则确定实际提取帧间隔小于平均缓存帧间隔,从而提高向播放器件传输数据帧的速度,避免缓存较多的数据帧。因此,与现有技术相比,本申请的方案还能够提高流媒体播放的实时性。

为了比较本申请相对于现有技术的优势,公开了图3(a)和图3(b)。其中,图3(a)表示通过现有技术进行流媒体播放的情况下,发生网络抖动时,数据帧与时间轴的关系示意图。在该图中,各个数据帧依次被传输至播放器件。在0毫秒至200毫秒的时间段内,未发生网络抖动,流媒体平滑播放,并且每隔40毫秒播放一帧数据帧。而在200毫秒至320毫秒的时间段内,发生网络抖动,客户端不能获取到数据帧,从而在该时间段内出现卡顿。

另外,图3(b)表示通过本申请实施例的方案进行流媒体播放的情况下,发生网络抖动时,数据帧与时间轴的关系示意图。在该图中,各个数据帧依次被传输至播放器件,在0毫秒至200毫秒的时间段内,未发生网络抖动,流媒体平滑播放,并且每隔40毫秒播放一帧数据帧。而在200毫秒至320毫秒的时间段内,发生网络抖动,这种情况下,将缓冲区中提取到的数据帧传输至播放器件,能够使播放器件在网络抖动过程中继续进行流媒体的播放,避免出现卡顿。并且,这种情况下,缓冲区内的数据帧的数量会小于缓存帧阈值,则实际提取帧间隔变大,网络抖动过程中,相邻数据帧之间的间隔相对于未发生网络抖动的情况下略有变大。其中,在图3(b)中,f6和f7即为缓冲区中缓存的数据帧,另外,m1和m2即为实际提取帧间隔的增加值。其中,若每次缓冲区内的数据帧的数量小于缓存帧阈值时,将实际提取帧间隔增大5毫秒,则m1为5毫秒,m2为10毫秒。

进一步的,为了明确本申请的优势,以下以一个具体的示例进行说明。该示例中,设定未发生网络抖动之前,客户端播放视频帧率为25帧/秒,即相邻的数据帧之间的间隔为40毫秒,并设定缓存播放阈值为3,则缓冲区内通常缓存3个数据帧。在发生网络抖动之后,缓冲区内的3个数据帧依次被提取并推送至播放器件,并且这3个数据帧中,每相邻两个数据帧之间的实际提取帧间隔略大于40毫秒,从而缓冲120毫秒以上的时间,能够在网络抖动时间为160毫秒左右的情况下,使流媒体平滑播放,不会出现卡顿。

另外,除了网络抖动会导致流媒体播放过程中出现卡顿以外,若服务器向客户端提供了错误的数据帧率,也会导致流媒体播放不稳定。在流媒体的播放过程中,服务器除了向客户端传输数据包以外,还会向客户端传输数据帧率,该数据帧率用于表征服务器向客户端传输的数据帧的帧率。现有技术中,客户端通常会根据接收到的数据帧率,确定播放视频帧率。例如,若服务器向客户端传输的数据帧率为25帧/秒,则客户端播放视频帧率通常也为25帧/秒。但是,服务器实际的传输帧率可能会发生变化,导致服务器向客户端提供了错误的数据帧率。其中,若服务器向客户端传输的数据帧率小于实际的传输帧率,例如,若服务器向客户端传输的数据帧率为25帧/秒,而实际的传输帧率为27帧/秒,则客户端会获取到较多的数据帧,若客户端在接收到数据帧后,将其直接传输至播放器件,则导致播放器件获取的数据帧的数量大于播放所需的数据帧的数量,导致流媒体播放过程中出现花屏。若客户端缓存该数据帧,则随着客户端中缓存的数据帧的数量越来越多,可能引发缓存溢出,导致播放画面卡死。若服务器向客户端传输的数据帧率小于实际的传输帧率,例如,若服务器向客户端传输的数据帧率为25帧/秒,而实际的传输帧率为23帧/秒,则导致播放器件无法获取足够的数据帧,从而导致播放画面出现卡顿。

而通过本申请实施例公开的方案,在缓冲区中缓存数据帧,并且能够根据缓存的数据帧的数量调整向播放器件传输数据帧的速度。这种情况下,若服务器向客户端传输的数据帧率小于实际的传输帧率,缓冲区内缓存的数据帧的数量增加,则会将实际提取帧间隔调整为小于平均缓存帧间隔,从而加快向播放器件传输数据帧的速度;若服务器向客户端传输的数据帧率大于实际的传输帧率,缓冲区内缓存的数据帧的数量减少,则会将实际提取帧间隔调整为大于平均缓存帧间隔,从而减缓向播放器件传输数据帧的速度。通过该方式,使播放器件获取到数据帧的数量在较为稳定的范围内,能够提高流媒体播放过程中的稳定性。

进一步的,在流媒体播放过程中,可能会发生帧率突变,即客户端接收到的服务器传输的数据包的帧率发生突变。现有技术中,通常通过切换服务器的数据源操作,应对帧率突变的问题,即切换至与原数据包的帧率相同的数据源。但是,该操作会耗费一定时间,导致操作过程中出现流媒体的卡顿。

而通过本申请实施例公开的方案,在切换数据源的操作过程中,可通过缓冲区内的数据帧进行流媒体的播放,并增大实际提取帧间隔,以减缓从缓冲区中提取数据帧的速度,从而避免出现卡顿。

本申请实施例公开的流媒体实时播放方法,能够将缓冲区内的数据帧的数量与预设的缓存帧阈值相比较,并根据比较结果以及实时平均缓存帧间隔,确定实际提取帧间隔。其中,所述根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔,包括以下步骤:

首先,根据以下公式计算本次的偏差系数:

s=s0+n。

上述公式中,s表示本次的偏差系数;若首次确定所述实际提取帧间隔,s0为零,若并非首次确定所述实际提取帧间隔,s0表示上一次计算得到的偏差系数;n表示预设的间隔调整幅度,若所述缓冲区内的数据帧的数量大于所述缓存帧阈值,n为大于0的数值,若所述缓冲区内的数据帧的数量小于所述缓存帧阈值,n为小于0的数值,若所述缓冲区内的数据帧的数量等于所述缓存帧阈值,n为0。

其中,n的数值根据缓冲区内的数据帧的数量与缓存帧阈值的比较结果确定。在一种可行的实现方式中,若缓冲区内的数据帧的数量不等于缓存帧阈值,则n的绝对值可设定为5毫秒,这种情况下,若缓冲区内的数据帧的数量大于缓存帧阈值,n可设定为-5毫秒,减少了实际提取帧间隔,加快了向播放器件传输数据帧的速度,以减少缓冲区内缓存的数据帧的数量;若缓冲区内的数据帧的数量小于缓存帧阈值,n可设定为5毫秒,增大了实际提取帧间隔,减缓了向播放器件传输数据帧的速度,以增加缓冲区内缓存的数据帧的数量。当然,还可以将n设定为其他数值,本申请对此不做限定。

然后,根据以下公式计算所述实际提取帧间隔:

t=t0+s;

其中,t表示所述实际提取帧间隔;t0表示所述平均缓存帧间隔。

也就是说,实际提取帧间隔为平均缓存帧间隔与偏差系数的和,通过该偏差系数,能够实现对实际提取帧间隔的调整。

根据上述公式可知,若首次确定实际提取帧间隔,则根据预设的间隔调整幅度确定本次的偏差系数,若并非首次确定实际提取帧间隔,则可结合上一次计算得到的偏差系数以及预设的间隔调整幅度,计算得到本次的偏差系数。

进一步的,在本申请实施例中,所述计算缓存至所述缓冲区的数据帧的平均缓存帧间隔,包括以下操作:

首先,获取所述缓冲区内的数据帧的缓存时间;

然后,计算所述缓冲区内的数据帧的数量与所述缓存时间的比值,所述比值为所述缓冲区的数据帧的平均缓存帧间隔。

通过上述步骤,能够根据客户端实际接收到的数据帧以及所用时间,计算得到平均缓存帧间隔,而并非通过服务器传输的数据帧率计算,从而提高计算平均缓存帧间隔的准确度。

进一步的,在本申请实施例中,所述数据帧包括:i帧、p帧和/或b帧。也就是说,在本申请实施例中,客户端能够将接收到的数据包解析为i帧、p帧和/或b帧等类型。

其中,i帧又称为关键帧或帧内编码帧,是一种自带全部信息的独立帧,无需参考其他图像便可独立进行解码,并可单独解码出一幅完整的画面。在视频序列中,通常第一个帧都是i帧。

b帧又称双向预测编码帧,也就是b帧记录的是本帧与前后帧的差别,在解码过程中需要参考前面和后面的帧,也就是说要解码b帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。b帧压缩率高,并且对解码性能要求较高。

p帧又称帧间预测编码帧,需要参考前面的i帧才能进行编码,也就是说,p帧解码需要依赖于前面的帧。p帧表示的是当前帧画面与前一帧(前一帧可能是i帧也可能是p帧)的差别。在对p帧解码时,需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。与i帧相比,p帧通常占用更少的数据位。

相应的,本申请实施例公开一种流媒体实时播放装置。参见图4所示的结构示意图,所述流媒体实时播放装置包括:数据帧获取模块100、缓存帧间隔计算模块200、实际提取帧间隔确定模块300和数据帧传输模块400。

其中,所述数据帧获取模块100,用于在接收流媒体的数据包之后,通过对所述数据包进行解析,获取各个数据帧,并将所述数据帧缓存至缓冲区。

所述缓存帧间隔计算模块200,用于获取所述缓冲区内的数据帧的数量,并计算缓存至所述缓冲区的数据帧的平均缓存帧间隔。

其中,缓存帧间隔指的是缓冲区中相邻两个数据帧之间的缓存时间的间隔,而平均缓存帧间隔指的是缓冲区中每相邻两个数据帧之间的缓存时间的间隔的平均值。

所述实际提取帧间隔确定模块300,用于将所述缓冲区内的数据帧的数量与预设的缓存帧阈值相比较,并根据比较结果以及所述平均缓存帧间隔,确定实际提取帧间隔。

缓存帧阈值的具体数值可根据客户端的性能,以及客户端获取数据帧的不稳定性的严重程度等因素确定,并且,通常还可通过对客户端的操控,调整所述缓存帧阈值的具体数值。

所述数据帧传输模块400,用于根据所述实际提取帧间隔,从所述缓冲区中提取数据帧,并将提取的数据帧传输至播放器件,以便所述播放器件播放所述提取的数据帧。

在客户端中,设置有播放器件,该播放器件可包括解码模块和播放模块,其中,解码模块能够对接收到的数据帧进行解码,而播放模块用于根据解码后的数据帧,进行音视频的播放。

通过本申请实施例公开的方案,能够在进行流媒体播放的客户端中缓存数据帧,并能够根据缓存的数据帧的数量调整向播放器件传输数据帧的速度,从而使播放器件获取到数据帧的数量在较为稳定的范围内,解决现有流媒体播放技术中,客户端获取到的数据帧不稳定的问题,提高了流媒体播放的稳定性,实现了流媒体的平滑播放。

其中,所述实际提取帧间隔确定模块具体用于,若所述数据帧的数量大于所述缓存帧阈值,确定所述实际提取帧间隔小于所述平均缓存帧间隔,若所述数据帧的数量小于所述缓存帧阈值,确定所述实际提取帧间隔大于所述平均缓存帧间隔,若所述数据帧的数量等于所述缓存帧阈值,确定所述实际提取帧间隔等于所述平均缓存帧间隔。

进一步的,在本申请实施例所述的流媒体实时播放装置中,所述实际提取帧间隔确定模块包括:

第一偏差系数计算单元,用于根据以下公式计算本次的偏差系数:

s=s0+n;

其中,s表示本次的偏差系数;若首次确定所述实际提取帧间隔,s0为零,若并非首次确定所述实际提取帧间隔,s0表示上一次计算得到的偏差系数;n表示预设的间隔调整幅度,若所述缓冲区内的数据帧的数量大于所述缓存帧阈值,n为大于0的数值,若所述缓冲区内的数据帧的数量小于所述缓存帧阈值,n为小于0的数值,若所述缓冲区内的数据帧的数量等于所述缓存帧阈值,n为0;

第一实际提取帧间隔计算单元,用于根据以下公式计算所述实际提取帧间隔:

t=t0+s;

其中,t表示所述实际提取帧间隔;t0表示所述平均缓存帧间隔。

其中,n的数值根据缓冲区内的数据帧的数量与缓存帧阈值的比较结果确定。在一种可行的实现方式中,若缓冲区内的数据帧的数量不等于缓存帧阈值,则n的绝对值可设定为5毫秒,这种情况下,若缓冲区内的数据帧的数量大于缓存帧阈值,n可设定为-5毫秒,减少了实际提取帧间隔,加快了向播放器件传输数据帧的速度,以减少缓冲区内缓存的数据帧的数量;若缓冲区内的数据帧的数量小于缓存帧阈值,n可设定为5毫秒,增大了实际提取帧间隔,减缓了向播放器件传输数据帧的速度,以增加缓冲区内缓存的数据帧的数量。当然,还可以将n设定为其他数值,本申请对此不做限定。

进一步的,在本申请实施例所述的流媒体实时播放装置中,所述缓存帧间隔计算模块包括:

缓存时间获取单元,用于获取所述缓冲区内的数据帧的缓存时间;

缓存帧间隔计算单元,用于计算所述缓冲区内的数据帧的数量与所述缓存时间的比值,所述比值为所述缓冲区的数据帧的平均缓存帧间隔。

通过上述单元,能够根据客户端实际接收到的数据帧以及所用时间,计算得到平均缓存帧间隔,而并非通过服务器传输的数据帧率计算,从而提高计算平均缓存帧间隔的准确度。

进一步的,在本申请实施例中,所述数据帧包括:i帧、p帧和/或b帧。

具体实现中,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本申请提供的建立本地网络连接的方法的各实施例中的部分或全部步骤。所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,简称rom)或随机存储记忆体(randomaccessmemory,简称ram)等。

此外,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得所述计算机执行上述实施例所述的建立本地网络连接的方法的部分或全部步骤。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘)等。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于上述实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

以上所述的本发明实施方式并不构成对本发明保护范围的限定。

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