CN110300328B - 一种视频播放控制方法、装置及可读存储介质 - Google Patents
一种视频播放控制方法、装置及可读存储介质 Download PDFInfo
- Publication number
- CN110300328B CN110300328B CN201810235878.1A CN201810235878A CN110300328B CN 110300328 B CN110300328 B CN 110300328B CN 201810235878 A CN201810235878 A CN 201810235878A CN 110300328 B CN110300328 B CN 110300328B
- Authority
- CN
- China
- Prior art keywords
- playing
- thread
- video
- task
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
- H04N21/4438—Window management, e.g. event handling following interaction with the user interface
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
Abstract
本发明公开了一种视频播放控制方法、装置及可读存储介质,属于计算机技术领域。本发明公开的视频播放控制方法中,通过视频播放程序的主线程创建辅助工作线程,再将指示执行的是预定操作的播放任务分配给辅助工作线程执行,通过辅助工作线程分担了主线程的任务,减少了主线程的负荷,进而在例如用户进行拖动等操作时通过辅助工作线程的辅助,可以使得主线程能够高效地进行UI绘制等操作,这样可以在一定程度上缩短用户在拖动操作后进行的画面更新播放的时间,从而减少卡顿现象,提升程序运行的流畅性,并且可以按照原始的资源释放机制进行资源释放,即由主线程进行资源释放,确保程序的稳定运行。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种视频播放控制方法、装置及可读存储介质。
背景技术
对于各操作平台而言,其一般有一些原生的应用程序,由于原生应用程序的代码段小,相对于第三方应用程序来说,应用程序的安装包体积也就小,考虑到终端的存储空间限制,所以很多用户习惯于使用操作平台提供的原生应用程序。
但是由于原生应用程序一般是由主线程执行全部的任务,所以导致主线程的负荷较大,在有些情形下则可能导致程序出现卡顿等现象,造成程序运行的流畅性较差。例如ios(苹果公司开发的移动操作系统)中的原生视频播放器AVPalyer,该视频播放器的所有播放任务都是由主线程执行,在视频播放的过程中,例如用户进行了拖动进度条等操作后,视频播放器会根据用户进行的拖动操作进行拖动后的视频定位、播放画面切换以及重新播放等一系列操作,由于所有操作都是放在主线程中执行,所以这个过程也就需要花费较长的时间才能完成,从而导致播放界面出现短暂的卡顿,影响用户的使用体验。
可见,如何减少应用程序的卡顿现象以提高程序运行的流畅性,是一个需要考虑的问题。
发明内容
本发明实施例提供一种视频播放控制方法、装置及可读存储介质,用于减少视频播放过程中的卡顿现象以提高程序运行的流畅性。
第一方面,提供一种视频播放控制方法,该方法包括:
获得视频播放的播放任务;
确定所述播放任务指示执行的是否是预定操作;其中,所述预定操作为对视频播放程序的用户界面进行绘制外的操作;
如果是所述预定操作,则调用辅助工作线程执行所述播放任务;其中,所述辅助工作线程由视频播放的主线程创建;以及
对已播放完毕的视频,调用所述主线程将所述已播放完毕的视频的播放资源进行释放操作。
上述技术方案中,提供了一种新的播放机制,即先通过视频播放程序的主线程创建辅助工作线程,再将一些特定的播放任务(即指示执行的是预定操作的播放任务)分配给新创建的辅助工作线程执行,从而可以由辅助工作线程来分担主线程的工作压力,以减少主线程的负荷,进而在例如用户进行拖动等操作时通过辅助工作线程的辅助,可以使得主线程能够专一、高效地进行UI绘制,这样可以在一定程度上缩短用户在拖动操作后进行的画面更新播放的时间,从而减少卡顿现象,确保程序的流畅运行,以提升用户的使用体验。
并且,由于资源的释放对于视频播放程序来说也比较重要,释放不准确或者释放异常都有可能导致程序异常终止甚至崩溃,而由于在创建辅助工作线程之前一直是由主线程来进行的释放操作,所以通过主线程对已播放完毕的视频的播放资源进行释放可以使得资源释放的操作不影响程序的正常使用,换句话说,采用原始的释放机制进行资源释放,尽量确保程序能够稳定运行,提升程序运行的流畅性和稳定性。
可选的,调用辅助工作线程执行所述播放任务,包括:
将所述播放任务置于串行工作队列中,所述串行工作队列中的播放任务是按照任务建立的时间先后顺序排列的;
指示所述辅助工作线程按照先入先出的顺序,依次执行所述串行工作队列中的播放任务。
在上述技术方案中,通过串行工作队列来依次执行播放任务的方式可以确保辅助工作线程执行的多个播放任务能够有序进行,确保任务的时序无误。
可选的,将所述播放任务置于串行工作队列中,具体包括:
确定正在运行的多个播放实例;
确定所述播放任务所属的播放实例;
将所述播放任务置于其所属的播放实例对应的串行工作队列中;其中,每个播放实例配置有对应的串行工作队列。
可选的,指示所述辅助工作线程按照先入先出的顺序,依次执行所述串行工作队列中的播放任务,具体包括:
按照所述多个播放实例的优先播放顺序,针对各个播放实例对应的串行工作队列,按照先入先出的顺序依次执行所述串行工作队列中的多个播放任务。
可选的,该方法还包括:
确定分配给所述主线程与所述辅助工作线程的任务的时序;
按照确定的时序先后,依次调用所述主线程和所述辅助工作线程执行相应的任务。
第二方面,提供一种视频播放控制装置,该装置包括:
任务获得模块,用于获得视频播放的播放任务;
确定模块,用于确定所述播放任务指示执行的是否是预定操作;其中,所述预定操作为对视频播放程序的UI进行绘制外的操作;
执行模块,用于如果是所述预定操作,则调用辅助工作线程执行所述播放任务,以及对已播放完毕的视频,调用视频播放的主线程将所述已播放完毕的视频的播放资源进行释放操作;其中,所述辅助工作线程由所述主线程创建。
可选的,所述执行模块具体用于:
将所述播放任务置于串行工作队列中,所述串行工作队列中的播放任务是按照任务建立的时间先后顺序排列的;
指示所述辅助工作线程按照先入先出的顺序,依次执行所述串行工作队列中的播放任务。
可选的,所述执行模块具体用于:
确定正在运行的多个播放实例;
确定所述播放任务所属的播放实例;
将所述播放任务置于其所属的播放实例对应的串行工作队列中;其中,每个播放实例配置有对应的串行工作队列。
可选的,所述执行模块具体用于:
按照所述多个播放实例的优先播放顺序,针对各个播放实例对应的串行工作队列,按照先入先出的顺序依次执行所述串行工作队列中的多个播放任务。
可选的,该装置还包括线程管理模块,用于:
确定分配给所述主线程与所述辅助工作线程的任务的时序;
按照确定的时序先后,依次调用所述主线程和所述辅助工作线程执行相应的任务。
第三方面,提供一种视频播放控制装置,该装置包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一所述的方法的步骤。
第四方面,提供一种可读存储介质,所述可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面中任一所述的方法包括的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中的视频播放控制方法的应用场景示意图;
图2为本发明实施例中的视频播放控制方法的流程图;
图3为本发明实施例中的拖动播放进度条的示意图;
图4为本发明实施例中的一个页面包括多个播放实例的示意图;
图5为本发明实施例中的主线程与辅助工作线程的示意图;
图6为本发明实施例中构建的类图的示意图;
图7为本发明实施例中的一种视频播放控制装置的结构示意图;
图8为本发明实施例中的一种视频播放控制装置的另一结构示意图;
图9为本发明实施例中的另一种视频播放控制装置的结构示意图;
图10为本发明实施例中的另一种视频播放控制装置的另一结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本文中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
以下对本文中涉及的部分用语进行说明,以便于本领域技术人员理解。
1、线程,又被称为轻量级进程(Lightweight Process,LWP),是程序的调度单位,是程序执行的最小单元,线程是进程中的实体,一个进程可以拥有多个线程。线程包括主线程和子线程,主线程是在程序启动时就被操作系统创建的线程,而子线程是由主线程创建的线程,线程可以创建和撤消线程,从而实现程序的并发执行,一个进程至少包括一个主线程。
2、队列,是一种先入先出(First Input First Output,FIFO)的线性表,其可以包括多个队列元素,在某些场景下,队列元素又可以称作队列对象。
3、UI绘制,UI即用户界面(User Interface),每个应用程序在开发时都开发有对应的UI,UI可以作为用户与程序之间的交互接口,以便于用户通过操作UI中的一些控件来控制应用程序实现一些相应的功能。UI绘制是指对应用程序的UI进行加载和写入的过程,例如在应用程序启动时会进行UI初始化的绘制,以及,在例如场景切换或者用户拖动进度条后重新播放画面时还可以进行UI的重新绘制,等等。
4、播放实例,实例也可以称作Item,播放实例即可以称作播放Item,播放实例可以对应于一个正在播放的视频,例如当前页面中有一个或多个视频播放窗口均在播放视频,那么则可以认为此时有一个或多个播放实例正在运行。
如前所述,对于目前只由主线程执行各种播放任务的视频播放器来说,在视频的播放过程中容易出现卡顿等影响用户观看体验的情形。继续以ios中的原生视频播放器AVPalyer为例,针对该视频播放器的所有播放任务都放在主线程执行,在视频播放的过程中,例如用户进行了拖动进度条等操作后,视频播放器会根据用户进行的拖动操作进行拖动后的视频定位、播放画面切换以及重新播放等一系列操作,由于所有操作都是放在主线程中完成的,所以这个过程也就需要花费较长的时间才能完成,从而导致播放界面会出现短暂的卡顿,影响用户的观看。这是因为在实际中,为了使得用户感觉不到由于UI绘制所导致的画面暂停及卡顿就要求高效快速地进行UI绘制,但是UI的加载和刷新一般是比较复杂的,如果将所有的播放任务都放在主线程的话,尤其是在拖动进度条或者视频场景切换(这两种情况都需要重新绘制UI)后,由于主线程的负荷较大所以很容易导致卡顿现象的发生,鉴于此,针对目前只通过主线程进行视频播放的视频播放程序来说,本发明实施例提供了一种新的播放机制,即通过视频播放程序的主线程创建辅助工作线程,再将一些播放任务分配给新创建的辅助工作线程执行,由辅助工作线程来分担主线程的工作压力,以减少主线程的负荷,进而在例如用户进行拖动等操作时通过辅助工作线程的辅助,可以使得主线程能够专一、高效地进行UI绘制,这样可以在一定程度上缩短用户在拖动操作后进行的画面更新播放的时间,从而减少卡顿现象,提高程序运行的流畅性,进而提升用户的使用体验。
本发明实施例中的视频播放控制方法可以应用于如图1所示的应用场景,在该应用场景中包括终端设备和服务器。其中,终端设备可以是智能手机、平板电脑、掌上电脑(Personal Digital Assistant,PDA),笔记本电脑、车载设备、智能穿戴式设备等等能够播放视频的设备,服务器是能够向终端设备提供视频资源的设备。在实际中,终端设备中安装有视频播放程序以支持视频播放,即终端设备中运行有视频播放程序的客户端,当用户希望观看视频时可以操作该终端设备以启动视频播放程序,再操作视频播放程序以向服务器发送视频播放请求,当服务器接收到该视频播放请求之后可以对该视频播放请求进行鉴权,当鉴权通过之后则可以将对应的视频资源发送给该终端设备,终端设备再将获取到的视频资源进行缓存、解码、渲染等处理后进行播放,以最终呈现给用户。
请参见图2,图2为本发明实施例提供的视频播放控制方法的流程图,该方法可以应用于能够进行视频播放的终端设备,例如图1中的终端设备。在一种可能的场景中,本发明实施例中的视频播放控制方法可以由能够进行视频播放的终端设备中的视频播放程序客户端来执行。该方法的流程描述如下。
步骤21、获得视频播放的播放任务。
本发明实施例中的播放任务是指在视频播放程序运行过程中创建的与视频播放有关的程序任务,例如,用户希望观看一个视频并利用AVPlayer来对该视频进行播放,那么在通过AVPlayer播放该视频的过程中,运行该AVPlayer的终端设备或者AVPlayer客户端可以进行以下操作:接收服务器发送的该视频的视频资源、播放器UI初始化、播放器初始化、设置视频资源的统一资源定位符(Uniform Resource Locator,URL)、创建播放资源、读取媒体信息、进行画面播放,等等;再例如,请参见图3所示的拖动播放进度条的示意图,在观看视频的过程中用户拖动了播放进度条(例如图3中所示的从27分钟拖动到了38分钟),那么还可以进行以下操作:确定进度条被拖动的停止位置、确定停止位置对应的视频资源、获得停止位置对应的视频资源、刷新UI、重新播放,等等。前面列举的每个操作都可以对应一个播放任务,当然,在视频播放的过程中,可以连续或间断地创建多个播放任务,而创建的多个播放任务中有些是不相同的任务,当然也有些任务是相同的。
也就是说,每个播放任务可以对应一个操作,例如加载视频资源的播放任务对应加载视频资源的操作,刷新UI的播放任务对应重新绘制视频播放程序的UI的操作,暂停播放任务对应暂停当前播放的视频的操作,等等,可以这样理解,操作系统通过播放任务的方式来指示视频播放程序执行相应的操作,进而实现对视频播放程序的调度和控制。
步骤22、确定播放任务指示执行的是否是预定操作;其中,该预定操作为对视频播放程序的UI进行绘制外的操作。
如前所述,每个播放任务可以对应指示一种具体操作,那么在获得播放任务之后,即可以确定与该播放任务对应的操作到底是何种操作,进一步地,再判断与该播放任务对应的操作是否是预定操作,也就是说,可以将播放任务对应的操作划分为预定操作和非预定操作两类,而预定操作分配给后面介绍的辅助工作线程执行,非预定操作则还是继续由主线程执行。
其中,预定操作为对视频播放程序的UI进行绘制外的操作,在本发明实施例中,预定操作可以是UI绘制外的操作中的任意一种操作,例如是对视频资源进行释放的操作,或者,预定操作可以是UI绘制外的再满足预定条件的某些操作,这里所说的满足预定条件可以是指操作的执行时长大于预定时长,或者操作对应的任务属于关键任务,等等,通过预定条件可以将一些操作比较耗时或者关键的任务筛选出来再分配给辅助工作线程执行,这样可以尽量减少主线程的负荷。其中,执行时长大于预定时长的操作对应的任务以及关键任务例如可以是播放器初始化、创建播放资源、读取多媒体信息、播放视频等播放任务,当然,这里只是举例说明,在具体实施过程中,也可以根据实际需要和特定播放场景选择将哪些操作分配给辅助工作线程,本发明实施例不作特别限制。
由于程序的UI绘制涉及到程序运行的稳定,同时与整个操作系统的UI绘制也有一定关系,如果UI绘制不在主线程中完成的话有可能导致程序崩溃,所以虽然UI绘制这个操作耗时也比较长,但是为了确保程序的稳定运行,UI绘制还是放在主线程中完成,因为UI绘制外的其它操作全部或部分地被分配给了辅助工作线程,所以即使将UI绘制放在主线程中执行,也可以在较大程度上降低主线程的负荷,使得主线程可以高效地进行UI绘制,进而减少一些卡顿现象的发生,并且通过主线程和辅助工作线程的配合工作还可以提高视频的播放效率,增强用户的观看体验。
在实际中,至少在以下两种情形下会进行UI绘制。
1)在视频播放程序启动时则需要进行程序的UI初始化,即在视频播放程序启动时则会进行一次UI绘制。UI初始化可以理解为是加载并呈现程序的UI的所有显示元素。继续以图3为例,UI的显示元素例如可以包括显示界面的尺寸、显示界面中的交互控件、播放进度条,等等。
其中,显示界面的尺寸即为显示界面的长宽及比例;播放进度条,即用于表明视频播放进度的条形标识,在播放进度条上有一个进度条标记(例如图3中的圆形标记),该进度条标记所处的位置即表明视频当前播放的时间,在观看过程中,用户可以通过向左或向右拖动该进度条标记而实现回退和快进的功能;显示界面中的交互控件为能够支持用户交互操作的功能控件,例如图3中所示的显示界面左侧的锁形控件,当用户点击该锁形控件之后可以控制显示界面锁屏或解锁屏,又例如显示界面右侧的相机控件,当用户点击该相机控件之后则可以对当前播放画面截图以获得当前播放画面的快照,再例如显示界面右下角的清晰度控件(图3中显示的是高清),当用户点击该清晰度控件之后则可以选择不同的清晰度的片源,例如标清、高清、超清、蓝光等不同清晰度。
2)在视频播放程序进行UI刷新时会重新进行UI绘制,例如,在用户拖动进度条后再重新播放视频时则会进行UI刷新,或者当切换了视频播放场景时也可能进行UI刷新。
其中,至少在以下情形下会进行视频播放场景的切换。例如,当前页面只显示有视频播放程序的一个显示界面,例如用户通过视频播放程序观看电影,当播放的视频由电影1切换为电影2之后,则可以认为视频播放场景进行了切换;又例如,当前页面包括多个视频播放窗口,即当前页面可以同时支持多个视频的播放,一种可能的应用场景是微信的朋友圈页面(微信好友发布的多个视频动态),另一种可能的应用场景是微博的好友动态页面,再一种可能的应用场景是如图4所示的QQ看点中的视频展示页面,等等,在这些可能的场景中均同时包括2个或更多的视频播放窗口,当通过用户上下的滑动操作而使得多个视频播放窗口轮流播放时也可以认为视频播放场景进行了切换。
另外,在包括多个视频播放窗口的同时,在当前页面上还可以显示其它的例如文字、图片等信息,例如图4中所示的在已有两个视频播放窗口的页面中,还包括了文字(例如“窝在家里看明星”)、交互控件(例如两个视频播放窗口之间的信封控件、手势控件、省略号分享控件)等等,通过文字可以对当前页面的信息有一些更明确的认识,通过交互控件可以方便用户与页面之间进行一些交互,例如通过点击信封控件可以留言评论,通过点击手势控件可以点赞,通过省略号分享控件可以将视频分享给好友,等等。
步骤23、如果是预定操作,则调用辅助工作线程执行播放任务;其中,该辅助工作线程由视频播放的主线程创建。
为了分担主线程的工作压力,本发明实施例中通过主线程创建的辅助工作线程来分担一些播放任务,具体来说是将指示的操作是预定操作的播放任务(例如称作预定播放任务)分配给辅助工作线程执行,而对于其它播放任务则可以还是分配给主线程执行,也就是说,对于例如AVPlayer等这些目前只能以主线程执行所有播放任务的视频播放程序来说,本发明实施例通过创建辅助工作线程的方式建立了多线程的工作模式,通过新创建的辅助工作线程可以分担主线程的部分工作以降低主线程的负荷,同时通过多线程的合作可以提高视频的播放效率。并且,是将指示执行的操作是预定操作的播放任务分配给辅助工作线程执行,也就是可以将一些特定的操作分配给辅助工作线程执行,这样可以合理设置主线程和辅助工作线程分别执行的任务,从而能够尽量根据各线程的特性进行合理的任务调度与分配,以充分利用各线程的特性针对性执行任务,确保各个线程的任务执行效率。
其中,辅助工作线程是由视频播放程序的主线程创建的,所以可以将辅助工作线程看作是主线程的一个子线程,在具体实施时,辅助工作线程可以是在主线程被操作系统创建时则由主线程创建,或者,也可以是在主线程被创建后的其它时刻再由主线程创建,只要是在预定操作对应的播放任务需要被执行之前创建即可,也就是说,为了使得辅助工作线程的创建时间可以动态设置,以便于根据实际情况灵活地创建辅助工作线程,本发明实施例对于辅助工作线程的创建时间不作限制。
由于辅助工作线程的创建时间不定,所以在需要执行分配给辅助工作线程执行的播放任务之前,需要确定辅助工作线程已被创建,具体来说,可以先判断辅助工作线程是否已经被成功创建,若还未创建,那么则可以指示主线程即刻创建辅助工作线程,如果已经被成功创建,那么则可以直接调用辅助工作线程执行前述的特定播放任务,以实现播放任务的分流执行,减少主线程的压力。
由于创建了多线程的工作模式,为了确保多线程的资源调用,还可以设置线程管理器(或者称作线程调用器)来集中管理多个线程的工作,即,可以通过线程管理器来对主线程和辅助工作线程进行管理,以实现对主线程和工作线程的分别调用。具体来说,通过线程管理器的管理,可以先确定分别分配给主线程和辅助工作线程的任务的时序,再按照确定的时序先后,依次调用主线程和辅助工作线程执行相应的任务,例如主线程和辅助工作线程之间的任务是需要串行进行,或者可以并行执行,等等,通过这样的时序管理和控制可以确保任务执行在流程上的准确,同时如果能够并行执行的话,通过并行的方式也可以提高任务的执行效率。
在具体实施时,当构造一个线程时,操作系统会生成一个线程控制块,通过这个线程控制块来实现对多个线程的控制和管理。并且还可以包括线程寄存器、本地方法栈,这是每个线程独自拥有的,互不干涉,线程寄存器用于存放当前正在被执行的字节码指令的地址,本地方法栈用来存放本地语言的方法调用信息,通过线程寄存器和本地方法栈来支持每个线程独立进行工作。
步骤24、对已播放完毕的视频,调用主线程将已播放完毕的视频的播放资源进行释放操作。
在具体实施过程中,在视频播放完毕之后需要释放已播放完毕的视频的播放资源,这里所说的播放资源可以理解为是视频播放实例的视频流资源,通过释放播放资源可以减少缓存的占用,节约存储空间,同时也可以提高操作系统的运行效率,并且在播放完毕之后才进行释放一方面可以确保用户观看的完整性,避免中途暂停或异常退出后重新播放时再重新加载造成的流量浪费和时间等待,另一方面准确的释放时机可以避免播放器免于崩溃,因为根据经验来说,如果播放资源在未播放完毕或者播放中途等这些时机释放的话可能会导致程序崩溃。并且,在本发明实施例中,可以通过主线程来释放已经播放完毕的视频的播放资源,因为播放资源的释放对于视频播放程序来说也比较重要,释放不准确或者释放异常都有可能导致程序异常终止甚至崩溃,而由于在创建辅助工作线程之前一直是由主线程进行的资源释放操作,所以为了使得资源释放能够尽量不影响程序的稳定使用,则还是按照原始的释放机制进行释放,确保程序的稳定运行,进一步地确保程序能够流畅运行,并且提高系统运行的稳定性。
本发明实施例中,辅助工作线程是用于分担主线程中除UI绘制和对已播放完毕的视频的播放资源进行资源释放外的部分或全部播放任务的,只要是预定操作的播放任务均可以由辅助工作线程执行,这样可以尽量减少对主线程的占用,以减少对UI绘制的影响,因为在实际播放过程中,UI绘制的完成速率对用户的直观影响较大,例如在拖动进度条后进行UI刷新的时间较长的话,用户就会直观地看到显示界面会出现一定时间的卡顿,这样对于用户的观看体验是有较大影响的,所以通过将其它的任务部分或全部地分配给辅助工作线程处理,可以尽量确保主线程能够高效、快速地进行UI绘制,从而可以尽量减少卡顿现象的发生,减少对用户的影响。
并且,通过主线程对已播放完毕的视频的播放资源进行释放可以使得资源释放的操作不影响程序的正常使用,可以这样理解,采用原始的释放机制进行资源释放,尽量确保程序能够稳定运行,提升程序运行的流畅性和稳定性。
也就是说,本发明实施例提供了一种新的播放机制,即通过视频播放程序的主线程先创建辅助工作线程,再将一些播放任务分配给辅助工作线程处理,从而可以由辅助工作线程来分担主线程的工作压力,以减少主线程的负荷,尽量减少卡顿现象,提升程序运行的流畅性,同时通过主线程进行资源释放还可以确保程序免于异常,增强程序运行的稳定性,进而提升用户的使用体验。
另外,需要说明的是,步骤23和步骤24的执行顺序可以不做限制,例如可以先执行步骤23再执行步骤24,或者当步骤23执行时,如有已播放完毕的视频的播放资源需要释放时,则可以并行执行步骤24,通过并行执行的方式还可以提高工作效率。
在实际中,在视频播放的过程中一般会有多个相同或不同的播放任务,为了使得分配到辅助工作线程中执行的多个播放任务可以确保时序无误,在本发明实施例中可以为辅助工作线程对应配置一个串行工作队列,因为每个播放任务都有任务建立的时间,所以为了确保这些任务都能够有序地执行,则可以将多个播放任务按照任务建立的时间先后置于串行工作队列中,换句话说,例如在当前播放任务之前已经有三个播放任务被分配给了辅助工作线程,那么被分配的这三个播放任务会先于当前播放任务而放置在该串行工作队列中,也就是说,当前播放任务可以直接从该串行工作队列的尾部放入,以确保各个播放任务的时序,进一步地,再由辅助工作线程按照先入先出的顺序依次串行执行置入串行工作队列中的多个播放任务,以确保任务的执行时序正确。类似地,也可以为主线程配置一个工作队列(例如称作主队列),其原理与辅助工作线程的串行工作队列一样,此处就不再重复说明了。
为了便于对主线程和辅助工作线程进一步地理解,以下结合图5所示的主线程与辅助工作线程的示意图以一个完整的视频播放流程为例进行介绍说明。
如图5所示,主线程配置有一个主队列,辅助工作线程配置有一个串行工作队列,并且,播放器初始化、创建播放资源并加载多媒体信息、读取播放资源、播放、进度条拖动及页面切换、重新播放、停止播放这些播放任务被置于了辅助工作线程的串行工作队列中,也就是说,在视频播放的过程中,前面列举的这些播放任务被分配给了辅助工作线程执行,并且由于是按照任务创建的时间先后置于串行工作队列中的,所以可以确保这些播放任务的时序准确,例如“播放器初始化”先于“播放”置于串行工作队列中,那么“播放器初始化”就会先于“播放”执行,即先初始化播放器,然后才会进行播放。
继续参见图5所示,播放器的UI初始化、设置URL、画面展示、UI刷新和释放视频资源这些操作是放在主队列中的,即表明这些操作是由主线程执行的,主队列中的这些操作也具有一定的时序,在具体实施时也是按照该时序有序地执行其中的任务。
另外,如前所述,通过线程管理器的管理,可以分别确定主队列和辅助工作队列中的所有任务的时序,具体到图5中,各个任务之间的时序例如是以箭头的方式表示的,比如其中的,当在辅助工作线程中读取播放资源并进行播放之后,则再通过主线程进行画面展示,等等。通过线程管理器的管理可以确保主线程和辅助工作线程之间的时序正确。需要说明的是,图5中的时序仅仅是示意性的说明,并不构成对本方案的限制,例如串行工作队列中的页面切换和主队列中的UI刷新除了图5中所示的先后执行外,也可以是并行执行的,此处就不再一一举例说明了,在具体实施过程中可以根据实际情况进行设置。
在一种可能的应用场景中,一个视频播放程序下可能运行有多个播放实例,即多个Item,换句话说,可以通过一个视频播放程序在一个页面中以多个视频播放窗口来播放多个视频,例如图4所示的QQ看点中的视频展示页面,其当前就是在2个播放窗口中以同一视频播放程序同时播放了2个视频,随着用户上下触控滑动页面,两个视频可以轮流播放,例如刚进入页面时上面的视频开始播放,当用户向下滑动页面时上面的视频暂停播放而下面的视频又开始播放,由当用户又向上滑动页面时,下面的视频暂停播放而上面的视频又接着播放,图4所示的页面中展示的两个播放视频即可以理解为是两个播放实例。
每个播放实例均具有自己对应的播放时序,所以在本发明实施例中为了确保各个播放实例的有序播放,可以为每个播放实例配置一个串行工作队列,每个串行工作队列专用于放置对应的播放实例的播放任务,即可以将分别属于每个播放实例的多个播放任务按照任务建立的时间先后依次置于对应的串行队列工作中,通过串行工作队列的先入先出执行机制有序地执行这些播放任务,这样有利于各个播放实例的有效分别管理,避免各个播放实例的多个播放任务之间的时序错误而导致错误地播放,甚至造成程序系统卡死崩溃,提升程序运行的稳定性和流畅性。在具体实施中,每个播放实例可以对应配置一个串行工作队列,而当被配置的串行工作队列空闲后(例如对应的播放实例已经结束)则又可以被配置为其它新启动的播放实例,即串行工作队列可以通过复用的方式循环使用。
进一步地,对于具有多个播放实例的情形来说,由于每个播放实例都均配置了一个串行工作队列,那么在当前时刻,到底执行哪个串行工作队列中的播放任务呢,也就是说,对于多个播放实例的情形来说还可能存在一定的优先播放顺序,在具体播放过程中怎么来实现优先播放的权衡呢?一种可能的实现方式是,随机选择其中的一个串行工作队列来执行其包括的播放任务,即优先播放顺序可能是随机的;在另一种可能的实施方式中,还可以同时执行几个串行工作队列分别包括的播放任务,这样即可以实现多个串行工作队列之间的并行执行,即几个播放实例可以同时进行,那么多个播放实例的播放顺序则可能是相同的;再在另一种可能的实施方式中,还可以先将多个播放实例按照是否符合优先播放条件进行优先播放排序,或者直接根据用户的即时观看需求动态确定最优先播放的播放实例进行播放,进而再针对该最优先播放的播放实例的串行工作队列,按照先入先出的顺序依次执行该串行工作队列中包括的多个播放任务。
其中,优先播放条件是指在当前可以优先于其它播放实例而进行播放,即具有优先播放的权限。一些可能的优先播放条件例如是用户将某个播放实例的播放窗口通过欢动页面的方式显示在页面的中间区域,或者某个播放实例的播放窗口占据当前页面的最大比例,或者用户直接点击触控了某个播放实例的显示界面或播放按钮,等等,以图4例来说,可见图4中上面的视频正在播放即表明用户已经点击了播放按钮,而下面的视频上显示的暂停标记,那么则可以认为用户当前希望观看的是上面的视频,所以可以将上面的视频理解为是满足优先播放条件的优先播放实例,所以此时则继续播放上面的视频,在这种情形下,可以认为优先播放条件即为用户希望观看的播放实例,进一步地,假设用户向下继续滑动页面,当下面的视频的播放窗口位于整个页面的中间区域时,则暂停上面视频的播放而开始播放下面的视频,进而实现了播放实例之间的切换,这样可以尽量满足用户的实际观看需求,与用户的观看期望相符。
为了便于从技术原理上对本发明实施例中的方案进行理解,以下再结合图6所示的类图以AVPlayer进一步地举例说明,
请参见图6,总的来说,是通过一个中间类TVKAsynMediaPlayer实现对视频播放器AVPlayer的封装,进而实现调用线程(即主线程和辅助工作线程)的切换,并且通过创建一个串行工作队列(即图6中的palyerQueue),使得分配给辅助工作线程的任务工作在串行工作队列,确保任务时序的无误。以下对图6中所示的各部分进行解释说明。
1、TVKPlayer,即视频播放器,该类包含了一个TVKAsynMediaPlayer(例如称作视频播放器的类)对象,保存播放器下层回调的状态量,并为上层提供同步调用的接口,它使上层使用方不再感知有异步调用过程。另外,该类还可以实现对下载软件开发工具包(Software Development Kit,SDK)的调用及其回调的处理。
2、TVKAsynMediaPlayer,封装的一个异步播放器类,包含了一个串行工作队列,即playerQueue,指示执行的是预定操作所对应的播放任务都会被该类分配到辅助工作线程的串行工作队列中,确保时序无误,播放器的回调也可以被该类转换到主线程。
3、TVKMediaPlayerController,即视频播放器分片控制器,可以实现对播放器的分片处理。
4、TVKPlayerVideoView,即视频播放器的播放视图,其可以负责视频播放视图的展示。
5、TVKAVPlayerItemManager,即播放实例管理器,由于可能存在多个AVPlayerItem(播放实例),本发明实施例中可以使用TVKAVPlayerItemManager对多个AVPlayerItem进行管理。
6、TVKAVPlayerManager,即资源释放管理器,Item的释放时机不正确容易引起AVPlayer产生崩溃,TVKAVPlayerManager可以用于确保所有Item都在正确的时间于主线程释放,提高了系统的稳定性。
需要说明的是,针对图6中的各英文释义仅仅是示意性的,并不构成对本发明实施例的限制,在具体实施过程中,还可以根据各部分的实际作用进行相应的其它释义。
基于同一发明构思,请参见图7所示,图7为本发明实施例提供的一种视频播放控制装置的结构示意图,该视频播放控制装置可以是终端设备,能够实现前述的视频播放控制方法对应的功能;或者,该视频播放控制装置也可以是能够支持终端设备实现前述的视频播放控制方法对应的功能的装置,例如运行在终端设备中的视频播放程序的客户端。该视频播放控制装置可以是硬件结构、软件模块、或硬件结构加软件模块。该视频播放控制装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
本发明实施例中的视频播放控制装置可以包括任务获得模块71、确定模块72和执行模块73。其中:
任务获得模块71,用于获得视频播放的播放任务;
确定模块72,用于确定播放任务指示执行的是否是预定操作;其中,预定操作为对视频播放程序的UI进行绘制外的操作;
执行模块73,用于如果是预定操作,则调用辅助工作线程执行播放任务,以及对已播放完毕的视频,调用视频播放的主线程将所述已播放完毕的视频的播放资源进行释放操作;其中,辅助工作线程由主线程创建。
在一种可能的实施方式中,执行模块73具体可以用于将播放任务置于串行工作队列中,再指示辅助工作线程按照先入先出的顺序,依次执行串行工作队列中的播放任务;其中,串行工作队列中的播放任务是按照任务建立的时间先后顺序排列的。
在一种可能的实施方式中,执行模块73具体可以用于确定正在运行的多个播放实例,再确定播放任务所属的播放实例,最后将播放任务置于其所属的播放实例对应的串行工作队列中;其中,每个播放实例配置有对应的串行工作队列。
在一种可能的实施方式中,执行模块73具体可以用于按照多个播放实例的优先播放顺序,针对各个播放实例对应的串行工作队列,按照先入先出的顺序依次执行串行工作队列中的多个播放任务。
在一种可能的实施方式中,请参见图8所示,该视频播放控制装置还可以包括线程管理模块81,该线程管理模块81用于确定分配给主线程与辅助工作线程的任务的时序,再按照确定的时序先后,依次调用主线程和辅助工作线程执行相应的任务。该实施例中,该线程管理模块81可以为前述的线程管理器,用于统一调度和管理主线程和辅助工作线程的工作。
其中,前述视频播放控制方法实施例涉及的各步骤的所有相关内容均可以援引到本发明实施例中的对应功能模块的功能描述,在此不再赘述。
本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本发明各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
基于同一发明构思,本发明实施例还提供另一种视频播放控制装置,该视频播放控制装置可以是终端设备,例如智能手机、平板电脑、PDA,笔记本电脑、车载设备、智能穿戴式设备等等,能够实现前述的视频播放控制方法对应的功能;或者,该视频播放控制装置也可以是能够支持终端设备实现前述的视频播放控制方法对应的功能的装置,例如运行在前述终端设备中的视频播放程序的客户端。该视频播放控制装置可以是硬件结构、软件模块、或硬件结构加软件模块。该视频播放控制装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
如图9所示,本发明实施例中的视频播放控制设备包括至少一个处理器91,以及与至少一个处理器连接的存储器92,本发明实施例中不限定处理器91与存储器92之间的具体连接介质,图9中是以处理器91和存储器92之间通过总线90连接为例,总线90在图9中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线90可以分为地址总线、数据总线、控制总线等,为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本发明实施例中,存储器92存储有可被至少一个处理器91执行的指令,至少一个处理器91通过执行存储器92存储的指令,可以执行前述的视频播放控制方法中所包括的步骤。
其中,处理器91是视频播放控制装置的控制中心,可以利用各种接口和线路连接整个视频播放控制装置的各个部分,通过运行或执行存储在存储器92内的指令以及调用存储在存储器92内的数据,视频播放控制装置的各种功能和处理数据,从而对视频播放控制装置进行整体监控。可选的,处理器91可包括一个或多个处理单元,处理器91可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器91中。在一些实施例中,处理器91和存储器92可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器91可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器92作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器92可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器92是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器92还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
请参见图10所示的视频播放控制装置的另一结构示意图,该视频播放控制装置还可以包括输入单元103、显示单元104、射频单元105、音频电路106、扬声器107、麦克风108、无线保真(Wireless Fidelity,WiFi)模块109、蓝牙模块110、电源111、外部接口112、耳机插孔113等部件。本领域技术人员可以理解的是,图10仅仅是视频播放控制装置的举例,并不构成对视频播放控制装置的限定,视频播放控制装置可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
输入单元103可用于接收输入的数字或字符信息,以及产生与视频播放控制装置的用户设置以及功能控制有关的键信号输入。例如,输入单元103可包括触摸屏1031以及其它输入设备1032。触摸屏1031可收集用户在其上或附近的触摸操作(比如用户使用手指、关节、触笔等任何适合的物体在触摸屏1031上或在触摸屏1031附近的操作),即触摸屏1031可用于检测触摸压力以及触摸输入位置和触摸输入面积,并根据预先设定的程序驱动相应的连接装置。触摸屏1031可以检测用户对触摸屏1031的触控操作,将触控操作转换为触控信号发送给处理器91,或者理解为可将触控操作的触控信息发送给处理器91,并能接收处理器91发来的命令并加以执行。触控信息至少可以包括压力大小信息和压力持续时长信息中的至少一种。触摸屏1031可以提供视频播放控制装置和用户之间的输入界面和输出界面。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触摸屏1031。除了触摸屏1031,输入单元103还可以包括其它输入设备1032。比如,其它输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元104可用于显示由用户输入的信息或提供给用户的信息以及视频播放控制装置的各种菜单。进一步的,触摸屏1031可覆盖显示单元104,当触摸屏1031检测到在其上或附近的触控操作后,传送给处理器91以确定的触控操作的压力信息。在本发明实施例中,触摸屏1031与显示单元104可以集成为一个部件而实现视频播放控制装置的输入、输出、显示功能。为便于描述,本发明实施例以触摸屏1031代表触摸屏1031和显示单元104的功能集合为例进行示意性说明,当然在某些实施例中,触摸屏1031与显示单元104也可以作为两个独立的部件。
当显示单元104和触摸板以层的形式彼此叠加以形成触摸屏1031时,显示单元104可以用作输入装置和输出装置,在作为输出装置时,可以用于显示图像,例如实现对各种视频的播放。显示单元104可以包括液晶显示器(Liquid Crystal Display,LCD)、薄膜晶体管液晶显示器(Thin Film Transistor Liquid Crystal Display,TFT-LCD)、有机发光二极管(Organic Light Emitting Diode,OLED)显示器、有源矩阵有机发光二极体(ActiveMatrix Organic Light Emitting Diode,AMOLED)显示器、平面转换(In-PlaneSwitching,IPS)显示器、柔性显示器、3D显示器等等中的至少一种。这些显示器中的一些可以被构造为透明状以允许用户从外部观看,这可以称为透明显示器,根据特定想要的实施方式,视频播放控制装置可以包括两个或更多显示单元(或其它显示装置),例如,视频播放控制装置可以包括外部显示单元(图10未示出)和内部显示单元(图10未示出)。
射频单元105可用于收发信息或通话过程中信号的接收和发送。通常,射频电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,射频单元105还可以通过无线通信与网络设备和其它设备通信。无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
音频电路106、扬声器107、麦克风108可提供用户与视频播放控制装置之间的音频接口。音频电路106可将接收到的音频数据转换后的电信号,传输到扬声器107,由扬声器107转换为声音信号输出。另一方面,麦克风108将收集的声音信号转换为电信号,由音频电路106接收后转换为音频数据,再将音频数据输出处理器91处理后,经射频单元105以发送给比如另一电子设备,或者将音频数据输出至存储器92以便进一步处理,音频电路也可以包括耳机插孔113,用于提供音频电路和耳机之间的连接接口。
WiFi属于短距离无线传输技术,视频播放控制装置通过WiFi模块109可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图10示出了WiFi模块109,但是可以理解的是,其并不属于视频播放控制装置的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
蓝牙是一种短距离无线通讯技术。利用蓝牙技术,能够有效地简化掌上电脑、笔记本电脑和手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与因特网(Internet)之间的通信,视频播放控制装置通过蓝牙模块110使视频播放控制装置与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙技术是能够实现语音和数据无线传输的开放性方案。虽然图10示出了蓝牙模块110,但是可以理解的是,其并不属于视频播放控制装置的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
视频播放控制装置还可以包括电源111(比如电池),其用于接收外部电力或为视频播放控制装置内的各个部件供电。优选的,电源111可以通过电源管理系统与处理器91逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
视频播放控制装置还可以包括外部接口112,该外部接口112可以包括标准的Micro USB接口,也可以包括多针连接器,可以用于连接视频播放控制装置与其它设备进行通信,也可以用于连接充电器为视频播放控制装置充电。
尽管未示出,视频播放控制装置还可以包括摄像头、闪光灯等其它可能的功能模块,在此不再赘述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种视频播放控制方法,其特征在于,应用于视频播放程序中,所述视频播放程序是通过中间类对原生视频播放器进行封装得到的,所述方法包括:
获得视频播放的播放任务;
确定所述播放任务指示执行的是否是预定操作;其中,所述预定操作为对视频播放程序的用户界面UI进行绘制外的操作;
如果是所述预定操作,则调用辅助工作线程执行所述播放任务;其中,所述辅助工作线程由视频播放的主线程创建;以及
对已播放完毕的视频,调用所述主线程将所述已播放完毕的视频的播放资源进行释放操作;
通过线程管理器确定分配给所述主线程与所述辅助工作线程的播放任务的时序;
按照确定的时序先后,通过所述线程管理器依次调用所述主线程和所述辅助工作线程执行相应的播放任务。
2.如权利要求1所述的方法,其特征在于,调用辅助工作线程执行所述播放任务,包括:
将所述播放任务置于串行工作队列中,所述串行工作队列中的播放任务是按照任务建立的时间先后顺序排列的;
指示所述辅助工作线程按照先入先出的顺序,依次执行所述串行工作队列中的播放任务。
3.如权利要求2所述的方法,其特征在于,将所述播放任务置于串行工作队列中,具体包括:
确定正在运行的多个播放实例;
确定所述播放任务所属的播放实例;
将所述播放任务置于其所属的播放实例对应的串行工作队列中;其中,每个播放实例配置有对应的串行工作队列。
4.如权利要求3所述的方法,其特征在于,指示所述辅助工作线程按照先入先出的顺序,依次执行所述串行工作队列中的播放任务,具体包括:
按照所述多个播放实例的优先播放顺序,针对各个播放实例对应的串行工作队列,按照先入先出的顺序依次执行所述串行工作队列中的多个播放任务。
5.一种视频播放控制装置,其特征在于,所述装置设置在应用于视频播放程序中,所述视频播放程序是通过中间类对原生视频播放器进行封装得到的,所述装置包括:
任务获得模块,用于获得视频播放的播放任务;
确定模块,用于确定所述播放任务指示执行的是否是预定操作;其中,所述预定操作为对视频播放程序的用户界面UI进行绘制外的操作;
执行模块,用于如果是所述预定操作,则调用辅助工作线程执行所述播放任务,以及对已播放完毕的视频,调用视频播放的主线程将所述已播放完毕的视频的播放资源进行释放操作;其中,所述辅助工作线程由所述主线程创建,以及通过线程管理器确定分配给所述主线程与所述辅助工作线程的播放任务的时序,并按照确定的时序先后,通过所述线程管理器依次调用所述主线程和所述辅助工作线程执行相应的播放任务。
6.如权利要求5所述的装置,其特征在于,所述执行模块具体用于:
将所述播放任务置于串行工作队列中,所述串行工作队列中的播放任务是按照任务建立的时间先后顺序排列的;
指示所述辅助工作线程按照先入先出的顺序,依次执行所述串行工作队列中的播放任务。
7.如权利要求6所述的装置,其特征在于,所述执行模块具体用于:
确定正在运行的多个播放实例;
确定所述播放任务所属的播放实例;
将所述播放任务置于其所属的播放实例对应的串行工作队列中;其中,每个播放实例配置有对应的串行工作队列。
8.一种视频播放控制装置,其特征在于,所述装置包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行权利要求1-4中任一项所述的方法的步骤。
9.一种可读存储介质,其特征在于,所述可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1-4中任一项所述的方法包括的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235878.1A CN110300328B (zh) | 2018-03-21 | 2018-03-21 | 一种视频播放控制方法、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235878.1A CN110300328B (zh) | 2018-03-21 | 2018-03-21 | 一种视频播放控制方法、装置及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110300328A CN110300328A (zh) | 2019-10-01 |
CN110300328B true CN110300328B (zh) | 2021-11-02 |
Family
ID=68025409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810235878.1A Active CN110300328B (zh) | 2018-03-21 | 2018-03-21 | 一种视频播放控制方法、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110300328B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110611844B (zh) * | 2019-10-18 | 2021-12-28 | 网易(杭州)网络有限公司 | 应用中播放器的控制方法、装置和视频播放装置 |
CN110996134B (zh) * | 2019-12-23 | 2022-09-09 | 腾讯科技(深圳)有限公司 | 视频播放方法、装置及存储介质 |
CN111432262B (zh) * | 2020-02-24 | 2022-05-24 | 杭州海康威视数字技术股份有限公司 | 页面视频渲染方法及装置 |
CN111447361B (zh) * | 2020-03-31 | 2021-08-13 | 安徽文香科技有限公司 | 一种显示切换方法、装置、设备及存储介质 |
CN111460211A (zh) * | 2020-04-03 | 2020-07-28 | 北京字节跳动网络技术有限公司 | 音频信息播放方法、装置和电子设备 |
CN112527627A (zh) * | 2020-11-02 | 2021-03-19 | 百果园技术(新加坡)有限公司 | 一种页面卡顿检测方法、装置、设备及介质 |
CN112333529B (zh) * | 2020-11-02 | 2022-08-05 | 广州华多网络科技有限公司 | 直播流加载方法及其装置、设备、介质 |
CN114531602B (zh) * | 2020-11-23 | 2024-02-23 | 中国移动通信集团安徽有限公司 | 基于动态资源释放的视频直播性能优化方法及装置 |
CN113411683B (zh) * | 2021-06-23 | 2022-07-22 | 北京奇艺世纪科技有限公司 | 一种视频播放方法及装置 |
CN115460469A (zh) * | 2022-08-24 | 2022-12-09 | 网易(杭州)网络有限公司 | 多视频播放的处理方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106804003A (zh) * | 2017-03-09 | 2017-06-06 | 广州四三九九信息科技有限公司 | 基于ffmpeg的视频编辑方法及装置 |
CN107239275A (zh) * | 2017-05-17 | 2017-10-10 | 努比亚技术有限公司 | 应用运行方法、终端及计算机可读存储介质 |
CN107241657A (zh) * | 2017-07-06 | 2017-10-10 | 广州优视网络科技有限公司 | 视频播放方法、装置、计算设备以及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103647991A (zh) * | 2013-12-23 | 2014-03-19 | 乐视致新电子科技(天津)有限公司 | 智能电视中的视频分享方法及系统 |
CN104333808B (zh) * | 2014-11-14 | 2017-10-10 | 复旦大学 | 用于Android及Linux智能电视机上的通用播放器 |
-
2018
- 2018-03-21 CN CN201810235878.1A patent/CN110300328B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106804003A (zh) * | 2017-03-09 | 2017-06-06 | 广州四三九九信息科技有限公司 | 基于ffmpeg的视频编辑方法及装置 |
CN107239275A (zh) * | 2017-05-17 | 2017-10-10 | 努比亚技术有限公司 | 应用运行方法、终端及计算机可读存储介质 |
CN107241657A (zh) * | 2017-07-06 | 2017-10-10 | 广州优视网络科技有限公司 | 视频播放方法、装置、计算设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110300328A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110300328B (zh) | 一种视频播放控制方法、装置及可读存储介质 | |
US10437631B2 (en) | Operating system hot-switching method and apparatus and mobile terminal | |
US11722860B2 (en) | Messaging system interacting with dynamic extension app | |
US9432314B2 (en) | Quick navigation of message conversation history | |
KR101702698B1 (ko) | 적응형 프로세스 중요도 | |
CN109074286B (zh) | 对使用系统资源的应用的控制 | |
US20140351729A1 (en) | Method of operating application and electronic device implementing the same | |
US20160315999A1 (en) | Device and method for associating applications | |
CN113037929B (zh) | 一种信息接力输出方法、装置、电子设备及存储介质 | |
CN105786473A (zh) | 多任务界面的任务管理方法、装置及终端设备 | |
US11455075B2 (en) | Display method when application is exited and terminal | |
CN110633032B (zh) | 终端设备的图标显示方法及装置 | |
US20240086231A1 (en) | Task migration system and method | |
US20210279095A1 (en) | Interrupt Management for a Hypervisor | |
US20180196584A1 (en) | Execution of multiple applications on a device | |
EP3671627A1 (en) | Image processing method and device | |
CN115576645B (zh) | 一种虚拟处理器调度方法、装置、存储介质及电子设备 | |
AU2019256257A1 (en) | Processor core scheduling method and apparatus, terminal, and storage medium | |
WO2019128571A1 (zh) | 资源管理方法、装置、移动终端及计算机可读存储介质 | |
WO2015117445A1 (zh) | 任务窗口的处理方法及装置 | |
TW201508640A (zh) | 反向啓動協定 | |
CN111857902B (zh) | 应用的显示方法、装置、设备和可读存储介质 | |
CN109669764B (zh) | 处理方法、装置、设备和机器可读介质 | |
US20150074530A1 (en) | Method for controlling content in mobile electronic device | |
CN110704782A (zh) | 页面响应方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |