一种获取流媒体播放时长的方法和装置与流程

文档序号:18137084发布日期:2019-07-10 10:42阅读:467来源:国知局
一种获取流媒体播放时长的方法和装置与流程

本申请实施例涉及流媒体播放技术领域,尤其涉及一种获取流媒体播放时长的方法和装置。



背景技术:

在流媒体播放过程中,有些应用(如:youtube)需要播放器快速精准的获取当前播放时间(currentposition),但是由于本地播放器和相关接口的调用开销限制,导致本地播放器返回给上层应用的当前播放时间与实际播放时间有一定的偏移,使得上层应用获取到的当前播放时间不准确。尤其是网络环境较差时,播放器频繁出现缓冲的情况,上层应用获取到的当前播放时间就更加不准确。

现有的解决方案中,有些智能电视制造厂商会通过建立定时器,计算当前播放时间的偏移,这种方案虽然在一定程度上弥补了时间偏移问题,但是设置定时器会增加系统的运行开销,而且启动定时器的时间点偏差也会导致计算出的结果有一定的偏差。

综上所述,亟需一种获取流媒体播放时长的方案,用于提高获取流媒体播放时长的准确性。



技术实现要素:

本申请实施例提供一种获取流媒体播放时长的方法和装置,用于提高获取流媒体播放时长的准确性。

第一方面,本申请实施例提供一种获取流媒体播放时长的方法,该方法包括:在第一系统时间获取播放器更新的第一播放时长;其中,所述第一播放时长为所述播放器在第二系统时间更新的流媒体已播放时长,所述第二系统时间小于或等于所述第一系统时间;确定所述播放器在第一时间段内的流媒体播放状态,所述第一时间段为所述第二系统时间与所述第一系统时间之间的时间区间;然后,根据所述第一播放时长、所述播放器在第一时间段内的流媒体播放状态,确定所述流媒体在所述第一系统时间的实际播放时长。

第二方面,本申请实施例提供一种获取流媒体播放时长的装置,包括获取单元和处理单元。其中:获取单元,用于在第一系统时间获取播放器更新的第一播放时长;所述第一播放时长为所述播放器在第二系统时间更新的流媒体已播放时长;所述第二系统时间小于或等于所述第一系统时间;处理单元,用于确定所述播放器在第一时间段内的流媒体播放状态;根据所述第一播放时长、所述播放器在第一时间段内的流媒体播放状态,确定所述流媒体在所述第一系统时间的实际播放时长;所述第一时间段为所述第二系统时间与所述第一系统时间之间的时间区间。

第三方面,本申请实施例提供一种用于获取流媒体播放时长装置,所述装置包括存储器和处理器,其中:所述存储器用于存储指令;所述处理器,用于执行所述存储器存储的指令,当所述处理器执行所述存储器存储的指令时,使得装置执行以下操作:在第一系统时间获取播放器更新的第一播放时长;其中,所述第一播放时长为所述播放器在第二系统时间更新的流媒体已播放时长,所述第二系统时间小于或等于所述第一系统时间;确定所述播放器在第一时间段内的流媒体播放状态,所述第一时间段为所述第二系统时间与所述第一系统时间之间的时间区间;然后,根据所述第一播放时长、所述播放器在第一时间段内的流媒体播放状态,确定所述流媒体在所述第一系统时间的实际播放时长。

第四方面,本申请实施例提供一种计算机存储介质,计算机存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第一方面或第一方面的任意可能的实现方式中的方法。

第五方面,本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面或第一方面的任意可能的实现方式中的方法。

本申请实施例中,用于获取流媒体播放时长装置在第一系统时间获取播放器更新的第一播放时长;其中,第一播放时长为播放器在第二系统时间更新的流媒体已播放时长,第二系统时间小于第一系统时间;确定播放器在第一时间段内的流媒体播放状态,第一时间段为第二系统时间与第一系统时间之间的时间区间;然后,根据第一播放时长、播放器在第一时间段内的流媒体播放状态,确定流媒体在第一系统时间的实际播放时长。如此,在确定流媒体的实际播放时长时不仅考虑了第一播放时长,还考虑了第一系统时间与第二系统时间的偏差、以及在这段偏差时间段内的流媒体播放状态,而不是像现有技术那样直接将第一播放时长作为实际播放时长,从而可以提高获取实际播放时长的准确性。

附图说明

图1为本申请实施例适用的一种流媒体播放系统结构示意图;

图2为本申请实施例提供的一种获取流媒体播放时长的方法的流程示意图;

图3为本申请实施例提供的一种正常播放场景示意图;

图4为本申请实施例提供的一种非正常播放场景示意图;

图5为本申请实施例提供的另一种非正常播放场景示意图;

图6为本申请实施例提供的另一种非正常播放场景示意图;

图7为本申请实施例提供的另一种非正常播放场景示意图;

图8为本申请实施例提供的一种用于获取流媒体播放时长装置的结构示意图;

图9为本申请实施例提供的另一种获取流媒体播放时长的装置的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。

在流媒体播放过程中,有些应用(如:youtube)需要播放器快速精准的获取当前播放时间。比如,在youtube2019认证过程中,有一项测试用例用来测试从对接层获取的当前播放时间(即currenttime)的准确性,这个认证要求从对接层获取的当前播放时间与视频本身实际播放到的当前播放时间的差距小于32ms。

图1示例性示出了本申请实施例适用的一种流媒体播放系统结构示意图,如图1所示,该系统包括应用层101、对接层102和播放器103。

其中,应用层101每隔一段时间调用对接层接口(比如getcurposition接口)获取流媒体的当前播放时间,也就是播放器播放流媒体的实际播放时长。比如,应用层101每隔2ms调用一次getcurposition接口,从对接层获取到播放器播放流媒体对应的实际播放时长。举个例子,以流媒体为一段总时长为60min的视频为例,当该视频播放至25min时,应用层101调用该getcurposition接口可以从对接层102获取到的实际播放时长25min。

对接层102根据播放器更新的流媒体的播放信息,确定流媒体的实际播放时长。对接层102获取播放器更新的流媒体的播放信息的方式有多种。一种实现方式中,对接层102可以每隔一段时间获取播放器103更新的流媒体的播放信息,比如播放器在最近一次更新的流媒体的已播放时长。另一种实现方式中,播放器103更新流媒体的播放信息后,向对接层102发送播放器103所更新的流媒体的播放信息。还有一种实现方式中,应用层101调用getcurposition接口时,对接层102从播放器103获取更新的流媒体的播放信息。

播放器103用于播放流媒体,播放器103每隔一段时间调用updateinfo接口更新一次流媒体的已播放时长的缓存值,比如,播放器103每隔200ms调用一次updateinfo接口,那么播放器103每隔200ms就可以获得以下播放信息:当前播放位置(curposition)信息,即播放器播放流媒体过程对应的已播放时长;是否暂停(ispaused)信息,即播放器103播放流媒体过程是否处于暂停状态;更新系统时间(update_sys_time),即播放器103获取的当前播放位置(curposition)信息对应的第二系统时间t2。

本申请实施例中,采用播放时长为例来表示流媒体的当前播放位置,当然,也可以采用字节来表示流媒体的当前播放位置,或者其它可以表示流媒体的当前播放位置的信息来实现本申请实施例提供的方法,此处不在赘述。

基于图1的系统架构,为了更清楚的介绍如何实现本申请实施例提供的获取流媒体播放时长的方法,下面结合图1中示出的正常播放场景来详细描述。

如图1所示,播放器103每隔200ms调用一次updateinfo接口,更新一次流媒体的已播放时长的缓存值。应用层101每隔2ms调用一次getcurposition接口,以便从对接层102获得流媒体的实际播放时长。图3-7中也按照播放器103每隔200ms调用一次updateinfo接口,应用层101每隔2ms调用一次getcurposition接口为例,后续不再赘述。

图1中以应用层101调用getcurposition接口的系统时间为t2,对接层102收到应用层101调用时,记录当前系统时间t2;而在时间t2之前播放器103最近一次更新流媒体的播放信息的系统时间为t1,比播放器更新得到的当前播放位置curposition为p1,ispaused为0且isunderflow也为0,说明流媒体播放状态为正常播放。

如果t1等于t2,也就是说,播放器在系统时间为t1时更新得到的p1即为实际播放时长。所以,应用层101在系统时间为t2调用getcurposition接口得到流媒体的实际播放时长p1。

如果t1小于t2,对接层102在系统时间t2根据底层播放器1.3更新的流媒体的播放信息,来计算出流媒体的实际播放时长。下面针对本申请和现有技术中的采用的方案分别说明:

在现有技术中,对接层102将播放器在系统时间为t1时更新得到的p1作为实际播放时长,返回给应用层101,由于在系统时间t1至系统时间t2之间的播放状态为正常播放,也就是说,播放器在系统时间为t1的播放时长p1,在系统时间t1至系统时间t2这段时间内流媒体的实际播放时长并不会停留在p1,所以现有技术中的方案会导致应用层103获取到的实际播放时长不准确。

为了解决现有技术中的方案存在的问题,本申请实施例中,对接层102根据播放器在系统时间为t1的播放时长p1、以及在系统时间t1至系统时间t2之间的这段时间的所播放的时长,得到实际播放时长。具体来说,流媒体的实际播放时长可以用以下公式(1)来表示:

p=curposition+playbackrate*(t2–t1)……(1)

上述公式(1)中,p为实际播放时长,curposition为播放器在系统时间t1时的已播放时长,比如图1中curposition为p1;playbackrate为播放器播放速率,假设播放器正常播放的播放速率为1倍速,那么playbackrate为1;假设播放速率为2倍速,那么playbackrate为2;t2为应用层101调用getcurposition接口的系统时间。t1为播放器103最近一次调用updateinfo接口的系统时间。

本申请实施例提供的获取流媒体播放时长的方法,通过获取底层播放器更新的播放时长时的系统时间t1,及应用层获取实际播放时间时的系统时间t2,取t2与t1之间差值,并根据当前播放速率计算出一个偏移补偿,与底层播放器更新的播放时长叠加,达到快速精准获取当前播放时间的效果。需要说明的是,本申请实施例提供的获取流媒体播放时长的方法,不仅适用于在t1至t2时间段内播放器正常播放的场景下,还适用于在网络环境较差时播放器频繁出现缓冲的场景、以及快进快退(seek)操作场景,其中seek操作可以是快进操作,也可以是快退操作。

基于上述内容,图2示例性示出了本申请实施例提供的一种获取流媒体播放时长的方法,该方法由用于获取流媒体播放时长装置执行,如图2所示,该方法包括:

步骤201,在第一系统时间获取播放器更新的第一播放时长;第一播放时长为播放器在第二系统时间更新的流媒体已播放时长。

此处,第二系统时间可以等于第一系统时间,这样可以确定第一播放时长就是实际播放时长。第二系统时间也可以小于第一系统时间,之后执行步骤202和步骤203。

其中,第一播放时长可以是播放器在第一系统时间之前的任一次调用updateinfo接口更新的。

例如,第一播放时长是播放器在第一系统时间之前的最近一次调用updateinfo接口更新的,如图1所示,播放器在第二系统时间(即t1)更新的流媒体已播放时长,第一系统时间为t2,以播放器在t1至t2这段时间内的播放状态为正常播放状态为例,那么第一播放时长为p1与第一时间段(即t1至t2)内的播放时长之和。具体来说,流媒体的实际播放时长可以用以下公式(2)来表示:

p=p1+playbackrate*(t2–t1)……(2)

上述公式(2)中,p为实际播放时长,p1为播放器在系统时间t1时的已播放时长;playbackrate为播放器在t1至t2这段时间内的播放速率;t2为应用层101调用getcurposition接口的系统时间。t1为播放器103在系统时间t2之前的最近一次调用updateinfo接口的系统时间。

再例如,第一播放时长是播放器在第一系统时间之前的倒数第n次调用updateinfo接口更新的,n为大于1的整数。如图3所示,为本申请提供的正常播放场景示意图,以n等于2为例,播放器在第二系统时间(即t3)更新的流媒体已播放时长为p2,第一系统时间为t2,以播放器在t3至t2这段时间内的播放状态为正常播放状态为例,那么第一播放时长为p2与第一时间段(即t3至t2)内的播放时长之和。具体来说,流媒体的实际播放时长可以用以下公式(3)来表示:

p=p2+playbackrate*(t2–t3)……(3)

上述公式(3)中,p为实际播放时长,p2为播放器在系统时间t3时的已播放时长;playbackrate为播放器播放速率;t2为应用层101调用getcurposition接口的系统时间。t1为播放器103在系统时间t2之前的倒数第二次调用updateinfo接口的系统时间。

当然,图3所示的场景中,也可以n等于1为例,来确定流媒体的实际播放时长,即第一播放时长是播放器在第一系统时间之前的倒数第1次调用updateinfo接口更新的。

步骤202,确定播放器在第一时间段内的流媒体播放状态;第一时间段为第二系统时间与第一系统时间之间的时间区间。

结合上述图1来说明,第一时间段即为t1到t2这段时间区间。结合上述图3来说明,第一时间段即为t3到t2这段时间区间。

步骤203,根据第一播放时长、播放器在第一时间段内的流媒体播放状态,确定流媒体在第一系统时间的实际播放时长。

其中,播放器的流媒体播放状态可以用以下方式来表示:如果ispaused=1或isunderflow=1,即当前处于播放暂停状态(pause)或缓冲(underflow)状态;如果ispaused=0并且isunderflow=0,即当前处于正常播放状态。

通过上述图2所示的实施例,用于获取流媒体播放时长装置在第一系统时间获取播放器更新的第一播放时长;其中,第一播放时长为播放器在第二系统时间更新的流媒体已播放时长,第二系统时间小于第一系统时间;确定播放器在第一时间段内的流媒体播放状态,第一时间段为第二系统时间与第一系统时间之间的时间区间;然后,根据第一播放时长、播放器在第一时间段内的流媒体播放状态,确定流媒体在第一系统时间的实际播放时长。如此,在确定流媒体的实际播放时长时不仅考虑了第一播放时长,还考虑了第一系统时间与第二系统时间的偏差、以及在这段偏差时间段内的流媒体播放状态,而不是像现有技术那样直接将第一播放时长作为实际播放时长,从而可以提高获取实际播放时长的准确性。

在上述步骤202中,流媒体播放状态可以有多种,播放器在第一时间段内的流媒体播放状态不同,通过步骤205确定流媒体在所述第一系统时间的实际播放时长的方式也就不同。下面分为以下几种情况分别进行介绍。

情况一、播放器在第一时间段内的流媒体播放状态为正常播放状态。

在这种情况下,本申请实施例提供一种实现上述步骤205的方式:若确定播放器在第一时间段内的流媒体播放状态为正常播放状态,则确定流媒体在第一系统时间的实际播放时长为第一播放时长与第二播放时长之和。其中,第二播放时长为播放速率与第一时间段对应的时长之间的乘积。

通过这种方式,针对在播放器处于正常播放状态的场景下,可以提高获取实际播放时长的准确性。

情况二、播放器在第一时间段内的流媒体播放状态为:在第一时间段内未执行seek操作,且在第二时间段内处于播放暂停状态,其中,第二时间段为第一时间段内的任意时间区间。

在这种情况下,本申请实施例提供一种实现上述步骤205的方式:若确定播放器在第二时间段内处于播放暂停状态、且在第一时间段内未执行seek操作,则流媒体在第一系统时间的实际播放时长为第一播放时长与第三播放时长之和。其中,第二时间段为第一时间段内的任意时间区间,第三播放时长为播放速率与时长差值的乘积;时长差值为第一时间段对应的时长与第二时间段对应的时长之间的差值。

图4示例性示出了本申请实施例提供的一种非正常播放场景示意图。

如图4所示,应用层101在第一系统时间t2调用getcurposition接口,播放器103在第二系统时间t3调用updateinfo接口,第一时间段为t3到t2这段时间区间,在第一时间段中有第二时间段(如图4中的t4到t5这段时间)播放器处于播放暂停状态,如图4中所示ispaused=1或isunderflow=1。具体来说,从第二系统时间t3至系统时间t4播放器处于正常播放状态,由于底层数据不够或解码暂停等原因导致从系统时间t4至系统时间t5播放器处于播放暂停状态,从系统时间t5开始底层数据足够,所以从系统时间t5至第一系统时间t2播放器又处于正常播放状态,也就是说,在第一时间段中除第二时间段之外的时间(这段时间的时长为时长差值)内播放器都处于正常播放状态。那么,实际播放时长为第一播放时长与在时长差值内播放的第三播放时长之和。参见图4,实际播放时长p可以用以下公式(4)来表示:

p=p2+playbackrate*[(t2–t3)-(t5-t4)]……(4)

上述公式(4)中,p为实际播放时长,p2为播放器在系统时间t3时的已播放时长;playbackrate为播放器播放速率;t2为应用层101调用getcurposition接口的第一系统时间。t4为播放器开始处于播放暂停状态的系统时间,t5为播放器开始处于正常播放状态的系统时间。

需要说明的是,在情况二中,也可以根据播放器最近一次更新的系统时间与第一系统时间这段时间区间内播放器的播放状态,以及第一播放时长来确定实际播放时长,具体方式不再赘述。

通过这种方式,针对在播放器处于播放暂停状态的场景,并不会像现有技术那样直接将播放器更新的第二系统时间作为播放器的实际播放时长,从而可以提高获取播放器实际播放时长的准确性。

情况三、播放器在第一时间段内的流媒体播放状态为:播放器在第三系统时间执行seek操作、且在第三时间段内处于播放暂停状态,第三时间段为所述第三系统时间与所述第一系统时间之间的时间区间。

在这种情况下,本申请实施例提供一种实现上述步骤205的方式:若确定在第三系统时间执行seek操作、且播放器在第三时间段内处于播放暂停状态,则确定流媒体在第一系统时间的实际播放时长为第四播放时长;其中,seek操作用于将流媒体的已播放时长调至第四播放时长。

图5示例性示出了本申请实施例提供的另一种非正常播放场景示意图。

如图5所示,应用层101在第一系统时间t2调用getcurposition接口,播放器103在第二系统时间t3调用updateinfo接口,即第一时间段为t3到t2这段时间区间。在第三系统时间tseek执行了seek操作,将播放器的播放时长拖拽到st,那么从第二系统时间t3至第三系统时间tseek这段时间区间内,播放器由于还未有足够的底层数据而处于暂停播放状态,用户可以直观的看到播放器在数据缓冲中,直到底层有足够数据才会继续播放。也就是说,如果一直到第一系统时间t2都没有足够数据,即第三时间段(tseek至t2)底层播放器都没有足够的数据,那么播放器的实际播放时长为st。

情况四、播放器在第一时间段内的流媒体播放状态为:播放器在第三系统时间执行seek操作、且所述播放器在第四时间段内处于播放暂停状态。

在这种情况下,本申请实施例提供一种实现上述步骤205的方式:若确定在第三系统时间执行seek操作、且所述播放器在第四时间段内处于播放暂停状态、且所述播放器在第五时间段内处于正常播放状态,则确定所述流媒体在所述第一系统时间的实际播放时长为所述第四播放时长与第五播放时长之和;

其中,所述第五播放时长为播放速率与第五时间段对应的时长之间的乘积。

基于图5,图6示例性示出了本申请实施例提供的另一种非正常播放场景示意图。

如图6所示,应用层101在第一系统时间t2调用getcurposition接口,播放器103在第二系统时间t3调用updateinfo接口,即第一时间段为t3到t2这段时间区间。在第三系统时间tseek执行了seek操作,将播放器的播放时长拖拽到第四播放时长st,那么从第二系统时间t3至第三系统时间tseek这段时间区间内,播放器由于还未有足够的底层数据而处于暂停播放状态,用户可以直观的看到播放器在数据缓冲中,直到底层有足够数据才会继续播放。如果从系统时间t4开始有足够数据,那么播放器在第五时间段(即t4到t2这段时间区间)内处于正常播放状态,那么播放器的实际播放时长为第四播放时长st与在t4到t2这段时间区间内的第五播放时长之和。实际播放时长p可以用以下公式(5)来表示:

p=st+playbackrate*(t2–t4)……(5)

上述公式(5)中,p为实际播放时长,st为播放器在系统时间tseek时执行seek操作达到的已播放时长;playbackrate为播放器播放速率;t2为应用层101调用getcurposition接口的系统时间。t4为播放器103在seek操作之后开始正常播放的系统时间。

基于上述四种情况,还可以在播放器101增加特定的回调接口,回调接口用于将底层播放器的状态及时地通知到上层,比如当播放器处于缓冲状态时,通过回调接口将播放器的缓冲状态通知对接层102,以便对接层102通过计算时间差补偿值来精准的获取缓冲状态发生时的实际播放时长。

在一个示例中,应用层执行seek操作时,如seek至时间st,更新当前播放时长为st,此时如果底层播放器返回的信息中isunderflow是1,即此时底层数据不足,处于underflow状态。此过程中应用层的getcurposition接口获取到的当前播放时间为应用要seek的时间点,参照上述情况三,即实际播放时长为st。底层数据足够后,会开始播放,此时通过updateinfo更新过来的isunderflow为0,参照上述情况四,此时应用层获取到的实际播放时长为公式(5)。

在另一个示例中,在正常播放时,如果网络环境比较差,应用层正常播放时,可能出现底层播放器(player)数据不足,导致播放器处于underflow状态,视频显示下载(loading)画面无法继续播放,此时底层播放器通过单独的回调接口返回isunderflow=1,参见图7,底层返回underflow状态时的系统时间为t4;underflow状态发生前一次更新底层播放器的播放时长p2的系统时间为t3,也就是说,在系统时间t3至t4这段时间内播放器处于正常播放状态,在系统时间t4至t2这段时间内播放器处于缓冲状态,那么上层频繁调用getcurposition时,获取到的实际播放时长参见下述公式(6):

p=p2+playrate*(t4–t3)……(6)

上述公式(6)中,p为实际播放时长,playbackrate为播放器播放速率;t2为应用层101调用getcurposition接口的系统时间。t4为播放器103开始处于缓冲状态的系统时间。

通过上述实施例,由于在确定流媒体的实际播放时长时,不仅考虑了第一播放时长,还考虑了第一系统时间与第二系统时间的偏差、以及在这段偏差时间段内的流媒体播放状态,而不是像现有技术那样直接将第一播放时长作为实际播放时长,从而可以提高获取实际播放时长的准确性。

基于相同构思,图8示例性示出了本申请实施例提供的一种用于获取流媒体播放时长装置的结构示意图,如图8所示,该装置800可以用于执行上述图2所示的任一个方案。该装置800包括获取单元801和处理单元802。

获取单元801,用于在第一系统时间获取播放器更新的第一播放时长;所述第一播放时长为所述播放器在第二系统时间更新的流媒体已播放时长;所述第二系统时间小于所述第一系统时间;

处理单元802,用于确定所述播放器在第一时间段内的流媒体播放状态;根据所述第一播放时长、所述播放器在第一时间段内的流媒体播放状态,确定所述流媒体在所述第一系统时间的实际播放时长;所述第一时间段为所述第二系统时间与所述第一系统时间之间的时间区间。

在一种可选地实施方式中,所述处理单元802,具体用于:若确定所述播放器在第一时间段内的流媒体播放状态为正常播放状态,则确定所述流媒体在所述第一系统时间的实际播放时长为所述第一播放时长与第二播放时长之和;所述第二播放时长为播放速率与第一时间段对应的时长之间的乘积。

在一种可选地实施方式中,所述处理单元802,具体用于:若确定所述播放器在第二时间段内处于播放暂停状态、且在所述第一时间段内未执行seek操作,则所述流媒体在所述第一系统时间的实际播放时长为所述第一播放时长与第三播放时长之和;其中,所述第二时间段为所述第一时间段内的任意时间区间;所述第三播放时长为所述播放速率与时长差值的乘积;所述时长差值为所述第一时间段对应的时长与第二时间段对应的时长之间的差值。

在一种可选地实施方式中,所述处理单元802,具体用于:若确定在第三系统时间执行seek操作、且所述播放器在第三时间段内处于播放暂停状态,则确定所述流媒体在所述第一系统时间的实际播放时长为所述第四播放时长;其中,所述seek操作用于将所述流媒体的已播放时长调至第四播放时长;所述第三时间段为所述第三系统时间与所述第一系统时间之间的时间区间。

在一种可选地实施方式中,所述处理单元802,具体用于:若确定在第三系统时间执行seek操作、且所述播放器在第四时间段内处于播放暂停状态、在第五时间段内处于正常播放状态,则确定所述流媒体在所述第一系统时间的实际播放时长为所述第四播放时长与第五播放时长之和;其中,所述第五播放时长为播放速率与所述第五时间段对应的时长之间的乘积。

应理解,以上各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。本申请实施例中,获取单元801和处理单元802可以由下述图9中的处理器903实现。

基于相同构思,图9示例性示出了本申请实施例提供的另一种用于获取流媒体播放时长装置的结构示意图,如图9所示,装置900可以用于执行上述图2所示的任一个方案。装置900包括存储器902和处理器903。

存储器902可以包括易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器902还可以包括上述种类的存储器的组合。

处理器903可以是中央处理器(centralprocessingunit,cpu),网络处理器(networkprocessor,np)或者cpu和np的组合。处理器903还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,asic),可编程逻辑器件(programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(field-programmablegatearray,fpga),通用阵列逻辑(genericarraylogic,gal)或其任意组合。可选的,上述存储器902和处理器903也可以集成在一起。

可选地,存储器902可以用于存储程序指令,处理器903调用该存储器902中存储的指令,可以执行上述方案(如图2所示的方法)中所示实施例中的一个或多个步骤,或其中可选的实施方式,使得装置900实现上述方法中用于获取流媒体播放时长装置的功能。

处理器903,用于执行所述存储器存储的指令,当所述处理器903执行所述存储器存储的指令时,使得所述装置900执行以下操作:

在第一系统时间获取播放器更新的第一播放时长;所述第一播放时长为所述播放器在第二系统时间更新的流媒体已播放时长;所述第二系统时间小于所述第一系统时间;确定所述播放器在第一时间段内的流媒体播放状态;根据所述第一播放时长、所述播放器在第一时间段内的流媒体播放状态,确定所述流媒体在所述第一系统时间的实际播放时长;所述第一时间段为所述第二系统时间与所述第一系统时间之间的时间区间。

在一种可选的实现方式中,所述处理器903,具体用于使得所述装置执行以下操作:若确定所述播放器在第一时间段内的流媒体播放状态为正常播放状态,则确定所述流媒体在所述第一系统时间的实际播放时长为所述第一播放时长与第二播放时长之和;所述第二播放时长为播放速率与第一时间段对应的时长之间的乘积。

在一种可选的实现方式中,所述处理器903,具体用于使得所述装置执行以下操作:若确定所述播放器在第二时间段内处于播放暂停状态、且在所述第一时间段内未执行seek操作,则所述流媒体在所述第一系统时间的实际播放时长为所述第一播放时长与第三播放时长之和;其中,所述第二时间段为所述第一时间段内的任意时间区间;所述第三播放时长为所述播放速率与时长差值的乘积;所述时长差值为所述第一时间段对应的时长与第二时间段对应的时长之间的差值。

在一种可选的实现方式中,所述处理器903,具体用于使得所述装置执行以下操作:若确定在第三系统时间执行seek操作、且所述播放器在第三时间段内处于播放暂停状态,则确定所述流媒体在所述第一系统时间的实际播放时长为所述第四播放时长;其中,所述seek操作用于将所述流媒体的已播放时长调至第四播放时长;所述第三时间段为所述第三系统时间与所述第一系统时间之间的时间区间。

在一种可选的实现方式中,所述处理器903,具体用于使得所述装置执行以下操作:若确定在第三系统时间执行seek操作、且所述播放器在第四时间段内处于播放暂停状态、在第五时间段内处于正常播放状态,则确定所述流媒体在所述第一系统时间的实际播放时长为所述第四播放时长与第五播放时长之和;其中,所述第五播放时长为播放速率与所述第五时间段对应的时长之间的乘积。

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

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

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

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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