视频播放方法、装置、终端及存储介质与流程

文档序号:25992942发布日期:2021-07-23 21:05阅读:68来源:国知局
视频播放方法、装置、终端及存储介质与流程

本申请实施例涉及计算机技术领域,特别涉及一种视频播放方法、装置、终端及存储介质。



背景技术:

目前,视频作为一种新的传播媒介,越来越多的出现在终端(例如手机)中的各种应用上。对于待播放的视频,终端从视频服务器中获取该视频的视频数据,由于视频数据较大,因此传输视频数据所需的时间较长。相应的,在用户触发终端播放一个视频时,需要对该视频进行解码和渲染,在渲染出该视频的第一帧视频时,用户才能在终端的显示界面看到该视频的播放,以实现视频的起播。



技术实现要素:

本申请实施例提供了一种视频播放方法、装置、终端及存储介质,可以提高视频播放的效率。所述技术方案如下:

一方面,提供了一种视频播放方法,所述方法包括:

在视频资源被浏览的过程中,通过第一进程,从视频服务器中获取待播放的多个第一视频的目标视频数据,对所述多个第一视频的目标视频数据进行缓存,任一第一视频的目标视频数据为所述任一第一视频的前n帧的视频数据,所述n为不小于1的整数;

响应于所述多个第一视频中的目标视频的第一播放请求,通过第二进程,获取已缓存的所述目标视频的目标视频数据,基于所述目标视频数据,播放所述目标视频的前n帧视频;

其中,所述第一进程和所述第二进程为不同的进程。

另一方面,提供了一种视频播放装置,所述装置包括:

缓存模块,用于在视频资源被浏览的过程中,通过第一进程,从视频服务器中获取待播放的多个第一视频的目标视频数据,对所述多个第一视频的目标视频数据进行缓存,任一第一视频的目标视频数据为所述任一第一视频的前n帧的视频数据,所述n为不小于1的整数;

第一播放模块,用于响应于所述多个第一视频中的目标视频的第一播放请求,通过第二进程,获取已缓存的所述目标视频的目标视频数据,基于所述目标视频数据,播放所述目标视频的前n帧视频;其中,所述第一进程和所述第二进程为不同的进程。

另一方面,提供了一种终端,所述终端包括处理器和存储器;所述存储器存储有至少一条程序代码,所述至少一条程序代码用于被所述处理器执行以实现如上述方面所述的视频播放方法。

另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有至少一条程序代码,所述至少一条程序代码用于被处理器执行以实现如上述方面所述的视频播放方法。

另一方面,提供了一种计算机程序产品,当所述计算机程序产品中的程序代码由终端的处理器执行时,使得所述终端能够执行如上述方面所述的视频播放方法。

在本申请实施例中,在视频播放之前,通过第一进程从视频服务器中获取待播放视频的视频数据以及缓存该视频数据,在需要播放目标视频时,通过第二进程获取已缓存的该目标视频的数据,以实现对目标视频的起播。在上述方案中,由于视频数据的缓存和视频的播放分别通过不同的进程来实现,这样,能够在视频播放之前预先缓存视频数据,从而在播放视频时无需用户等待缓存即可立即播放,进而提高了视频播放的效率。

附图说明

图1示出了本申请一个示例性实施例提供的实施环境的示意图;

图2示出了本申请一个示例性实施例提供的终端的结构示意图;

图3示出了本申请一个示例性实施例示出的视频播放方法的流程图;

图4示出了本申请一个示例性实施例示出的视频播放方法的示意图;

图5示出了本申请一个示例性实施例示出的视频播放方法的示意图;

图6示出了本申请一个示例性实施例示出的视频播放方法的示意图;

图7示出了本申请一个示例性实施例示出的视频播放方法的示意图;

图8示出了本申请一个示例性实施例示出的视频播放方法的流程图;

图9示出了本申请一个示例性实施例示出的视频播放方法的示意图;

图10示出了本申请一个示例性实施例示出的视频播放方法的示意图;

图11示出了本申请一个示例性实施例示出的视频播放装置的结构框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

请参考图1,其示出了本申请一个示例性实施例提供的实施环境的示意图。该实施环境包括终端100和服务器200。终端100分别与服务器200通过无线或者有线网络连接。

终端100上安装有目标应用,且终端100能够通过该目标应用实现例如数据交互等功能。在一些实施例中,该目标应用为终端100操作系统中的应用,或者为第三方提供的应用。该目标应用不仅具有视频播放功能,还具有视频下载功能。

在一些实施例中,该目标应用为用于访问网站的应用,例如,目标应用可以为浏览器或者包含网页视图(webview)控件的任一应用。在另一些实施例中,该目标应用可以为能够提供视频播放功能的任一应用。例如,该目标应用可以为视频应用、社交应用等。

在本申请实施例中,终端100用于从服务器200中获取视频的视频数据,以及在目标应用中,基于该视频数据对视频进行播放。

服务器200,用于为终端100提供后台服务。在一些实施例中,服务器200,用于为终端100中待播放的视频提供视频数据。其中,服务器200可以是一台服务器,或者若干台服务器组成的服务器集群,或者一个云计算服务中心。在本申请实施例中,以服务器200为视频服务器为例进行说明。

在本申请实施例中,在运行目标应用的过程中,若用户通过终端100浏览目标应用中的视频资源,则在播放任一视频之前,终端100与服务器200进行数据交互,从服务器200中获取该视频的视频数据,并缓存在本地,在用户触发播放该视频时,直接从缓存的视频数据中获取该视频的视频数据,以及对该视频数据进行解码和渲染,进而实现该视频的起播。

本申请实施例提供的视频播放方法,能够应用在视频浏览场景中。以目标应用为浏览器为例进行说明。终端在浏览器的显示界面中显示视频资源。在该视频资源被浏览的过程中,对于待播放的视频,在播放该视频之前,终端通过本申请实施例提供的视频播放方法,从视频服务器中获取该视频的视频数据,在用户触发终端播放该视频时,终端基于已缓存的视频数据,对该视频进行播放。

需要说明的一点是,以上应用场景仅是示例性说明,并不对视频浏览场景造成限制,本申请除了应用在以上场景外,还能够应用在其他任一视频播放的场景中。

请参考图2,其示出了本申请一个示例性实施例提供的终端100的结构示意图。终端100可以是智能手机、平板电脑等具有视频播放功能的终端。本申请中的终端100可以包括一个或多个如下部件:处理器110、存储器120、显示屏130。

处理器110可以包括一个或者多个处理核心。处理器110利用各种接口和线路连接整个终端100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行终端100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器110可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)、神经网络处理器(neural-networkprocessingunit,npu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏130所需要显示的内容的渲染和绘制;npu用于实现人工智能(artificialintelligence,ai)功能;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块芯片进行实现。

存储器120可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory,rom)。可选地,该存储器120包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储根据终端100的使用所创建的数据(比如音频数据、电话本)等。

显示屏130是用于显示用户界面的显示组件。可选的,该显示屏130为具有触控功能的显示屏,通过触控功能,用户可以使用手指、触摸笔等任何适合的物体在显示屏130上进行触控操作。

显示屏130通常设置在终端100的前面板。显示屏130可被设计成为全面屏、曲面屏、异型屏、双面屏或折叠屏。显示屏130还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合等,本实施例对此不加以限定。

除此之外,本领域技术人员可以理解,上述附图所示出的终端100的结构并不构成对终端100的限定,终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,终端100中还包括麦克风、扬声器、射频电路、输入单元、传感器、音频电路、无线保真(wirelessfidelity,wi-fi)模块、电源、蓝牙模块等部件,在此不再赘述。

请参考图3,其示出了本申请一个示例性实施例示出的视频播放方法的流程图。本申请实施例中的执行主体可以为终端100,也可以为终端100中的处理器110或终端100中的操作系统,本实施例以执行主体为终端100为例进行说明。在本申请实施例中,以对目标视频进行起播为例进行说明。该方法包括:

步骤301:在视频资源被浏览的过程中,终端确定待播放的多个第二视频的数据获取任务,该数据获取任务用于从视频服务器中获取视频数据。

其中,该第二视频为该视频资源中待播放的视频。该视频资源由终端中安装的目标应用提供;例如,该目标应用为视频应用,该视频应用的主界面显示有视频资源。在该视频资源被浏览的过程中,终端从该视频资源中确定待播放的多个第二视频。

在一些实施例中,终端从该视频资源中确定待播放的多个第二视频的实现方式可以为:终端将该视频资源中从当前的显示界面中显示的第一个视频开始的预设数量个待播放的视频作为第二视频。

需要说明的一点是,该预设数量大于终端的显示界面能够同时显示的视频的数量。本申请对该预设数量不做具体限定;例如,终端的显示界面能够同时显示3个视频,该预设数量大于3,即该预设数量可以为5、10等。

在一些实施例中,用户可以通过终端对视频资源进行浏览。在视频资源被浏览之前,用户触发终端显示视频资源。

在该实施例中,用户触发终端显示视频资源的过程可以为:用户通过触发终端运行该目标应用;在终端运行该目标应用的过程中,用户可以触发终端在显示界面中显示该目标应用提供的视频资源。

其中,在视频资源被浏览的过程中,用户可以触发终端更新显示该视频资源。相应的,终端更新显示视频资源的过程包括:用户通过目标动作触发终端更新当前显示界面中显示的视频资源。

本申请实施例对该目标动作的设置不作具体限定;例如,以终端以列表的形式显示视频资源为例,该目标动作可以为上下滑动显示界面。

在一种可能的实现方式中,终端确定待播放的多个第二视频的数据获取任务的实现方式可以为:对于每个第二视频,终端响应于该第二视频的数据获取请求,生成该第二视频的数据获取任务。

其中,该数据获取请求可以为预加载(preload)请求。在该实施例中,终端生成该数据获取请求的实现方式可以为:在视频资源被浏览的过程中,在确定待播放的第二视频之后,终端通过生成该第二视频的数据获取请求。

在该实施例中,终端可以通过创建进程来生成数据获取请求。在本申请实施例中,以目标应用为浏览器为例进行说明,终端在运行浏览器的过程中,运行浏览器的主进程。在视频资源被浏览的过程中,该主进程用于在检测到视频资源被浏览时,确定待播放的第二视频,生成第二视频的数据获取请求;终端创建第一进程,相应的,该主进程向第一进程发送该数据获取请求;该第一进程接收该第二视频的数据获取请求。

其中,该第一进程还用于执行数据获取任务,也即从视频服务器中获取第二视频的前n帧的视频数据,以及将该视频数据进行缓存。其中,n为不小于1的整数。

在该实施例中,终端还创建第二进程;在需要播放视频时,终端通过第二进程播放视频。该第一进程和第二进程为不同的进程。

例如,以第一进程为代理服务器,第二进程为视频播放器为例,参见图4,浏览器向代理服务器发送数据获取请求,代理服务器与视频服务器交互,实现视频数据的获取,若浏览器向视频播放器发送播放请求,视频播放器从代理服务器处获取视频数据,对视频进行播放。

在本申请实施例中,由于视频资源中存在多个第二视频,因此第一进程可能接连接收到多个第二视频的数据获取请求。然而该多个第二视频可能并非均是用户意图播放的视频,因此,终端可以对该多个第二视频的数据获取任务进行筛选,得到多个第一视频的数据获取任务,相应的,在步骤301之后,终端继续执行步骤302操作。

步骤302:终端从该多个第二视频的数据获取任务中选择多个第一视频的数据获取任务。

其中,第一视频可以为当前显示界面中待播放的第二视频,或者,第一视频也可以为任务类别为下载的第二视频;相应的,该步骤的实现方式可以由以下几种实现方式来实现。

在一种可能的实现方式中,任一第二视频的数据获取任务携带该任一第二视频的视频标识,相应的,该步骤的实现方式可以为:终端从该多个第二视频的视频标识中,选择当前显示界面中待播放的多个第一视频的视频标识;从该多个第二视频的数据获取任务中,选择该多个第一视频的视频标识对应的数据获取任务。

在该实现方式中,终端预先确定显示个数,该显示个数为终端的显示界面中能够同时显示的第二视频的播放入口的个数。例如,该显示个数可以为3、4、5。

其中,若第二视频的数量较多,则终端可以将当前显示界面中待播放的第二视频作为第一视频,这样,终端只需执行少数视频的数据获取任务,从而减少数据获取的工作量。

在本申请实施例中,由于每个视频的数据获取任务携带有视频标识,从而能够从接收到的多个数据获取任务中,选择出当前显示界面中待播放的第一视频的视频标识对应的数据获取任务,实现了对多个数据获取任务的筛选,即仅针对当前显示界面中待播放的视频进行数据获取,减少了对播放可能性较低的视频的数据获取,进而节省了终端的处理器资源,提高了数据获取的效率。

在另一种可能的实现方式中,对于用户而言,浏览视频资源的目的是播放视频,也即对于终端而言,视频播放的优先级高于视频下载的优先级,则终端可以根据任务类别对数据获取任务进行区分;相应的,该步骤的实现方式可以为包括:终端确定每个第二视频的数据获取任务的任务类别;从该多个第二视频的数据获取任务中,选择该任务类别为下载的多个第一视频的数据获取任务。

其中,该任务类别至少包括下载和播放等中的任一个。对于未播放的第二视频,其数据获取任务的任务类别可以为下载,即下载视频数据;或者,在用户触发终端播放该第二视频时,其数据获取任务的任务类别也可以为播放,即播放第二视频。

在本申请实施例中,由于将任务类别为下载的第二视频作为第一视频,进而确定出第一视频的数据获取任务,为后续分别执行不同的数据获取任务提供依据。

步骤303:终端通过第一进程,执行该多个第一视频的数据获取任务,得到该多个第一视频的目标视频数据,任一第一视频的目标视频数据为该任一第一视频的前n帧的视频数据,该n为不小于1的整数。

其中,第一进程通过接口与视频服务器进行交互,该接口可以为httpclient(一种实现类)。在该步骤中,对于每个第一视频,终端确定该第一视频的第一索引信息;通过第一进程,基于该第一索引信息从视频服务器中获取该目标视频数据。

其中,由于该目标视频数据为该第一视频的起播视频数据,相应的,该第一索引信息包括起播位置和起播时长。在一些实施例中,终端通过第一进程,基于该第一索引信息从视频服务器中获取该目标视频数据的实现方式可以为:终端通过第一进程,向视频服务器发送数据获取请求,该数据获取请求携带有第一索引信息;视频服务器接收该数据获取请求,以该起播位置为获取起点,以该起播时长为获取长度,从该第一视频对应的视频数据中,获取该目标视频数据,向终端发送该目标视频数据;终端通过第一进程接收该目标视频数据。

在一种可能的实现方式中,终端确定该第一索引信息,也即该起播位置和该起播时长的实现方式可以为:终端确定该第一视频的第一帧为该起播位置;基于该第一视频的视频时长确定该起播时长。

在该实现方式中,终端基于该第一视频的视频时长确定该起播时长的实现方式可以为:终端将预设比例和第一视频的视频时长的乘积作为该起播时长。

其中,该预设比例为视频时长与起播时长之间的比例。终端可以事先设置该预设比例。本申请对该预设比例不作具体限定;例如,该预设比例可以为1:100、2:50等。

在该实施例中,由于数据获取任务的任务类别包括下载和播放,则终端可以通过不同的线程来分别执行不同任务类别的数据获取任务,以提高任务执行的效率。相应的,该步骤的实现方式可以包括:终端从该第一进程对应的线程池中选择第一线程,通过该第一线程,执行该任务类别为下载的多个第一视频的数据获取任务,得到该多个第一视频的目标视频数据。

其中,终端为第一进程创建了线程池,该线程池至少包括第一线程和第二线程。在一种可能的实现方式中,对于第一线程待执行的数据获取任务,终端限制该数据获取任务的数量不超过预设数量,以节省下载资源。本申请对该预设数量的设置不作具体限定;例如,该预设数量可以为2、3。

若当前终端确定的多个第一视频的数据获取任务的数量和第一线程待执行的数据获取任务的数量之和大于预设数量,则终端取消该待执行的数据获取任务,将第一线程待执行的数据获取任务更新为该多个第一视频的数据获取任务。

需要说明的一点是,若该多个第一视频的数据获取任务的数量大于该预设数量,则终端按照每个数据获取任务的生成时间确定距离当前时间最近的预设数量个数据获取任务,将该预设数量个数据获取任务作为该第一线程待执行的数据获取任务。

在该实现方式中,终端执行任务类别为播放的数据获取任务的实现方式可以包括:终端从该第一对应的线程池中选择第二线程,通过该第二线程,执行该多个第二视频的数据获取任务中该任务类别为播放的数据获取任务。

其中,对于任务类别为的数据获取任务对应的第一视频,终端通过第二线程执行该数据获取任务,得到已缓存的第一视频的目标视频数据。

在本申请实施例中,通过由不同的线程来分别执行任务类别为下载和播放的数据获取任务,使得第一进程中的多个数据获取任务能够有序进行,从而提高任务执行效率。

在本申请实施例中,每个线程对应一个请求队列,也即是终端可以通过不同的请求队列来存放不同请求类别的数据获取请求。

其中,由于不同任务类别的数据获取任务对应不同请求类别的数据获取请求,相应的,数据获取请求包括下载请求和播放请求。

在一些实施例中,终端在第一进程中创建了第一请求队列和第二请求队列。该第一请求队列用于存储视频的下载请求,该第二请求队列用于存储视频的播放请求。

其中,第一请求队列的优先级低于第二请求队列的优先级,也即是该第一请求队列为低优先级队列(lowpriorityqueue),该第二请求队列为高优先级队列(hightpriorityqueue)。

例如,参见图5,将下载请求l_0存储在低优先级队列中,将播放请求h_0、h_1、h_2存储在高优先级队列中,得到了第一进程对应的多个数据获取请求。

步骤304:终端对该多个第一视频的目标视频数据进行缓存。

其中,由于每个视频在播放时,需要通过视频链接与视频服务器连接,因此,在该步骤中,终端也需要缓存该第一视频的视频链接;相应的,该步骤的实现方式可以为:终端对于每个第一视频,基于该第一视频的下载链接,生成该第一视频的视频链接,该视频链接用于该第二进程获取已缓存的目标视频数据;以该下载链接为键值,缓存该第一视频的视频链接;以该视频链接为键值,缓存该第一视频的目标视频数据。

其中,每个第一视频均具有相应的下载链接,该下载链接可以为统一资源定位符(uniformresourcelocator,url)。

在该实现方式中,终端将该第一视频的下载连接进行改进,得到用于第二进行获取视频数据的视频链接,对于每个视频链接,终端将该目标视频数据以字节(byte)数据的形式缓存在内存中的缓冲映射表(buffermap)中。

参见图6,第一进程对第一视频的视频链接和目标视频数据进行了缓存,得到了链接缓存和内存缓存。链接缓存中包括链接1、链接2……链接m;内存缓存中包括缓存数据1、缓存数据2……缓存数据m。

在一种可能的实现方式中,终端为目标视频数据的缓存设置了缓存策略。该缓存策略可以为最近最少使用算法(leastrecentlyused,lru)。也即是,若已缓存的视频链接的数量大于预设数量,或者已缓存的目标视频数据占用的内存空间大于预设阈值,则终端将已缓存的目标视频数据中最早缓存的视频数据删除,已节省内存的存储空间。

在本申请实施例中,通过基于第一视频的下载链接对第一视频的目标视频数据进行缓存,使得第一视频的视频链接能够唯一标识该第一视频,进而后续在从已缓存的视频数据中获取需要的视频数据时,能够直接基于视频链接作为键值定位到需要的视频数据,进而节省了视频数据的查找效率。

参见图7,终端对多个第二视频的数据获取任务进行一级过滤,得到多个第一视频的数据获取任务,再进行二级过滤,得到任务类别为下载的数据获取任务,对于每个第一视频,进行视频链接的缓存,从视频服务器中确定核心播放数据,也即是目标视频数据,执行数据获取任务,将该目标视频数据写入一级缓存,也即缓存在内存中,在该第一视频的全部视频数据下载完成之后,将该全部视频数据写入二级缓存,也即以文件的形式进行缓存。

步骤305:终端响应于该多个第一视频中的目标视频的第一播放请求,通过第二进程,获取已缓存的该目标视频的目标视频数据,其中,该第一进程和该第二进程为不同的进程。

其中,对于用户想要播放的目标视频,用户可以通过终端触发该目标视频的播放入口,从而终端确定接收到该目标视频的第一播放请求。若该目标视频为该多个第一视频中的视频,则终端直接从已缓存的目标视频数据中,确定目标视频的目标视频数据。

在一些实施例中,该步骤的实现方式可以为:终端通过第二进程向第一进程发送播放请求,该播放请求携带有目标视频的第二索引信息;终端通过第一进程接收该播放请求,从已缓存的目标视频数据中确定该第二索引信息对应的目标视频数据。

其中,该第二索引信息携带有视频标识。相应的,终端通过第一进程从已缓存的目标视频数据中确定该第二索引信息对应的目标视频数据的实现方式可以为:终端通过第一进程基于该视频标识确定该目标视频的视频链接,从该已缓存的目标视频数据中确定该视频链接对应的目标视频数据。

步骤306:终端基于该目标视频数据,播放该目标视频的前n帧视频。

其中,在第二进程得到该目标视频数据之后,播放该目标视频的前n帧视频。在一种可能的实现方式中,第二进程对该目标视频数据进行解码,在终端的显示界面中依次渲染该目标视频的前n帧视频,以实现播放该目标视频的前n帧视频。

在本申请实施例中,在视频播放之前,通过第一进程从视频服务器中获取待播放视频的视频数据以及缓存该视频数据,在需要播放目标视频时,通过第二进程获取已缓存的该目标视频的数据,以实现对目标视频的起播。在上述方案中,由于视频数据的缓存和视频的播放分别通过不同的进程来实现,这样,能够在视频播放之前预先缓存视频数据,从而在播放视频时无需用户等待缓存即可立即播放,进而提高了视频播放的效率。

请参考图8,其示出了本申请一个示例性实施例示出的视频播放方法的流程图。本申请实施例中的执行主体可以为终端100,也可以为终端100中的处理器110或终端100中的操作系统,本实施例以执行主体为终端100为例进行说明。在本申请实施例中,以在目标视频起播之后,对该目标视频进行继续播放为例进行说明。该方法包括:

步骤801:终端确定目标视频的第二播放请求,该第二播放请求携带该目标视频的待播放的帧标识。

其中,在对目标视频进行起播之后,用户可能想要继续观看该目标视频,即终端未检测到对该目标视频的停止播放的触发操作,则在该目标视频的起播之后,终端可以继续播放该目标视频的其他帧视频。相应的,终端继续获取该目标视频的其他视频数据。

在该步骤中,终端确定目标视频的第二播放请求的实现方式可以为:若未检测到该目标视频的停止播放请求,则终端通过第二进程生成第二播放请求,通过第二进程向第一进程发送该第二播放请求;第一进程接收该第二播放请求,该第二播放请求用于获取该目标视频的其他视频数据。

在本申请实施例中,终端通过第一进程接收到该第二播放请求之后,可以结合已缓存的视频数据来获取该目标视频的其他视频数据,相应的,终端继续执行步骤802-803的操作。

步骤802:响应于该目标视频的第二播放请求,若已缓存该帧标识对应的其他视频数据,则终端通过第二进程,从已缓存的该目标视频的视频文件中,获取该帧标识对应的其他视频数据。

其中,该第二播放请求还携带有该目标视频的播放位置和播放时长,在一些实施例中,该播放位置可以为帧标识,或者该播放位置也可以为播放时间戳,本申请对此不做具体限定。

在该实施例中,终端可以基于该第一视频的视频时长确定该播放时长。相应的,该步骤的实现方式可以为:终端将预设比例和第一视频的视频时长的乘积作为该播放时长。

其中,该预设比例为视频时长与播放时长之间的比例。终端可以事先设置该预设比例。本申请对该预设比例不作具体限定;例如,该预设比例可以为1:100、2:50等。

在该步骤中,由于终端分别通过第一进程进行视频数据的下载,通过第二进程进行视频的播放,则在目标视频播放的过程中,终端可以事先将该目标视频的其他视频数据缓存下来。则若已缓存的视频数据中,存在该帧标识对应的其他视频数据,则终端获取该帧标识对应的其他视频数据。

在本申请实施例中,若该目标视频除目标视频数据外的其他视频数据缓存完成,则终端可以将该目标视频数据的每帧视频数据以文件的形式缓存,得到该目标视频的视频文件。

在一种可能的实现方式中,该目标视频的视频文件的缓存过程可以为:终端将该目标视频的每帧视频数据存储到目标文件中;将该目标文件拆分为多个文件,缓存该多个文件。

在该实现方式中,对于每个目标视频,终端可以根据在缓存阶段确定的播放位置和播放时长来对目标文件进行拆分,也即拆分得到的每个文件中存储有目标视频以该播放位置开始,以长度为播放时长的视频数据。例如,拆分后的每个文件的大小可以为2m。

其中,该多个文件可以为部分缓存文件(segmentcachefile)。

在本申请实施例中,若任一视频的每帧视频数据均下载完成,则可以将该视频的每帧视频数据以视频文件的形式缓存,使得后续若播放该视频,则无需与视频服务器进行交互,直接读取该视频文件即可,进而节省了视频播放的效率。

相应的,该第一进程在对目标视频的视频数据缓存结束后,得到该目标视频的文件缓存。例如,继续参见图6,该文件缓存中包括文件1、文件2……文件m。

步骤803:若未缓存该帧标识对应的其他视频数据,则终端基于用于获取该其他视频数据的其他数据获取任务,获取该其他视频数据。

在一些实施例中,终端可以结合当前第一进程正在执行的数据获取任务来获取该其他视频数据;相应的,该步骤可以由以下任一种实现方式来实现:

在一种可能的实现方式中,若该其他数据获取任务对应的其他视频数据包括该帧标识对应的其他视频数据,则终端响应于该其他数据获取任务完成,从缓存得到的其他视频数据中获取该帧标识对应的其他视频数据。

在该实现方式中,若第一进程当前执行的其他数据获取任务能够获取该帧标识对应的其他视频数据,则终端直接等待该其他数据获取任务完成即可,也即第一进程中的用于获取其他视频数据的其他线程进入自旋的状态;若该数据获取任务执行完成,则其他线程退出自旋的状态,从缓存得到的视频数据中获取该其他视频数据。

例如,参见图9,若存在正在执行的任务1,该任务1对应播放位置和播放时长,该目标视频的视频文件对应的视频时长为文件时长,任务1当前写入的位置为写入位置。其中,若该任务1中能够获取帧标识对应的其他视频数据,则其他线程自旋;在任务1执行完成时,其他线程停止自旋,从缓存得到的内存缓存中或者文件缓存中获取该帧标识对应的视频数据。

在该实现方式,在第一进程中的其他数据获取任务能够获取该帧标识对应的其他视频数据时,无需创建新的数据获取任务,节省了线程的占用。

在另一种可能的实现方式中,若该其他数据获取任务对应的其他视频数据不包括该帧标识对应的其他视频数据,则终端关闭该其他数据获取任务,创建用于获取该帧标识对应的其他视频数据的数据获取任务,响应于该数据获取任务完成,获取缓存得到的该帧标识对应的其他视频数据。

在该实现方式中,若第一进程当前执行的数据获取任务不能获取到该帧标识对应的其他视频数据,且对于第一进程而言,当前最需执行的数据获取任务应该是用于获取该帧标识对应的其他视频数据的任务,即该数据获取任务的优先级较高,而该其他数据获取任务的优先级较低,则终端可以关闭其他数据获取任务,创建用于获取该帧标识对应的其他视频数据的数据获取任务,这样,终端无需为其他数据获取任务分配资源,进而能够提高视频播放的效率。

例如,参见图10,帧标识对应的其他视频数据为数据1,帧标识对应播放位置1,任务类别为下载的数据获取任务为任务1,新建的任务为任务2。

若该目标视频的每帧视频数据均下载完成,即目标视频预加载完成,则直接从已缓存的该目标视频的视频文件中,获取数据1;否则读取内存中缓存的数据3,若数据3包括数据1,则直接读取;若数据3不包括数据1,且若第一进程中存在任务1,而该任务1对应的数据2包括了数据1,则等待该任务1完成;否则,关闭任务1,创建任务2;若第一进程中不存在任务1,则创建任务2,等待任务2完成,获取数据1。

在本申请实施例中,由于可以结合当前第一进程正在执行的数据获取任务来获取该其他视频数据,这样,第一进程能够灵活获取该其他视频数据,进而提高了数据获取的效率。

步骤804:终端基于该其他视频数据,播放该目标视频的其他帧视频。

在该步骤中,在获取到目标视频的其他视频数据之后,终端通过第二进程播放目标视频的其他帧视频。

需要说明的一点是,由于第一进程每次从视频服务器中获取视频数据时,该视频数据的数据大小有限,则对于时长较长的目标视频,终端需要通过第一进程多次从视频服务器中获取视频数据,则终端可以重复执行步骤801-步骤804的操作,直至终端检测到对该目标视频的停止播放的触发操作。

在本申请实施例中,在视频播放之前,通过第一进程从视频服务器中获取待播放视频的视频数据以及缓存该视频数据,在需要播放目标视频时,通过第二进程获取已缓存的该目标视频的数据,以实现对目标视频的起播。在上述方案中,由于视频数据的缓存和视频的播放分别通过不同的进程来实现,这样,能够在视频播放之前预先缓存视频数据,从而在播放视频时无需用户等待缓存即可立即播放,进而提高了视频播放的效率。

请参考图11,其示出了本申请一个实施例提供的视频播放装置1100的结构框图。该视频播放装置1100可以通过软件、硬件或者两者的结合实现成为处理器110的全部或一部分。该装置1100包括:

缓存模块1101,用于在视频资源被浏览的过程中,通过第一进程,从视频服务器中获取待播放的多个第一视频的目标视频数据,对该多个第一视频的目标视频数据进行缓存,任一第一视频的目标视频数据为该任一第一视频的前n帧的视频数据,该n为不小于1的整数;

第一播放模块1102,用于响应于该多个第一视频中的目标视频的第一播放请求,通过第二进程,获取已缓存的该目标视频的目标视频数据,基于该目标视频数据,播放该目标视频的前n帧视频;其中,该第一进程和该第二进程为不同的进程。

在一种可能的实现方式中,该缓存模块1101,包括:

确定单元,用于确定待播放的多个第二视频的数据获取任务,该数据获取任务用于从该视频服务器中获取视频数据;

选择单元,用于从该多个第二视频的数据获取任务中选择该多个第一视频的数据获取任务;

获取单元,用于通过该第一进程,执行该多个第一视频的数据获取任务,得到该多个第一视频的目标视频数据。

在一种可能的实现方式中,该选择单元,用于任一第二视频的数据获取任务携带该任一第二视频的视频标识,从该多个第二视频的视频标识中,选择当前显示界面中待播放的多个第一视频的视频标识;从该多个第二视频的数据获取任务中,选择该多个第一视频的视频标识对应的数据获取任务。

在一种可能的实现方式中,该选择单元,用于确定每个第二视频的数据获取任务的任务类别;从该多个第二视频的数据获取任务中,选择该任务类别为下载的多个第一视频的数据获取任务。

在一种可能的实现方式中,该获取单元,用于从该第一进程对应的线程池中选择第一线程,通过该第一线程,执行该任务类别为下载的多个第一视频的数据获取任务,得到该多个第一视频的目标视频数据;

该装置还包括:

该获取单元,还用于从该第一对应的线程池中选择第二线程,通过该第二线程,执行该多个第二视频的数据获取任务中该任务类别为播放的数据获取任务;其中,该第一线程的优先级低于该第二线程的优先级。

在一种可能的实现方式中,该缓存模块1101,对于每个第一视频,基于该第一视频的下载链接,生成该第一视频的视频链接,该视频链接用于该第二进程获取已缓存的目标视频数据;以该下载链接为键值,缓存该第一视频的视频链接;以该视频链接为键值,缓存该第一视频的目标视频数据。

在一种可能的实现方式中,该装置还包括:

获取模块,用于响应于该目标视频的第二播放请求,通过该第二进程,获取该目标视频的其他视频数据;

第二播放模块,基于该其他视频数据,播放该目标视频的其他帧视频。

在一种可能的实现方式中,该第二播放请求携带该目标视频的待播放的帧标识;该获取模块,用于若已缓存该帧标识对应的其他视频数据,则从已缓存的该目标视频的视频文件中,获取该帧标识对应的其他视频数据;若未缓存该帧标识对应的其他视频数据,则基于用于获取该其他视频数据的其他数据获取任务,获取该其他视频数据。

在一种可能的实现方式中,该获取模块,用于若该其他数据获取任务对应的其他视频数据包括该帧标识对应的其他视频数据,则响应于该其他数据获取任务完成,从缓存得到的其他视频数据中获取该帧标识对应的其他视频数据;若该其他数据获取任务对应的其他视频数据不包括该帧标识对应的其他视频数据,则关闭该其他数据获取任务,创建用于获取该帧标识对应的其他视频数据的数据获取任务,响应于该数据获取任务完成,获取缓存得到的该帧标识对应的其他视频数据。

在一种可能的实现方式中,该缓存模块1101,还用于将该目标视频的每帧视频数据存储到目标文件中;将该目标文件拆分为多个文件,缓存该多个文件。

在本申请实施例中,在视频播放之前,通过第一进程从视频服务器中获取待播放视频的视频数据以及缓存该视频数据,在需要播放目标视频时,通过第二进程获取已缓存的该目标视频的数据,以实现对目标视频的起播。在上述方案中,由于视频数据的缓存和视频的播放分别通过不同的进程来实现,这样,能够在视频播放之前预先缓存视频数据,从而在播放视频时无需用户等待缓存即可立即播放,进而提高了视频播放的效率。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有至少一条程序代码,该至少一条程序代码用于被处理器执行以实现如上各个实施例示出的视频播放方法。

本申请实施例还提供了一种计算机程序产品,当该计算机程序产品中的程序代码由终端的处理器执行时,使得终端能够执行如上各个实施例示出的视频播放方法。

在一些实施例中,本申请实施例所涉及的程序代码可被部署在一个终端上执行,或者在位于一个地点的多个终端上执行,又或者,在分布在多个地点且通过通信网络互连的多个终端上执行,分布在多个地点且通过通信网络互连的多个终端可以组成区块链系统。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个程序代码或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上该仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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