视频分段加载方法和装置与流程

文档序号:12068787阅读:1277来源:国知局
视频分段加载方法和装置与流程

本发明涉及计算机技术领域,具体而言,涉及一种视频分段加载方法和装置。



背景技术:

现有的例如html5 video(一种通过网页播放视频的技术)等视频播放器是只有当整个视频全部加载完成才能进行播放,如果一个视频很大,用户网络速度如果很慢,可能需要等待很长时间才能正常播放,这样极有可能用户因为无法忍受较长时间的加载而放弃观看视频。所以视频网站为了改善用户观看体验,在播放视频时对视频进行分段加载而不是一次加载整个完整视频,这样用户不需要等待很长时间就可以观看视频,在观看的过程中加载即将播放的视频片段。

目前对视频分段都是采用固定分段的方式,即在制作视频时就将视频分成若干段,并将分段信息(分段时长、分段大小、分段地址等)保存到服务器,用户端播放器在进行视频播放时首先获取视频的分段信息,然后根据播放的进度获取分段视频进行播放。

虽然上述固定的视频分段方式能够避免从服务器下载不看的视频内容,节省网络资源,但由于视频分段是在制作视频时已经确定,当用户的网络状况较差时还是会需要较长时间的等待时间,而且由于在制作视频时确定分段信心,因此需要在服务器中保存分段信息,在用户端播放视频时也无法在调整分段信息。因此需要一种更加智能的视频分段加载方式,来解决上述问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分 地解决上述问题的视频分段加载方法和装置。

依据本发明的一个方面,提供了一种视频分段加载方法,包括:根据加载第一段视频的时间信息,以及所述第一段视频的长度,计算加载所述第一段视频时的加载速度;所述第一段视频由服务器从预设视频上切分得到;在播放所述第一段视频至预设长度时,根据所述第一段视频的剩余长度以及所述第一段视频的加载速度,计算待向所述服务器请求加载的第二段视频的长度;根据所述第二段视频的长度,向所述服务器发出加载所述第二段视频的请求;加载所述服务器发送的从所述预设视频上切分得到的所述第二段视频以用于播放。

可选地,前述的视频分段加载方法,根据所述第二段视频的长度,向所述服务器发出加载所述第二段视频的请求,具体包括:根据所述第一段视频的结束时间设置所述第二段视频的开始时间,根据所述第一段视频的结束时间与所述第二段视频的长度设置所述第二段视频的结束时间,并将所述第二段视频的开始时间和结束时间加入所述请求进行发送。

可选地,前述的视频分段加载方法,在根据所述第二段视频的长度,向所述服务器发出加载所述第二段视频的请求之前,还包括:将所述第二段视频的长度与预设的表示网络状况的系数的乘积,作为新的所述第二段视频的长度。

可选地,前述的视频分段加载方法,在根据所述第二段视频的长度,向所述服务器发出加载所述第二段视频的请求之前,还包括:在所述第二段视频的长度小于预设第一长度时,将所述第二段视频的长度修改为所述预设第一长度。

可选地,前述的视频分段加载方法,还包括:在未加载所述预设视频的任何部分时,向所述服务器发出加载所述预设视频中的预设第二长度的一段视频的请求。

依据本发明的另一方面,还提供了一种视频分段加载装置,包括:加载速度计算模块,用于根据加载第一段视频的时间信息,以及所述第一段视频的长度,计算加载所述第一段视频时的加载速度;所述第一段视频由服务器从预设视频上切分得到;视频长度计算模块,用于在播放所述第一段视频至 预设长度时,根据所述第一段视频的剩余长度以及所述第一段视频的加载速度,计算待向所述服务器请求加载的第二段视频的长度;请求模块,用于根据所述第二段视频的长度,向所述服务器发出加载所述第二段视频的请求;加载模块,用于加载所述服务器发送的从所述预设视频上切分得到的所述第二段视频以用于播放。

可选地,前述的视频分段加载装置,所述请求模块根据所述第一段视频的结束时间设置所述第二段视频的开始时间,根据所述第一段视频的结束时间与所述第二段视频的长度设置所述第二段视频的结束时间,并将所述第二段视频的开始时间和结束时间加入所述请求进行发送。

可选地,前述的视频分段加载装置,所述视频长度计算模块还将所述第二段视频的长度与预设的表示网络状况的系数的乘积,作为新的所述第二段视频的长度。

可选地,前述的视频分段加载装置,所述视频长度计算模块还在所述第二段视频的长度小于预设第一长度时,将所述第二段视频的长度修改为所述预设第一长度。

可选地,前述的视频分段加载装置,所述请求模块还在未加载所述预设视频的任何部分时,向所述服务器发出加载所述预设视频中的预设第二长度的一段视频的请求。

根据以上技术方案,本发明的视频分段加载方法和装置至少具有以下优点:

根据本发明的技术方案,能够根据实时网络状态自动调整下载视频段的长度,无论是终端还是服务器均不需要保存视频分段信息,也不需要预先对视频进行分段,减轻了服务器的负担,也提升了用户体验。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明的一个实施例的视频分段加载方法的流程图;

图2示出了根据本发明的一个实施例的视频分段加载方法的流程图;

图3示出了根据本发明的一个实施例的视频分段加载方法的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

如图1所示,本发明的一个实施例中提供了一种视频分段加载方法,包括:

步骤110,根据加载第一段视频的时间信息,以及第一段视频的长度,计算加载第一段视频时的加载速度;第一段视频由服务器从预设视频上切分得到。第一段视频的时间信息可以包括加载第一段视频的开始请求时间和加载完成时间,由此可以根据第一段视频的时间信息计算得到加载第一段视频的耗时时间。在本实施例中,第一段视频的数量可以是一个也可以是多个。根据本实施例的技术方案,计算视频加载速度的原理在于:当播放器用户端向服务器发出请求以获取视频片段时,记录开始请求时间ts1,当该分段视频加载完成后记录一个时间te1,使用te1-ts1可以得到加载该段视频的耗时时间为t1;该段视频的长度为L1,那么就可以得到t1秒内获取了L1秒长度的视频,这样大概可以估算出每秒加载的视频长度为L1/t1,例如如果获取20秒的视频花费了5秒钟,那么可以简单的认为每秒钟该用户的网速可以为用户获取4秒的视频内容。

步骤120,在播放第一段视频至预设长度时,根据第一段视频的剩余长度 以及第一段视频的加载速度,计算待向服务器请求加载的第二段视频的长度。第一段视频与第二段视频是预设视频中相互邻接的两个视频段,且第一视频段的结束时间与第二视频段的开始时间相同。在本实施例中,在第一段视频播放过程中,当视频播放到该段视频长度的50%时(该值可以调整),开始加载下一段视频。由于还剩余50%的视频未播放,假如第一段视频的长度为20秒钟,则剩余视频大概可以播放10秒钟;因为每秒大概可以获取4秒的视频,那么在接下来的播放时间内大概用户获取40秒长度的视频。当然如果视频的总长度小于结束位置,结束位置为视频总长度的位置。

预设长度除了可以为各视频段时长的设定比例外,还可以是各视频段中的设定长度(例如该视频段中的第10秒)或设定帧数(例如该视频段中的第120帧)等。

步骤130,根据第二段视频的长度,向服务器发出加载第二段视频的请求。

步骤140,加载服务器发送的从预设视频上切分得到的第二段视频以用于播放。本实施例的技术方案可以循环地执行,直至整个视频加载完成。例如,视频播放器获取第二段视频后,记录开始时间ts2和视频加载完成的时间te2,从而计算出加载第二段L2=32秒视频的时间t2,比如t2=6s,根据第一段视频的加载速度和第二段视频的加载速度,计算出平均每秒钟可以加载的视频长度,(L1+L2)/(t1+t2)=(20+32)/(5+6)=4.7。这样当第二段视频播放到该段视频的50%时,开始加载第三段视频。如果视频的总长度小于结束位置,结束位置为视频总长度的位置。可见按照上述计算步骤,能够依次计算下一个将要播放的视频片段的长度,直到整个视频播放完成。

如图2所示,本发明的一个实施例中提供了一种视频分段加载方法,包括:

步骤210,在未加载预设视频的任何部分时,向服务器发出加载预设视频中的预设第二长度的一段视频的请求。获取的该段视频可作为首个第一段视频。以html5video视频播放器为例,当用户打开一个页面进行视频观看时,页面上的html5video视频播放器先从服务器获取整个视频的信息,包括视频名称、视频总长度、视频大小、视频url(地址)等。如果一个视频很小,比 如小于1M,就没有必要对视频进行分段播放;如果视频相对较大,就需要对视频进行分段。具体地,当需要加载第一个分段时,可以固定加载一个长度,例如20秒钟。这样在设置视频播放器的url时需要带上开始位置0和结束位置20这两个参数。例如该视频的url为www.videourl.com/12345,发送的获取视频的请求中包含第一个分段的url为www.videourl.com/12345?st=0&et=20,其中st=20表示开始位置为0秒,et=20表示结束位置为20秒。

服务器接收到包含www.videourl.com/12345?st=0&et=20的请求后,根据www.videourl.com/12345可以知道原视频的所在位置,然后服务器对该视频进行切割生成一个0~20秒的临时视频,并将数据流返回给播放器;当数据流返回完成之后,删除该临时视频;或者在切割视频时不将生成的临时视频保存到硬盘上,而是直接保存到内存中,服务器返回视频流时直接使用内存中的数据,服务器返回完成后清除数据。

步骤220,根据加载第一段视频的时间信息,以及第一段视频的长度,计算加载第一段视频时的加载速度;第一段视频由服务器从预设视频上切分得到。

步骤230,在播放第一段视频至预设长度时,根据第一段视频的剩余长度以及第一段视频的加载速度,计算待向服务器请求加载的第二段视频的长度。

步骤240,将第二段视频的长度与预设的表示网络状况的系数的乘积,作为新的第二段视频的长度。结合前述的实施例可知,如果计算出的第二段视频的长度为40秒,此时再考虑一些其他网络不稳定因素,给该长度乘以一个系数,例如80%,那么第二段视频的时间长度是40×0.8=32,那么第二段视频的url为www.videourl.com/12345?st=20&et=52。

与前述实施例相同地,在根据第二段视频的加载速度来加载新的视频时,当第二段视频播放到该段视频的50%,计算得到需加载的第三段视频长度为4.7×32×0.5×0.8=60,这样第三段视频的长度为60秒,开始位置为20+32=52,结束位置为52+60=112,请求的url为www.videourl.com/12345?st=52&et=112。

步骤250,在第二段视频的长度小于预设第一长度时,将第二段视频的长度修改为预设第一长度。根据本实施例的技术方案,如果某个用户的网速非常慢,计算出来的即将加载的第二段视频长度可能很小,这样为了降低服务 器的压力,当加载长度小于某个值时,应该取另一个较大的固定值。例如每次加载长度不能小于10秒,如果计算出来的加载长度为8秒,需要使用10秒进行加载。

步骤260,根据第一段视频的结束时间设置第二段视频的开始时间,根据第一段视频的结束时间与第二段视频的长度设置第二段视频的结束时间,并将第二段视频的开始时间和结束时间加入请求进行发送。

步骤270,加载服务器发送的从预设视频上切分得到的第二段视频以用于播放。

如图3所示,本发明的一个实施例中提供了一种视频分段加载装置,包括:

加载速度计算模块310,根据加载第一段视频的时间信息,以及第一段视频的长度,计算加载第一段视频时的加载速度;第一段视频由服务器从预设视频上切分得到。第一段视频的时间信息可以包括加载第一段视频的开始请求时间和加载完成时间,由此可以根据第一段视频的时间信息计算得到加载第一段视频的耗时时间。在本实施例中,第一段视频的数量可以是一个也可以是多个。根据本实施例的技术方案,计算视频加载速度的原理在于:当播放器用户端向服务器发出请求以获取视频片段时,记录开始请求时间ts1,当该分段视频加载完成后记录一个时间te1,使用te1-ts1可以得到加载该段视频的耗时时间为t1;该段视频的长度为L1,那么就可以得到t1秒内获取了L1秒长度的视频,这样大概可以估算出每秒加载的视频长度为L1/t1,例如如果获取20秒的视频花费了5秒钟,那么可以简单的认为每秒钟该用户的网速可以为用户获取4秒的视频内容。

视频长度计算模块320,在播放第一段视频至预设长度时,根据第一段视频的剩余长度以及第一段视频的加载速度,计算待向服务器请求加载的第二段视频的长度。在本实施例中,在第一段视频播放过程中,当视频播放到该段视频长度的50%时(该值可以调整),开始加载下一段视频。由于还剩余50%的视频未播放,假如第一段视频的长度为20秒钟,则剩余视频大概可以播放10秒钟;因为每秒大概可以获取4秒的视频,那么在接下来的播放时间 内大概用户获取40秒长度的视频。当然如果视频的总长度小于结束位置,结束位置为视频总长度的位置。

请求模块330,根据第二段视频的长度,向服务器发出加载第二段视频的请求。

加载模块340,加载服务器发送的从预设视频上切分得到的第二段视频以用于播放。本实施例的技术方案可以循环地执行,直至整个视频加载完成。例如,视频播放器获取第二段视频后,记录开始时间ts2和视频加载完成的时间te2,从而计算出加载第二段L2=32秒视频的时间t2,比如t2=6s,根据第一段视频的加载速度和第二段视频的加载速度,计算出平均每秒钟可以加载的视频长度,(L1+L2)/(t1+t2)=(20+32)/(5+6)=4.7。这样当第二段视频播放到该段视频的50%是,开始加载第三段视频。如果视频的总长度小于结束位置,结束位置为视频总长度的位置。可见按照上述计算步骤,能够依次计算下一个将要播放的视频片段的长度,直到整个视频播放完成。

如图3所示,本发明的一个实施例中提供了一种视频分段加载装置,包括:

加载模块340,在未加载预设视频的任何部分时,向服务器发出加载预设视频中的预设第二长度的一段视频的请求。获取的该段视频可作为首个第一段视频。以html5video视频播放器为例,当用户打开一个页面进行视频观看时,页面上的html5video视频播放器先从服务器获取整个视频的信息,包括视频名称、视频总长度、视频大小、视频url(地址)等。如果一个视频很小,比如小于1M,就没有必要对视频进行分段播放;如果视频相对较大,就需要对视频进行分段。具体地,当需要加载第一个分段时,可以固定加载一个长度,例如20秒钟。这样在设置视频播放器的url时需要带上开始位置0和结束位置20这两个参数。例如该视频的url为www.videourl.com/12345,发送的获取视频的请求中包含第一个分段的url为www.videourl.com/12345?st=0&et=20,其中st=20表示开始位置为0秒,et=20表示结束位置为20秒。

服务器接收到包含www.videourl.com/12345?st=0&et=20的请求后,根据 www.videourl.com/12345可以知道原视频的所在位置,然后服务器对该视频进行切割生成一个0~20秒的临时视频,并将数据流返回给播放器;当数据流返回完成之后,删除该临时视频;或者在切割视频时不将生成的临时视频保存到硬盘上,而是直接保存到内存中,服务器返回视频流时直接使用内存中的数据,服务器返回完成后清除数据。

加载速度计算模块310,根据加载第一段视频的时间信息,以及第一段视频的长度,计算加载第一段视频时的加载速度;第一段视频由服务器从预设视频上切分得到。

视频长度计算模块320,在播放第一段视频至预设长度时,根据第一段视频的剩余长度以及第一段视频的加载速度,计算待向服务器请求加载的第二段视频的长度。

视频长度计算模块320,将第二段视频的长度与预设的表示网络状况的系数的乘积,作为新的第二段视频的长度。结合前述的实施例可知,如果计算出的第二段视频的长度为40秒,此时再考虑一些其他网络不稳定因素,给该长度乘以一个系数,例如80%,那么第二段视频的时间长度是40×0.8=32,那么第二段视频的url为www.videourl.com/12345?st=20&et=52。

与前述实施例相同地,在根据第二段视频的加载速度来加载新的视频时,当第二段视频播放到该段视频的50%,计算得到需加载的第三段视频长度为4.7×32×0.5×0.8=60,这样第三段视频的长度为60秒,开始位置为20+32=52,结束位置为52+60=112,请求的url为www.videourl.com/12345?st=52&et=112。

视频长度计算模块320,在第二段视频的长度小于预设第一长度时,将第二段视频的长度修改为预设第一长度。根据本实施例的技术方案,如果某个用户的网速非常慢,计算出来的即将加载的第二段视频长度可能很小,这样为了降低服务器的压力,当加载长度小于某个值时,应该取另一个较大的固定值。例如每次加载长度不能小于10秒,如果计算出来的加载长度为8秒,需要使用10秒进行加载。

请求模块330,根据第一段视频的结束时间设置第二段视频的开始时间,根据第一段视频的结束时间与第二段视频的长度设置第二段视频的结束时间,并将第二段视频的开始时间和结束时间加入请求进行发送。

加载模块340,加载服务器发送的从预设视频上切分得到的第二段视频以用于播放。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它 实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的视频分段加载装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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