流媒体播放方法和装置与流程

文档序号:27623228发布日期:2021-11-29 14:46阅读:176来源:国知局
流媒体播放方法和装置与流程

1.本发明涉及移动通信技术,特别是涉及一种流媒体播放方法和装置。


背景技术:

2.随着近几年网络技术的发展,流媒体的使用已经遍布人们工作、生活的方方面面的,例如电视、手机、笔记本等各种终端中都要使用流媒体进行视频的播放。相应的,随着流媒体播放的广泛应用,人们对视频播放质量的要求,包括清晰度、流畅性、实时性等方面要求,也越来越高。
3.目前,为了满足视频播放的高质量要求,4k及8k这些高分辨率的流媒体逐渐普及。发明人在实现本发明的过程中发现,采用现有的流媒体播放方法播放4k及8k等高分辨率流媒体时,往往无法满足视频播放的高质量要求。


技术实现要素:

4.有鉴于此,本发明的主要目的在于提供一种流媒体播放方法和装置,可以提高播放质量。
5.为了达到上述目的,本发明提出的技术方案为:
6.一种流媒体播放方法,包括:
7.在流媒体播放过程中,对于当前待下载的片段,确定下载粒度,根据所述下载粒度,请求下载所述片段;
8.基于接收到的流媒体数据,进行所述流媒体的播放。
9.一种流媒体播放装置,包括:
10.下载模块,用于在流媒体播放过程中,对于当前待下载的片段,确定下载粒度,根据所述下载粒度,请求下载所述片段;
11.播放模块,用于基于接收到的流媒体数据,进行所述流媒体的播放。
12.一种流媒体播放的电子设备,包括处理器和存储器;
13.所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如上所述的流媒体播放方法。
14.一种计算机可读存储介质,其中存储有计算机可读指令,该计算机可读指令用于执行如上所述的流媒体播放方法。
15.综上所述,本发明实施例提出的流媒体播放方案,在下载流媒体片段时,需要先为该片段确定下载粒度,按照该下载粒度,请求下载流媒体片段,以细化每次向服务器请求下载数据的粒度。如此,可以减小单次请求下载数据的传输时长,增强音视频数据下载的同步性,进而可以提高基于所下载数据进行流媒体播放的流畅性和实时性。因此,在高清晰度流媒体播放场景下,应用本技术提出的流媒体播放方案,可以有效提高流媒体播放质量。
附图说明
16.图1为本发明实施例的流媒体播放方法流程示意图;
17.图2为本发明实施例的码率切换控制方法流程示意图;
18.图3为本发明实施例的实时带宽监测方法一流程示意图;
19.图4为本发明实施例的实时带宽监测方法二流程示意图;
20.图5为图4中步骤r1的一种实施方式流程示意图;
21.图6为图4中步骤r2的一种实施方式流程示意图;
22.图7~图9示出不同直播流码率和网络带宽条件下,本发明实施例的实时带宽监测方法二与现有技术的带宽测量结果对比;
23.图10为本发明实施例的装置结构示意图;
24.图11为本发明实施例的片段切分请求下载与现有方案的整个片段请求下载的效果对比示意图。
具体实施方式
25.为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
26.针对现有流媒体播放方案播放高清晰度视频时无法保障播放质量的问题,发明人通过研究分析发现,其主要原因如下:
27.现有的流媒体播放方案在下载流媒体文件数据时,是由客户端播放器根据索引文件的描述,查找到每个片段的片段文件所在的地址,根据该地址向服务器端申请整段地下载该片段。这样,单个下载单元对应的是整个片段的数据。而对于高分辨率视频而言,其单个片段的数据量会比较大,从而使得单个片段的下载时长变长,进而需要同步播放的两个音、视频片段的下载总时长也会变长。而在流媒体播放时,需要将时间相匹配的视频片段和音频片段全部下载完成后,才能进行同步播放,这样,当一个音频或视频片段下载完成后,还需要等待时间匹配的另一视频或音频片段的下载完成。因此,当单个片段的下载时长变长时,上述等待相应同步片段的时长也会变长,如此,一方面需要较多的缓存空间来存放已下载但无法同步播放的数据,另一方面也会由于上述同步等待时间过长,使得接收到的视频片段或音频片段不能得到及时播放,从而出现音视频下载的同步性变差,进而影响播放的流畅性和实时性。
28.基于上述分析,本发明实施例中将通过对数据下载环节进行优化,以克服整体下载流媒体片段对流媒体播放质量的影响,进而可以提高流媒体播放质量。
29.图1为本发明实施例的流媒体播放方法流程示意图,如图1所示,该实施例实现的流媒体播放方法,主要包括下述步骤:
30.步骤101、在流媒体播放过程中,对于当前待下载的片段,确定下载粒度,根据所述下载粒度,请求下载所述片段。
31.本步骤中,在流媒体播放过程中,在下载每个片段时,需要基于一定的下载粒度,对片段进行下载,实现了片段的切分下载,如此,可以使得每次请求下载的不再是整个片段,而是片段中的部分数据。图11给出了本发明实施例的片段切分请求下载与现有方案的整个片段请求下载的对比示意图,如图11所示,本发明实施例的下载粒度更小,如此,可以
大幅度减小单次请求下载数据的传输时长,进而缩小了音、视数据下载的同步等待时间,使得下载的音视频数据可以得到及时解码播放,有效增强了音视频数据下载的同步性,并且可以使得缓存中的数据及时得到播放,减少了缓存空间需求。因此,可以提高基于所下载数据进行流媒体播放的流畅性和实时性,尤其是可以有效减小直播启动延迟。
32.对于上述片段,可以采用现有流媒体文件的片段划分方法得到,在此不再赘述。
33.在一种实施方式中,考虑到片段中会包含不同结构类型的数据,为了满足不同结构类型数据的处理需求,以增强对片段进行切分下载的合理性,步骤101中可以区分片段文件中不同结构类型的数据,设置多种下载粒度。
34.较佳地,所述下载粒度可以包括:第一下载粒度和第二下载粒度。
35.其中,所述第一下载粒度用于下载片段的片段描述数据,所述第二下载粒度用于下载片段的内容数据帧。
36.这里,片段描述数据即片段的描写叙述信息,内容数据帧即片段中需要解码播放的媒体数据。考虑到对于片段描述数据,基本数据单位是比特,而对于实际的媒体数据而言,是以数据帧为基本处理对象,因此,为了保障下载粒度的合理性,分别为片段描述数据和内容数据帧单独配置下载粒度。
37.在实际应用中,可以按照预设的粒度值或者结合当前的带宽,确定第一下载粒度,具体如下:
38.方法一:将所述第一下载粒度,设置为预设的片段描述数据下载粒度值。
39.这里,当片段描述数据下载粒度值过大时,会导致单次请求下载数据量过多,无法有效地发挥对片段切分下载的优势,反之,当片段描述数据下载粒度值过小时,会导致单次请求下载数据量过少,进而导致下载请求开销过多,具体地,可由用户或本领域技术人员基于上述规律,根据经验或实际下载需求设置合适的片段描述数据下载粒度值。
40.考虑到片段描述数据的结构特点,较佳地,为了便于对片段描述数据进行切分下载,片段描述数据下载粒度值的单位为byte。例如,可以设置为500byte,但不限于此。
41.方法二:根据当前带宽和预设的第一粒度时长,计算得到所述第一下载粒度。
42.具体地,可以计算当前带宽和第一粒度时长的乘积,得到第一下载粒度。
43.这里,通过基于当前的下载带宽和预设的粒度时长,来计算第一下载粒度,如此,每次请求下载的数据的下载时长将与第一粒度时长相同或接近,从而可以利用第一粒度时长,使得单次请求下载的数据下载时长具有可控性,进而可以保障片段下载和处理的流畅性,有效发挥对片段描述数据进行细粒度切分下载的优势。
44.当第一粒度时长过大时,会导致单次请求下载数据量过多,无法有效地发挥对片段切分下载的优势,反之,当第一粒度时长过小时,会导致单次请求下载数据量过少,进而导致下载请求开销过多。具体的,所述第一粒度时长可由用户或本领域技术人员根据实际应用场景的网络情况和播放需要,结合上述规律,设置合适取值。
45.在实际应用中,可以按照预设的粒度值或者结合当前的带宽,确定第二下载粒度,具体如下:
46.方法一、将所述第二下载粒度,设置为预设的数据帧下载粒度值。
47.这里,当数据帧下载粒度值过大时,会导致单次请求下载数据量过多,无法有效地发挥对片段切分下载的优势,反之,当数据帧下载粒度值过小时,会导致单次请求下载数据
量过少,进而导致下载请求开销过多,具体地,可由用户或本领域技术人员基于上述规律,根据经验或实际下载需求设置合适的数据帧下载粒度值。
48.考虑到内容数据帧是由若干帧构成的结构特点,较佳地,为了简化运算开销,便于对内容数据帧进行切分下载,数据帧下载粒度值的单位为帧,即为若干个帧。当然,也可以设置数据帧下载粒度值的单位为byte。在基于该数据帧下载粒度值请求下载时,再基于数据帧索引表中提供的当前待下载数据帧的数据量,将该数据帧下载粒度值转换为最接近的数据帧数量,基于该数量请求下载内容数据。如此,可以确保每次所下载数据帧的完整性,便于后续的解码处理。
49.另外,在一种实施方式中,为了方便后续对下载数据的解码,还可以基于单个解码单元的数据帧数量,设置数据帧下载粒度值,使得每次请求下载的数据帧数量为单个解码单元中的数据帧数量的整数倍。
50.方法二、根据当前带宽和预设的第二粒度时长,计算得到所述第二下载粒度。
51.具体地,可以计算当前带宽和第二粒度时长的乘积,得到第二下载粒度。
52.方法二中将基于当前带宽动态的设置第二下载粒度,以使得每次请求下载的数据下载时长将与第二粒度时长相同或接近,从而可以利用第二粒度时长,使得单次请求下载的数据下载时长具有可控性,进而可以保障片段下载和处理的流畅性,有效发挥对片段描述数据进行细粒度切分下载的优势。
53.当第二粒度时长过大时,会导致单次请求下载数据量过多,无法有效地发挥对片段切分下载的优势,反之,当第二粒度时长过小时,会导致单次请求下载数据量过少,进而导致下载请求开销过多。具体的,所述第二粒度时长可由用户或本领域技术人员根据实际应用场景的网络情况和播放需要,设置合适取值,如500ms,但不限于此。
54.进一步地,在步骤101中,在下载一个片段时,为了便于对片段中内容数据帧的下载,在进行片段描述数据的下载过程中,在检测到片段描述数据中的trun结构数据下载完成时,即可立即基于该trun结构数据,构建数据帧索引表。其中,所述trun结构(track fragment run box)用来描述当前片段的一组连续数据帧信息,它给出了片段中所有数据帧的具体信息包括:在文件中的位置偏移、数据帧大小、数据帧时长、关键帧标志等信息。所述数据帧索引表中将包括相应片段中的每个媒体数据帧的相关信息。这样,在后续下载片段的内容数据帧时,可以基于该数据帧索引表,按照第二下载粒度,依次下载表中的数据帧。具体构建数据帧索引表的方法为本领域技术人员所掌握,在此不再赘述。
55.在实际应用中,为了满足用户的不同播放需求,对于同一片段,流媒体服务器中会保存对应于不同分辨率的数据,分辨率越高对应的码率也越大。考虑到在实际应用中网络带宽是动态变化的,为了进一步提高流媒体播放质量,在流媒体播放过程中,可以引入码率切换控制机制,及时地根据实际测量的带宽,触发码率切换,以使得所下载的流媒体数据的码率与实际的传输带宽相匹配,即在带宽大的情况下,可以下载码率高的片段文件,在带宽小的情况下,可以下载码率低的片段文件。如此,可以在确保下载速度的前提下,获得更高分辨率的流媒体文件,以尽可能地提高流媒体播放效果,如图2所示,具体的码率切换控制方法主要包括下述步骤x1~x3:
56.步骤x1、基于所述流媒体数据的下载情况,监测实时带宽。
57.这里,在流媒体播放过程中,需要实时地进行带宽测量,以便在后续步骤中基于
此,确定出与实际网络传输状况相匹配的目标带宽。
58.具体地,本步骤可以采用现有的实时带宽测量方法实现。
59.进一步地,发明人在实现本技术的过程中发现:在实际应用中,受网络波动的影响,一些数据包的传输速率不能反映真实网络带宽,另外,数据量过小的数据包的传输速率也有可能无法与真实带宽相匹配。而现有的带宽测量方案往往会忽略网络波动、数据包过小等影响带宽测量准确的因素,而基于接收到的所有数据包的传输情况进行带宽测量,从而导致带宽测量结果不准确。
60.为此,为了获得更准确的实时带宽,可以进一步采用下述几种监测实时带宽。
61.如图3所示,实时带宽监测方法一主要包括如下步骤y1~y2:
62.步骤y1、当接收到所述流媒体的数据包时,根据预设的带宽过滤条件,判断所述数据包的带宽是否需要过滤;如果不需要,则根据所述数据包的下载情况,更新当前的带宽测量参数。
63.本步骤中,客户端在接收服务器根据数据下载请求返回的数据包时,根据预设的带宽过滤条件,对所接收到的数据包的带宽能否用于带宽测量进行筛选,并实时地对带宽测量参数进行相应更新,以过滤掉会影响带宽测量准确性的数据包,增强用于带宽测量的参数的有效性,进而提高带宽测量的准确性。
64.这里,数据包的带宽需要过滤是指该数据包的带宽被过滤掉,不能参与带宽测量。
65.较佳地,为获得较好的过滤效果,所述带宽过滤条件可以基于所接收视频数据的传输时间和/或传输大小进行设置。
66.在一种实施方式中,可设置所述带宽过滤条件包括下述内容:
67.所述数据包属于预设的小数据量文件数据,所述小数据量文件数据包括索引文件数据和初始化片段数据;和/或,当前距离最近一次请求下载数据的时间间隔小于预设的过滤时间阈值。
68.上述带宽过滤条件“当前距离最近一次请求下载数据的时间间隔小于预设的过滤时间阈值”中,“当前距离最近一次请求下载数据的时间间隔”表征了当前所接收数据包的传输时长大小,当满足该条件时,说明当前所接收数据包的传输时长很短,出现这种情况,有可能是下载单元的数据本身数量很小,或者下载单元因暂停恢复下载后的剩余数据量很小,也有可能是受网络波动影响而获得异常快的传输速率,这些传输时长很短的情况通常不能反映真实带宽情况,故,可以考虑将该类情况下接收的数据带宽过滤掉,以提高带宽测量的准确性。
69.对于所述过滤时间阈值,本领域技术人员可以根据实际需要,设置合理的取值,以使得可以利用该过滤时间阈值将不能代表当前真实带宽情况的数据带宽过滤掉。比如可以设置为100ms,但不限于此。
70.在一种实施方式中,对于需要实时更新的所述带宽测量参数,具体可以包括:待用于带宽采样的传输时间和已接收且不需要过滤带宽的数据总量。
71.相应地,具体可以采用下述方法对当前的带宽测量参数进行更新:
72.将所述待用于带宽采样的传输时间设置为当前距离最近一次请求下载的时间间隔;将所述数据包的大小增加至当前的所述数据总量中。
73.这里,通过将所述待用于带宽采样的传输时间设置为当前距离最近一次请求下载
数据的时间间隔,其中最近一次请求数据可以为首次请求下载一个数据单元,也可以是下载暂停后恢复下载所触发的数据下载请求。这样,通过上述更新可以使得所述待用于带宽采样的传输时间将始终记录最近一次请求数据的传输时间,从而可以把下载暂停后的空闲时间排除,以避免空闲时间对带宽测量准确性的影响。
74.上述更新方法中,对于不需要过滤带宽的数据,将其数据大小增加至当前的所述数据总量中,以便在带宽测量时,可以计算该参数与当前已参与带宽测量的总数据量的差值,获得当前不需要过滤且未参与带宽测量的数据量,进而可以基于该数据量进行带宽采样。
75.相应的,在一种实施方式中,如果所述带宽过滤条件中包含了上述“当前距离最近一次请求下载视频数据的时间间隔小于预设的过滤时间阈值”,则步骤y1中在检测到当前需要对所述数据包的带宽进行过滤,且所述数据包所属的下载单元存在暂停下载操作,并满足:当前距离最近一次请求下载的时间间隔小于预设的过滤时间阈值时,将当前已参与带宽测量的数据总量,设置为当前已接收且不需要过滤带宽的数据总量,并将当前的采样周期计时归零。
76.上述方法中,考虑到如果所述数据包所属的下载单元存在暂停下载操作,并满足:当前距离最近一次请求下载数据的时间间隔小于预设的过滤时间阈值,说明当前接收的数据因为暂停下载时所在下载单元剩余数据较小,恢复下载后所传输的数据量较小而需要被过滤。此种情况下,该下载单元的下载时间已不能准确用于计算带宽,因此,需要将该下载单元已下载和未下载的所有数据信息都过滤。故,在上述方法中,需要将当前“不需要过滤且未参与带宽测量的数据量”被设置为零,即将“当前已参与带宽测量的视频数据总量”设置为“当前已接收且不需要过滤带宽的视频数据总量”,这样两者的差值即为零。如此,可以确保此后统计的“待用于带宽采样的传输时间”和“当前不需要过滤且未参与带宽测量的数据量”是一致的,它们都是对应于新接收的未被过滤和采样的数据,从而可以保障后续采样结果不会受当前数据过滤的影响。
77.步骤y2、实时地根据所述带宽测量参数和预设的采样周期,判断当前是否满足预设的带宽测量条件,如果是,则根据所述带宽测量参数,触发带宽采样,并获取当前的带宽采样点数量,根据已采样的带宽值和所述带宽采样点数量,计算当前的带宽测量值。
78.本步骤与现有技术不同的是,在根据当前的带宽测量参数和预设的采样周期,判断出满足预设的带宽测量条件时,需要考虑触发带宽测量,而不需要等待一个或若干下载单元下载完成后再触发带宽测量,从而可以提高带宽测量的实时性。
79.具体地,为了提高带宽的实时性,在计算当前的带宽测量值时,需要基于最新采样的m个带宽采样值,进行计算。其中,如果当前已采样到的带宽值达到所述带宽采样点数量,则m为当前获取的所述带宽采样点数量,否则,m为当前实际已获取的所有带宽值数量。
80.在具体利用新采样的m个带宽采样值计算当前的带宽测量值时,可采用计算平均值的方式,但不限于此,也可以是其他能使测量结果与真实带宽更匹配的计算方式。
81.在一种实施方式中,为了进一步提高带宽测量的及时性,可以设置所述带宽测量条件包括下述内容:
82.当前到达所述采样周期;或者,当前已接收且不需要过滤带宽的视频数据中尚未参与带宽测量的视频数据数量大于预设的带宽测量数量阈值。
83.其中,对于所述采样周期是否到达的监控,可以通过一定时器实现。
84.基于上述带宽测量条件,当达到预设采样周期,或者已接收的不需要过滤带宽且尚未参与带宽测量的视频数据数量达到一定数量时,需要考虑触发进行带宽测量计算。
85.对于所述采样周期和所述带宽测量数量阈值,具体可由本领域技术人员根据实际需要设置,只要能确保带宽测量的及时性和准确性即可。
86.在一种实施方式中,在确定当前满足预设的带宽测量条件后,具体可以采用下述方法根据所述带宽测量参数,触发带宽采样:
87.如果所述待用于带宽采样的传输时间处于预设的时间范围内,则根据所述待用于带宽采样的传输时间,以及当前已接收且不需要过滤带宽的数据中尚未参与带宽测量的数据数量,计算当前采样的带宽值。
88.在上述方法中,考虑到带宽采样所基于的数据样本的传输时间太短会影响采样结果的真实性,为了进一步提高带宽采样的有效性,设置了上述时间范围,以限定:只有当前待用于带宽采样的传输时间在该时间范围内时,才能进行带宽采样。具体地,在一种实施方式中,所述时间范围具体为大于等于预设的最小采样传输时间小于等于所述采样周期。如此,可以尽量避免:由于采样样本数据对应的传输时长太短,而影响采样结果的准确性。对于所述最小采样传输时间,可由本领域技术人员根据实际应用场景需要设置合适取值。
89.在一种实施方式中,步骤y2中还可以基于当前已接收且未显示的数据播放时长,获取当前的带宽采样点数量,以通过动态地获取当前的带宽采样点数量,来提高带宽测量的准确性,具体地,可以采用下述步骤获取当前的带宽采样点数量:
90.步骤z1、将当前已接收且未显示的数据播放时长与所述采样周期相除,得到初始采样点数量。
91.本步骤用于基于当前缓存的未显示数据对应的播放时长,确定初始采样点数量,以便在后续步骤中基于该初始采样点数量,得到最终用于进行带宽测量的采样点数量。这里,由于在确定初始采样点数量时,考虑了当前缓存数据的播放时长,使得最终用于进行带宽测量的采样点数量能够与当前缓存数据的时长相匹配,从而可以保障带宽采样的连贯性和实时性。
92.步骤z2、如果当前播放文件的最大下载单元的播放时长小于预设的时长阈值,则根据预设的初始采样点数量与带宽采样点数量之间的映射关系,确定与所述初始采样点数量相匹配的带宽采样点数量,并设置为当前的带宽采样点数量,否则,将当前的带宽采样点数量设置为预设的最大采样点数量阈值。
93.这里,为了使得所确定的带宽采样点数量与当前播放文件的传输需求相匹配,在设置当前的带宽采样点数量时,考虑了当前播放文件的最大下载单元的播放时长,在该播放时长不是太长时,按照预设的初始采样点数量与带宽采样点数量之间的映射关系,基于步骤z1得到的所述初始采样点数量,来确定当前的带宽采样点数量。在当前播放文件的最大下载单元的播放时长较长时,说明需要的带宽较大,此时,将当前的带宽采样点数量设置为预设的最大采样点数量阈值,可以通过尽量多的采样点数量,提高带宽测量的准确性。
94.其中,对于所述初始采样点数量与带宽采样点数量之间的映射关系,可以按照两者的正比关系进行设置,以使得当缓存区中待播放的数据时长较大时,可以设置较大的带宽采样点数量,进而可以尽量基于较多的采样数据,来提高带宽测量的准确性。
95.对于所述最大采样点数量阈值,具体可由本领域技术人员根据实际经验设置合适取值,只要能尽量满足带宽测量的准确性需求即可。
96.在上述实时带宽监测方法一中,实时地对当前的数据下载情况带宽能否用于带宽测量进行筛选,以过滤掉会影响带宽测量准确性的数据,并基于未被过滤掉的视频数据,对用于带宽测量的参数进行更新,如此,可以提高带宽测量参数的有效性和准确性,将容易影响带宽测量准确性的因素,排除在带宽测量之外,使得用于带宽测量的参数能准确地反映真实带宽,从而可以提高带宽测量的准确性。并且,该方法在满足预设的带宽测量条件时,立即触发带宽测量,可以提高带宽测量的实时性。上述实时带宽监测方法一尤其适用于采用非chunk编码的http传输场景中。
97.如图4所示,实时带宽监测方法二主要包括如下步骤r1~r2:
98.步骤r1、当接收到所述流媒体的数据包时,过滤不饱和发送的数据包。
99.在一种实施方式中,本步骤具体可以采用下述方法过滤不饱和发送的数据包:
100.计算预设时间t
o
内接收到的数据包的数据大小平均值,如果当前数据包的数据大小小于或者等于所述数据大小平均值,则过滤所述当前数据包。如图5所示,在一种实施方式中,具体包括下述步骤:
101.步骤r11、计算所述当前数据包的传输时间,即:该数据包网络传输所花费的时间。
102.步骤r12、将所述当前数据包的数据大小和传输时间插入双向队列q
o
的尾部。
103.在一种实施方式中,本步骤具体可以采用下述方法实现:
104.如果是发出请求后第一次接收数据,则传输时间为:当前接收到数据包的时间t
now

请求数据的时间t
begin

105.如果不是第一包数据(即不属于发出请求后第一次接收数据),则传输时间为:当前接收到数据的时间t
now

上一次接收数据的时间t
previous

106.步骤r13、如果插入队列q
o
头部的队列元素的时间距离当前时间大于所述预设时间t
o
,则表明队列q
o
累积队列元素的时长已大于该设定时间t
o
,此时,应当舍弃一些旧的队列元素,即舍弃队列头部的队列元素,执行步骤r14;否则,直接执行步骤r15。
107.所述预设时间t
o
可由本领域技术人员根据经验设置合适取值,如1.5s,但不限于此。
108.步骤r14、删除队列q
o
头部的队列元素。
109.步骤r15、计算所述队列q
o
中数据包大小的平均值:s
avg
=s
total
/count。其中,s
total
是队列q
o
中所有数据包大小的总数,即总数据大小,count是队列q
o
中队列元素的个数。
110.步骤r16、如果步骤r11所述数据包的数据大小大于队列q
o
中数据大小的平均值s
avg
,则执行步骤r17,将该数据包的数据大小以及传输时间作为一项队列元素插入双向队列q
f
的尾部。与步骤r13类似,如果插入队列q
f
头部的队列元素的时间距离当前时间大于预设时间t
f
,则表明队列q
f
中累积队列元素的时长已大于该预设时间t
f
,此时,应当舍弃队列头部的队列元素,即删除队列q
f
头部的队列元素。
111.所述预设时间t
f
可由本领域技术人员根据经验设置合适取值,如1.5s,但不限于此。
112.通过上述步骤r11至r17,客户端可以判断出接收到的数据包是否为不饱和发送的数据包,不饱和发送的数据包的数据大小和传输时间信息将无法进入队列q
f
,因而,队列q
f
中所缓存的数据包中过滤了不饱和发送的数据包。
113.步骤r2、在过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,并基于数据大小以及传输速率的稳定区域计算当前带宽。
114.本步骤,用于基于当前缓存的过滤后的数据包,计算当前带宽。具体地,可以按照一定的采样周期,实时地触发上述计算。具体地,该采样周期,可以根据实时性测量需求设置合适取值,如250ms、500ms等,但不限于此。
115.在一种实施方式中,步骤r2具体可以采用下述方法实现:
116.步骤r21、对所述队列q
f
按照数据大小进行排序。
117.步骤r22、遍历排序后的所述队列q
f
,获取数据大小相同且个数最多的一组队列元素,记录这一组队列元素在队列q
f
中的位置:起始位置p
b
,结束位置p
e
,以及元素个数c
max

118.步骤r23、如果所述c
max
大于或者等于预设数值c,则表明所寻找到的这一组队列元素构成数据大小的稳定区域,可以基于此计算带宽,执行步骤r24;否则,如果c
max
小于该预设数值c,则执行步骤r27。
119.所述预设数值c可由本领域技术人员根据经验设置合适取值,如30,但不限于此。
120.步骤r24:对队列q
f
中p
b
到p
e
区域中的队列元素按传输时间的大小进行排序。
121.步骤r25:基于步骤r24的排序结果获取传输速率的稳定区域。
122.传输时间反映的是传输速率,基于步骤r24的排序结果,具体可以采用下述两种较佳的获取传输速率的稳定区域的方法:
123.稳定区域获取方法一:简单计算。例如,直接取排序结果的第一中间位置处的n1个队列元素和第二中间位置处的n2个队列元素,以这n1+n2个队列元素构成传输速率的稳定区域;其中,在所述排序结果中所述第一中间位置位于所述第二中间位置的前面。
124.这里,第一中间位置和第二中间位置可以为通过实验分析得出的较为合理位置。n1和n2可以由本领域技术人员根据实际应用场景需要设置。
125.考虑到最开始和最末尾的位置可能会出现速率过大或者过小的冲击值,应该去掉,而中间1/2处可能出现带宽的突变,也不适宜用于计算;1/4处和3/4处是带宽速率比较稳定的两个区域,使用这些值可以使带宽测量更为准确,故,较佳地,可以将第一中间位置设置为队列的1/4处,将第二中间位置设置为队列的3/4处,但不限于此,在此不再赘述。
126.稳定区域获取方法二:复杂计算,通过计算方差值,获取传输速率的稳定区域。具体步骤如下:
127.步骤1)计算p
b
到p
e
区域的中间位置p
m
=(p
e

p
b
)/2,如果p
m
不为整数,可以向上或向下取整。
128.步骤2)基于步骤r24的p
b
到p
e
区域的排序结果,遍历队列q
f
中从p
b
到p
m

10的队列元素,计算每个队列元素的传输时间及其后面9个数据的传输时间的方差,获取方差最小的一组队列元素。
129.步骤3)基于步骤r24的p
b
到p
e
区域的排序结果,遍历队列q
f
中从p
m
+1到p
e

10的队列元素,计算每个队列元素的传输时间及其后面9个数据的传输时间的方差,获取方差最小的一组队列元素。
130.步骤2)和步骤3)所得到的两组队列元素构成传输速率的稳定区域。
131.步骤r26:基于步骤r25获取的传输速率的稳定区域,累加其数据大小得到s,累加
其传输时间得到t,返回b=s/t作为当前带宽,结束当前流程。
132.步骤r27:用队列q
o
计算带宽。
133.具体的,累加队列q
o
中的数据大小得到总数据大小s,累加队列q
o
中的传输时间得到总传输时间t,计算b=s/t作为当前带宽。
134.至此,结束当前流程。
135.在上述实时带宽监测方法二中,客户端接收到数据包时,首先过滤不饱和发送的数据包;然后在过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,并基于数据大小以及传输速率的稳定区域计算当前带宽,能够有效地避免大量数据碎片以及网络波动或者服务器性能造成的瞬间传输速率不稳定的影响,从而可以提高带宽测量的准确性。该方法尤其适用于采用chunk编码的http传输场景中。
136.图7~图9示出不同直播流码率和网络带宽条件下,将上述实时带宽监测方法二与现有技术的带宽测量结果对比,对比显示实时带宽监测方法二相比于现有带宽测量方法有明显的性能提升。其中:
137.深色线表示:现有测量方法直接通过数据大小/传输时间得到的带宽值;
138.浅色线表示:应用实时带宽监测方法二计算得到的带宽值。
139.图7中,直播流码率为:1500kbps,网络带宽为:800kbps。
140.现有测量方法的测量结果约为700kbps,上述实时带宽监测方法二的测量结果约为750kbps。两者测量结果相差不多,但是上述实时带宽监测方法二更接近实际网络带宽。
141.图8中,直播流码率为:2000kbps,网络带宽为:5000kbps。
142.现有测量方法的测量结果约为2000kbps,接近直播流码率,无法准确测量网络带宽;而上述实时带宽监测方法二的测量结果为4700kbps,接近实际网络带宽。
143.图9中,直播流码率为:1000kbps,网络带宽:从200kbps到8mbps循环变化。
144.现有测量方法测量得到的最大带宽约为3mbps,无法准确测量最大网络带宽;而上述实时带宽监测方法二测量得到的最大带宽约为8mbps,接近实际最大带宽值。
145.步骤x2、基于所述实时带宽,确定相匹配的目标码率。
146.在一种实施方式中,可以采用下述方法,结合实际的场景应用需求,基于所述实时带宽,确定相匹配的目标码率:
147.步骤x21、根据所述实时带宽,预测目标带宽。
148.在一种实施方式中,为了使得本步骤预测的目标带宽能够与实际应用场景的播放需要相匹配,可以基于当前的场景类型,选择相匹配的带宽预测测略,按照该带宽预测测略和当前的实时带宽,预测相匹配的目标带宽。
149.步骤x22、根据所述目标带宽和当前场景对应的优选特征,确定相匹配的切换策略。
150.本步骤中,需要结合当前场景对应的优选特征,选择合适的切换策略,以使得可以根据实际应用场景播放需要,及时进行码率切换。
151.具体地,所述优选特征可以包括分辨率、播放延迟和/或流畅性等性能参数。其中流畅性可以利用一定时间内的缓存次数表征。
152.步骤x23、根据所述切换策略,确定当前的目标码率。
153.步骤x3、当所述目标码率和当前下载片段的码率不同时,触发码率切换,以按照所
述目标码率对应的片段请求待下载数据。
154.考虑到在实际应用中,在步骤101的所述下载过程中,可能会存在服务器尚未生成好所请求数据的情况,在一种实施方式中,此时,服务器可以返回下载失败的消息给客户端,客户端接收到下载失败消息后,重新请求下载相应数据。
155.步骤102、基于接收到的流媒体数据,进行所述流媒体的播放。
156.本步骤具体可以采用现有方法,基于所请求的下载数据进行播放。
157.在一种实施方式中,考虑到当发生码率切换时,解码器需要针对新的码率重新设置预处理,会增加解码延迟,进而产生播放卡顿。尤其是,当码率切换比较频繁时,上述卡顿对播放质量的影响更严重。为此,可以在发生码率切换时,利用多个解码器协同处理的方式,减少码率切换时间,具体可以在流媒体播放时采用下述方法实现:
158.当发生码率切换时,将切换后的码率对应的下载数据,加载至当前处于解码停止状态的第一解码器,并在当前处于解码开启状态的第二解码器完成对当前所播放解码单元的解码时,将所述第二解码器切换至解码停止状态,以停止所述第二解码器进行解码,并将所述第一解码器切换至解码开启状态,以启动所述第一解码器进行解码。
159.采用上述方法,在发生码率切换时,将下载的新码率的解码单元数据预加载至其他未启动解码的解码器中,以提前针对新的码率重新设置预处理,当当前解码器处理完旧码率的解码单元数据时,即启用已完成数据预加载的解码器进行解码,这样,通过利用解码单元的预加载,减少新码率片段的等待时间,从而可以有效减少码率切换时间,避免了码率切换对播放流畅性的影响。
160.在实际的流媒体播放场景中,当服务器端在直播流中插入了新的流媒体数据(如广告流)时,采用上述方法,则可以利用多个解码器的协同处理实现该新的流媒体的无卡顿插入。具体过程如下:
161.当客户端接收到服务器端在直播流中插入的新的流媒体文件的索引文件(如mpd)时,对该mpd解析,获取相应的码率,按照该码率下载新的流媒体文件,如果该码率与当前解码数据的码率不同,则将所下载的新的流媒体文件,加载至当前处于解码停止状态的第一解码器,并在当前处于解码开启状态的第二解码器完成对当前所播放解码单元的解码时,将所述第二解码器切换至解码停止状态,以停止所述第二解码器进行解码,并将所述第一解码器切换至解码开启状态,以启动所述第一解码器进行解码。
162.在实际应用中,在流媒体播放前,可以基于从服务器下载的流媒体初始信息(如manifest),按照一定的初始配置策略(如尽可能小的缓存上限),配置缓存参数,在流媒体播放过程中,可以按照实时的目标码率进行动态配置缓存参数,即,当发生码率切换时,需要按照新的目标码率配置缓存参数,以使得缓存配置与实际的场景应用需要所匹配,从而可以在流媒体播放过程中既不浪费存储空间,又能满足实际的播放性能要求。
163.考虑到在实际的流媒体播放应用场景中,往往会受网速影响而出现播放延迟较大的情况,从而会影响流媒体播放的实时性。为此,为了进一步增强流媒体播放的实时性,在一种实施方式中,在步骤102的所述播放过程中,将引入基于实时的播放延迟,自动触发倍速播放的机制,以实现目标播放延迟,从而可以满足低延迟、超低延迟的播放需求,具体方法如下:
164.步骤1021、按照预设的延迟监测周期,监测所述流媒体的实时播放延迟。
165.这里,对实时播放延迟的监测,可采用现有方法实现,在此不再赘述。
166.所述延迟监测周期,具体可以根据实际的实时播放延迟的准确性需求设置。
167.步骤1022、根据所述实时播放延迟,确定相应的播放速率,按照所述播放速率进行所述播放。
168.具体地,可以采用下述几种方法根据所述实时播放延迟,确定相应的播放速率:
169.播放速率确定方法一:
170.如果所述实时播放延迟超出指定的可容忍延迟范围,则确定相应的播放速率为快播速率。
171.如果所述实时播放延迟在所述可容忍延迟范围内,则确定相应的播放速率为正常速率。
172.具体地,上述可容忍延迟范围,具体可以基于当前的目标延迟设置,例如,可以设置可容忍延迟范围为目标延迟的0.95倍至1.05倍,但不限于此。
173.在一种实施方式中,具体可以采用下述方法确定所述快播速率:
174.查询根据预设的实时播放延迟和目标延迟的差值与快播速率的映射关系,得到所述实时播放延迟和目标延迟的差值对应的快播速率;其中,所述映射关系中所述差值与快播速率成正比。
175.所述映射关系需要满足实时播放延迟和目标延迟的差值与快播速率成正比的关系,这样,实时播放延迟和目标延迟的差值较大时,可以通过调整到较快的快播速率,使得实时播放延迟可以快速接近目标延迟;反之,实时播放延迟和目标延迟的差值较小时,可以利用较小的快播速率进行精细调整。
176.在实际应用中,可以由本领域技术人员根据实际需要设置上述映射关系。例如,可以设置:当实时播放延迟和目标延迟的差值很大(如,实时播放延迟大于等于目标延迟的10倍)时,使用2.1~16倍速的速率播放;当实时播放延迟和目标延迟的差值较大(如,实时播放延迟大于目标延迟的2倍且小于等于目标延迟的10倍)时,使用1.6~2倍速的速率播放;当实时播放延迟和目标延迟的差值较小时(如,实时播放延迟大于目标延迟的1.05倍且小于等于目标延迟的2倍),使用1.1~1.5倍速的速率播放,但不限于上述。
177.在一种实施方式中,具体可以采用下述方法确定所述慢播速率:
178.查询预设的消耗速率和下载速率的差值与慢播速率的映射关系,得到当前所述消耗速率和下载速率的差值所对应的慢播速率;其中,所述映射关系中所述差值与慢播速率成反比。
179.在实际应用中,可以由本领域技术人员根据实际需要,设置上述消耗速率和下载速率的差值与慢播速率的映射关系。在所述映射关系中,所述慢播速率的范围可以为0.1~0.9倍速,但不限于此。
180.播放速率确定方法二,该方法中,不仅利用实时播放延迟控制播放倍速,还需要基于缓存数据的消耗速率与下载速率的比较关系,来控制播放倍速,以便在缓存数据量较少时,通过减小播放速率,减缓缓存数据的消耗速率,从而避免发生缓存数据为空的情况,进而可以避免缓存为空导致的播放卡顿,增强了播放流畅性。较佳地,具体可以通过下述内容实现:
181.如果所述实时播放延迟超出指定的可容忍延迟范围,且当前的流媒体缓存数据的
消耗速率不大于所述下载的速率,则确定相应的播放速率为快播速率;
182.如果所述实时播放延迟在所述可容忍延迟范围内,且当前的流媒体缓存数据的消耗速率不大于所述下载的速率,则确定相应的播放速率为正常速率;
183.如果当前的流媒体缓存数据的消耗速率与所述下载的速率的差值大于预设差值阈值时,则确定相应的播放速率为慢播速率。所述差值阈值大于等于零。
184.这里,与上述播放速率确定方法一所不同的是,在当前的流媒体缓存数据的消耗速率大于所述下载的速率时,确定相应的播放速率为慢播速率。如此,通过在当前的流媒体缓存数据的消耗速率大于所述下载的速率的情况下,将播放速率设置为慢播速率,可以优先保障播放的流畅性。
185.与上述流媒体播放方法实施例相对应,本发明实施例还提出了一种流媒体播放装置实施例,如图10所示,主要包括:
186.下载模块1001,用于在流媒体播放过程中,对于当前待下载的片段,确定下载粒度,根据所述下载粒度,请求下载所述片段;
187.播放模块1002,用于基于接收到的流媒体数据,进行所述流媒体的播放。
188.在一种实施方式中,所述下载粒度包括:第一下载粒度和第二下载粒度,其中,所述第一下载粒度用于下载片段的片段描述数据,所述第二下载粒度用于下载片段的内容数据帧。
189.在一种实施方式中,所述下载模块1001,具体用于确定下载粒度包括:
190.将所述第一下载粒度,设置为预设的片段描述数据下载粒度值;或者,根据当前带宽和预设的第一粒度时长,计算得到所述第一下载粒度;
191.将所述第二下载粒度,设置为预设的数据帧下载粒度值;或者,根据当前带宽和预设的第二粒度时长,计算得到所述第二下载粒度。
192.在一种实施方式中,所述下载模块,进一步用于基于所述流媒体数据的下载情况,监测实时带宽,基于所述实时带宽,确定相匹配的目标码率;当所述目标码率和当前下载片段的码率不同时,触发码率切换,以按照所述目标码率对应的片段请求待下载数据。
193.在一种实施方式中,所述播放模块1002,进一步用于在发生码率切换时,将切换后的码率对应的下载数据,加载至当前处于解码停止状态的第一解码器,并在当前处于解码开启状态的第二解码器完成对当前所播放解码单元的解码时,将所述第二解码器切换至解码停止状态,以停止所述第二解码器进行解码,并将所述第一解码器切换至解码开启状态,以启动所述第一解码器进行解码。
194.在一种实施方式中,所述播放模块1002,进一步用于当发生码率切换时,按照新的目标码率配置缓存参数。
195.在一种实施方式中,所述下载模块1001,具体用于基于所述流媒体数据的下载情况,监测实时带宽,包括:
196.当接收到所述流媒体的数据包时,根据预设的带宽过滤条件,判断所述数据包的带宽是否需要过滤;如果不需要,则根据所述数据包的下载情况,更新当前的带宽测量参数;
197.实时地根据所述带宽测量参数和预设的采样周期,判断当前是否满足预设的带宽测量条件,如果是,则根据所述带宽测量参数,触发带宽采样,并获取当前的带宽采样点数
量,根据已采样的带宽值和所述带宽采样点数量,计算当前的带宽测量值。
198.在一种实施方式中,所述带宽过滤条件包括:
199.所述数据包属于预设的小数据量文件数据,所述小数据量文件数据包括索引文件数据和初始化片段数据;
200.和/或,当前距离最近一次请求下载的时间间隔小于预设的过滤时间阈值。
201.在一种实施方式中,所述带宽测量参数包括待用于带宽采样的传输时间和已接收且不需要过滤带宽的数据总量。
202.在一种实施方式中,所述下载模块1001,具体用于更新当前的带宽测量参数,包括:
203.将所述待用于带宽采样的传输时间设置为当前距离最近一次请求下载的时间间隔;
204.将所述数据包的大小增加至当前的所述数据总量中。
205.在一种实施方式中,所述下载模块1001,具体用于基于所述流媒体数据的下载情况,监测实时带宽进一步包括:
206.当判定所述数据包的带宽需要过滤,且所述数据包所属的下载单元存在暂停下载操作,并满足:当前距离最近一次请求下载的时间间隔小于预设的过滤时间阈值时,将当前已参与带宽测量的数据总量,设置为当前已接收且不需要过滤带宽的数据总量,并将当前的采样周期计时归零。
207.在一种实施方式中,所述带宽测量条件包括:
208.当前到达所述采样周期;
209.或者,当前已接收且不需要过滤带宽的数据中尚未参与带宽测量的数据数量大于预设的带宽测量数量阈值。
210.在一种实施方式中,所述下载模块1001,具体用于根据所述带宽测量参数,触发带宽采样,包括:
211.如果所述待用于带宽采样的传输时间处于预设的时间范围内,则根据所述待用于带宽采样的传输时间以及当前已接收且不需要过滤带宽的数据中尚未参与带宽测量的数据数量,计算当前采样的带宽值。
212.在一种实施方式中,所述下载模块1001,具体用于获取当前的带宽采样点数量,包括:
213.将当前已接收且未显示的数据播放时长与所述采样周期相除,得到初始采样点数量;
214.如果当前播放文件的最大下载单元的播放时长小于预设的时长阈值,则根据预设的初始采样点数量与带宽采样点数量之间的映射关系,确定与所述初始采样点数量相匹配的带宽采样点数量,并设置为当前的带宽采样点数量,否则,将当前的带宽采样点数量设置为预设的最大采样点数量阈值。
215.在一种实施方式中,所述下载模块1001,具体用于基于所述流媒体数据的下载情况,监测实时带宽,包括:
216.当接收到所述流媒体的数据包时,过滤不饱和发送的数据包;
217.在过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,并基于数据大小
以及传输速率的稳定区域计算当前带宽。
218.在一种实施方式中,所述下载模块1001,具体用于所述过滤不饱和发送的数据包,包括:
219.计算预设时间t
o
内接收到的数据包的数据大小平均值,如果当前数据包的数据大小小于或者等于所述数据大小平均值,则过滤所述当前数据包。
220.在一种实施方式中,所述下载模块1001,具体用于计算预设时间内接收到的数据包的数据大小平均值,如果当前数据包的数据大小小于或者等于所述数据大小平均值,则过滤所述当前数据包,包括:
221.计算所述当前数据包的传输时间;
222.将所述当前数据包的数据大小和传输时间插入双向队列q
o
的尾部;
223.如果插入队列q
o
头部的队列元素的时间距离当前时间大于所述预设时间t
o
,则删除所述队列q
o
头部的队列元素;
224.计算所述队列q
o
中数据大小的平均值;
225.如果所述当前数据包的数据大小大于所述数据大小的平均值,则将所述当前数据包的数据大小以及传输时间插入双向队列q
f
的尾部。
226.在一种实施方式中,所述下载模块1001,具体用于在过滤后的数据包中,寻找数据大小以及传输速率的稳定区域,基于数据大小以及传输速率的稳定区域计算当前带宽,包括:
227.对所述队列q
f
按照数据大小进行排序;
228.遍历排序后的所述队列q
f
,获取数据大小相同且个数最多的一组队列元素,记录这一组队列元素在队列q
f
中的位置:起始位置p
b
,结束位置p
e
,以及元素个数c
max

229.如果所述c
max
大于或者等于预设数值c,则对所述队列q
f
中p
b
至p
e
区域中的队列元素按传输时间的大小进行排序,并基于排序结果获取传输速率的稳定区域,再基于所述传输速率的稳定区域累加其数据大小得到s,累加其传输时间得到t,计算b=s/t作为当前带宽;
230.如果所述c
max
小于所述预设数值c,则累加队列q
o
中的数据大小得到总数据大小s,累加队列q
o
中的传输时间得到总传输时间t,计算b=s/t作为当前带宽。
231.在一种实施方式中,所述下载模块1001,具体用于基于排序结果获取传输速率的稳定区域,包括:
232.取排序结果的第一中间位置处的n1个队列元素和第二中间位置处的n2个队列元素,以这n1+n2个队列元素构成传输速率的稳定区域;其中,在所述排序结果中所述第一中间位置位于所述第二中间位置的前面。
233.在一种实施方式中,所述下载模块1001,具体用于基于排序结果获取传输速率的稳定区域,包括:
234.计算p
b
到p
e
区域的中间位置p
m
=(p
e

p
b
)/2,如果p
m
不为整数,对其向上或向下取整;
235.基于p
b
到p
e
区域的排序结果,遍历队列q
f
中从p
b
到p
m

10的队列元素,计算每个队列元素的传输时间及其后9个数据的传输时间的方差,获取方差最小的一组队列元素;
236.基于p
b
到p
e
区域的排序结果,遍历队列q
f
中从p
m
+1到p
e

10的队列元素,计算每个队
列元素的传输时间及其后9个数据的传输时间的方差,获取方差最小的一组队列元素;
237.所获取的两组队列元素构成传输速率的稳定区域。
238.在一种实施方式中,所述下载模块1001,具体用于基于所述实时带宽,确定相匹配的目标码率,包括:
239.根据所述实时带宽,预测目标带宽;
240.根据所述目标带宽和当前场景对应的优选特征,确定相匹配的切换策略;
241.根据所述切换策略,确定当前的目标码率。
242.在一种实施方式中,所述播放模块1002,进一步用于:按照预设的延迟监测周期,监测所述流媒体的实时播放延迟;根据所述实时播放延迟,确定相应的播放速率,按照所述播放速率进行所述播放。
243.在一种实施方式中,所述播放模块1002,具体用于根据所述实时播放延迟,确定相应的播放速率,包括:
244.如果所述实时播放延迟超出指定的可容忍延迟范围,则确定相应的播放速率为快播速率;
245.如果所述实时播放延迟在所述可容忍延迟范围内,则确定相应的播放速率为正常速率。
246.在一种实施方式中,所述播放模块1002,具体用于根据所述实时播放延迟,确定相应的播放速率,包括:
247.如果所述实时播放延迟超出指定的可容忍延迟范围,且当前的流媒体缓存数据的消耗速率不大于所述下载的速率,则确定相应的播放速率为快播速率;
248.如果所述实时播放延迟在所述可容忍延迟范围内,且当前的流媒体缓存数据的消耗速率不大于所述下载的速率,则确定相应的播放速率为正常速率;
249.如果当前的流媒体缓存数据的消耗速率与所述下载的速率的差值大于预设差值阈值时,则确定相应的播放速率为慢播速率,所述差值阈值大于等于零。
250.在一种实施方式中,所述播放模块1002,具体用于确定所述快播速率,包括:
251.查询根据预设的实时播放延迟和目标延迟的差值与快播速率的映射关系,得到所述实时播放延迟和目标延迟的差值对应的快播速率;其中,所述映射关系中所述差值与快播速率成正比。
252.在一种实施方式中,所述播放模块1002,具体用于确定所述慢播速率,包括:
253.查询预设的消耗速率和下载速率的差值与慢播速率的映射关系,得到当前所述消耗速率和下载速率的差值所对应的慢播速率;其中,所述映射关系中所述差值与慢播速率成反比。
254.根据上述流媒体播放方法实施例,本技术实施例实现了一种流媒体播放的电子设备,包括处理器和存储器;所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如上所述的流媒体播放方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施方式的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。此外,还可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作。还可以将从存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存
储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述流媒体播放方法实施方式中任一实施方式的功能。
255.其中,存储器具体可以实施为电可擦可编程只读存储器(eeprom)、快闪存储器(flash memory)、可编程程序只读存储器(prom)等多种存储介质。处理器可以实施为包括一或多个中央处理器或一或多个现场可编程门阵列,其中现场可编程门阵列集成一或多个中央处理器核。具体地,中央处理器或中央处理器核可以实施为cpu或mcu。
256.本技术实施例实现了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上所述的流媒体播放步骤。
257.需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。
258.各实施方式中的硬件模块可以以机械方式或电子方式实现。例如,一个硬件模块可以包括专门设计的永久性电路或逻辑器件(如专用处理器,如fpga或asic)用于完成特定的操作。硬件模块也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。至于具体采用机械方式,或是采用专用的永久性电路,或是采用临时配置的电路(如由软件进行配置)来实现硬件模块,可以根据成本和时间上的考虑来决定。
259.在本文中,“示意性”表示“充当实例、例子或说明”,不应将在本文中被描述为“示意性”的任何图示、实施方式解释为一种更优选的或更具优点的技术方案。为使图面简洁,各图中的只示意性地表示出了与本发明相关部分,而并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”并不表示将本发明相关部分的数量限制为“仅此一个”,并且“一个”不表示排除本发明相关部分的数量“多于一个”的情形。在本文中,“上”、“下”、“前”、“后”、“左”、“右”、“内”、“外”等仅用于表示相关部分之间的相对位置关系,而非限定这些相关部分的绝对位置。
260.以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1