CN105120323B - 一种分布式播放器任务调度的方法及系统 - Google Patents

一种分布式播放器任务调度的方法及系统 Download PDF

Info

Publication number
CN105120323B
CN105120323B CN201510549608.4A CN201510549608A CN105120323B CN 105120323 B CN105120323 B CN 105120323B CN 201510549608 A CN201510549608 A CN 201510549608A CN 105120323 B CN105120323 B CN 105120323B
Authority
CN
China
Prior art keywords
task
time
video
module
audio
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
Application number
CN201510549608.4A
Other languages
English (en)
Other versions
CN105120323A (zh
Inventor
李凤山
冷志勇
高上
卢述奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Storm Group Ltd By Share Ltd
Original Assignee
Storm Group Ltd By Share Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Storm Group Ltd By Share Ltd filed Critical Storm Group Ltd By Share Ltd
Priority to CN201510549608.4A priority Critical patent/CN105120323B/zh
Publication of CN105120323A publication Critical patent/CN105120323A/zh
Application granted granted Critical
Publication of CN105120323B publication Critical patent/CN105120323B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本申请公开了一种分布式播放器任务调度的方法及系统,包括:将移动终端上的播放器的播放过程中解复用模块、音频解码模块、音频渲染模块、视频解码模块、视频渲染模块共5个模块;按照任务的复杂度以及耗时程度分为两个任务task1和task2;task1和task2两个任务统一在一个线程池task pool中;task pool每一个任务都按照时间顺序来依次轮询执行;所有的休眠放入到task pool中进行;若当前时间没有可以执行的任务,则系统休眠。实现任务调度分时复用,节省系统资源,同时,整体框架的可扩展性强,提高用户满意度。

Description

一种分布式播放器任务调度的方法及系统
技术领域
本申请涉及互联网应用技术领域,具体地说,涉及一种分布式播放器任务调度的方法及系统。
背景技术
当前,视频播放器,通常是指能播放以数字信号形式存储的媒体文件的软件,也指具有播放媒体文件功能的电子器件产品。除了少数波形文件外,大多数视频播放器携带视音频解码器和显示部件以还原经过压缩媒体文件,视频播放器还要内置一整套转换以及缓存的算法。当然大多数的视频播放器还能支持播放单音频文件或者单视频文件。
一般的处理过程为:
输入。从文件或网络等读取原数据,如x.avi,x.mov,rtsp://xxx,对原数据进行解析,比如文件,首先要分析文件格式,从文件中取得音视频编码参数,媒体时间长度等信息,然后要从其中取出音频编码数据和视频编码数据送到解码部分,这里暂称这种编码源数据块为packet。
解码。初始化时,利用输入端从源数据中取得的信息调用不同的解码库初始化;然后接收输入端传送来的音视频编码数据,分别进行音频解码和视频解码,视频解码出来的数据一般是YUV或RGB数据,这里暂称为picture,音频解码出来的数据是采样数据,是声卡可以播放的数据,这里暂称为sample。解码所得的数据接下来送到输出部分。
输出。接收解码部分送来的picture和sample并显示。视频显示一般使用某个图形库,如SDL,Xlib,DirectDraw,OpengGL,FrameBuffer等,音频输出是把sample写入系统的音频驱动,由音频驱动送入声卡播放,可用的音频输出有ALSA,OSS,SDL,DirectSound,WaveOut等。
现有技术中,原始的视频文件(无论何种格式)如果在一个客户端的播放器进行处理需要经过解复用(分离)处理,将音频、视频压缩码流进行分离,继而进行音频、视频解码处理,解码完毕后进行音频、视频同步,两者分别显示渲染,目前主流播放器对于每个处理模块进行线程处理,期间客户可能存在播放暂停、拖动等各种操作,从而造成多线程间的同步稳定性不足,需要经常性的等待和不断的同步,多线程切换带来的资源损耗、稳定性以及架构的可维护性都需要考虑。
发明内容
有鉴于此,本申请所要解决的技术问题是提供了一种分布式播放器任务调度的方法及系统,其能够解决现有技术中播放器播放存在的任务调度问题,任务调度分时复用,节省系统资源,同时,整体框架的可扩展性强,提高用户满意度。
为了解决上述技术问题,本申请有如下技术方案:
一种分布式播放器任务调度的方法,包括:
将移动终端上的播放器的播放过程中解复用模块、音频解码模块、音频渲染模块、视频解码模块、视频渲染模块共5个模块按照任务的复杂度以及耗时程度分为两个任务task1和task2;其中task1包含解复用模块、音频解码模块、音频渲染模块,task2分为视频解码模块、视频渲染模块;
所述task1和task2两个任务统一在一个线程池task pool中;
所述task pool执行在一个统一的线程池中,每一个任务都按照时间顺序来依次轮询执行;task pool中的每个任务执行过程中都不会出现阻塞情况,所有的休眠放入到task pool中进行;若当前时间没有可以执行的任务,则系统休眠。
所述每一个任务都按照时间顺序来依次轮询执行,包括:
计算下次取出该任务的时间:
tnext=tcursystime+tsleeptime
其中,tnext表示下次取出该任务执行的时间,tcursystime表示当前系统时间,tsleeptime表示此时执行过程中由于某些原因导致需要休眠的时间;
将该任务放入task pool中按照tnext进行时间由小到大排序;
当线程轮询时,将当前系统时间与任务池中时间最小的任务时间比较,如果时间已到或者时间已过,则立刻取出当前任务进行执行,若当前时间没有任务满足,则系统进行休眠。
所述方法还包括:
播放起始时,从文件I/O中获取文件数据,进行文件头信息解析;
解析完毕后启动task1,进行解复用操作;
若文件中包含视频,则同时启动task2,且将task1和task2任务注册在task pool中,初始task2处于休眠状态;
轮询查询视频队列是否有数据,若有数据则执行视频解码、视频渲染操作,否则继续进行休眠。
所述方法还包括:
task1解复用出音频码流,将音频码流送入音频解码器中解码,将解码的原始音频数据放入到渲染队列中;
当渲染队列达到一定阈值,则task1进入休眠状态;若未达到阈值,则继续解复用;
如解复用出视频码流,则放入到视频码流队列中。
所述方法还包括:
视频任务在轮询中得到执行时,判断视频码流队列中是否有数据,若有数据则取出数据进行视频解码;
在渲染过程中与音频、系统时钟进行同步,若时间与之比较已经延后则立刻播放,休眠时长为0;若时间提前到达,则计算提前的时间,用音频时间或系统时间减去视频时间,作为task2休眠的时间。
一种分布式播放器任务调度的系统,包括:任务分配模块、线程池模块和轮询模块;其中,
所述任务分配模块,用于将移动终端上的播放器的播放过程中解复用模块、音频解码模块、音频渲染模块、视频解码模块、视频渲染模块共5个模块按照任务的复杂度以及耗时程度分为两个任务task1和task2;其中task1包含解复用模块、音频解码模块、音频渲染模块,task2分为视频解码模块、视频渲染模块;
所述线程池模块,用于将所述task1和task2两个任务统一在一个线程池taskpool中;
所述轮询模块,用于所述task pool执行在一个统一的线程池中,每一个任务都按照时间顺序来依次轮询进行执行。
所述轮询模块还用于:
计算下次取出该任务的时间:
tnext=tcursystime+tsleeptime
其中,tnext表示下次取出该任务执行的时间,tcursystime表示当前系统时间,tsleeptime表示此时执行过程中由于某些原因导致需要休眠的时间;
将该任务放入task pool中按照tnext进行时间由小到大排序;
当线程轮询时,将当前系统时间与任务池中时间最小的任务时间比较,如果时间已到或者时间已过,则立刻取出当前任务进行执行,若当前时间没有任务满足,则系统进行休眠。
所述轮询模块还用于:
播放起始时,从文件I/O中获取文件数据,进行文件头信息解析;
解析完毕后启动task1,进行解复用操作;
若文件中包含视频,则同时启动task2,且将task1和task2任务注册在task pool中,初始task2处于休眠状态;
轮询查询视频队列是否有数据,若有数据则执行视频解码、视频渲染操作,否则继续进行休眠。
所述轮询域模块还用于:
task1解复用出音频码流,将音频码流送入音频解码器中解码,将解码的原始音频数据放入到渲染队列中;
当渲染队列达到一定阈值,则task1进入休眠状态;若未达到阈值,则继续解复用;
如解复用出视频码流,则放入到视频码流队列中。
所述轮询模块还用于:
视频任务在轮询中得到执行时,判断视频码流队列中是否有数据,若有数据则取出数据进行视频解码;
在渲染过程中与音频、系统时钟进行同步,若时间与之比较已经延后则立刻播放,休眠时长为0;若时间提前到达,则计算提前的时间,用音频时间或系统时间减去视频时间,作为task2休眠的时间。
与现有技术相比,本申请所述的方法和系统,达到了如下效果:
第一,任务调度过程中线程池统一安排任务,按照时间顺序进行排序,当系统时间达到或者已过,则立刻执行该任务,若当前时间没有可执行任务时则系统休眠,节省资源。
第二、任务调度过程中线程池统一安排任务,按照时间顺序进行排序,各个任务根据执行情况选择休眠时间,分时复用合理安排。
第三、框架执行更为稳定,可维护性强。
第四、客户的播放操作如seek,pause等均在同一线程内完成,5个模块不需要进行线程同步,简化操作。
第五、框架可扩展性强。
第六、任务池中可注册各种任务,如后续需要添加下载任务,则可新建任务池taskpool2,在新任务池中进行轮询的任务下载,比如直播M3U8的文件下载,M3U8的索引文件下载设为task1,索引文件对应的每个具体ts流文件的下载设置为task2,两任务可以轮询完成,当其中一个下载任务发生网络拥塞时休眠,则唤醒另外一个下载任务,分时复用,另外分布式播放器多设备传输播放时,网络操作可以设置任务池进行操作,客户端网络模块和服务端网络模块可分别设置为task1,task2,两者轮询执行即可,可放入同一线程进行分时复用处理。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本发明的所述一种分布式播放器任务调度的方法流程图;
图2为本发明的所述一种分布式播放器任务调度的系统结构示意图。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
本专利旨在开发一套新的播放架构,使1解复用、2音频解码、3视频解码、4音频渲染、5视频渲染等模块分任务处理,由于视频解码内核实现为并行解码已充分利用了多核多线程的并行资源,此视频解码仅仅是送入压缩码流,输出原始数据,故此5个模块完全可放在一个线程池中轮询进行,由线程池根据负载均衡以及任务时间的优先级进行安排任务执行,分时复用系统资源,在播放过程中统一调度任务,UI层带来的各种播放操作统一在一个线程内完成,简化了之前多线程带来的线程同步等一系列问题,易于维护且节省资源。
实施例1
参见图1所示为本申请所述一种分布式播放器任务调度的方法的具体实施例,本实施例中所述方法包括以下步骤:
步骤101、将移动终端上的播放器的播放过程中解复用模块、音频解码模块、音频渲染模块、视频解码模块、视频渲染模块共5个模块按照任务的复杂度以及耗时程度分为两个任务task1和task2;其中task1包含解复用模块、音频解码模块、音频渲染模块,task2分为视频解码模块、视频渲染模块;
步骤102、task1和task2两个任务统一在一个线程池task pool中;
步骤103、task pool执行在一个统一的线程池中,每一个任务都按照时间顺序来依次轮询执行;task pool中的每个任务执行过程中都不会出现阻塞情况,所有的休眠放入到task pool中进行;若当前时间没有可以执行的任务,则系统休眠。
其中,根据公式(1)计算下次取出该任务的时间:
tnext=tcursystime+tsleeptime 公式(1)
其中,tnext表示下次取出该任务执行的时间,tcursystime表示当前系统时间,tsleeptime表示此时执行过程中由于某些原因导致需要休眠的时间;
将该任务放入task pool中按照tnext进行时间由小到大排序;
当线程轮询时,将当前系统时间与任务池中时间最小的任务时间比较,如果时间已到或者时间已过,则立刻取出当前任务进行执行,若当前时间没有任务满足,则系统进行休眠。
其中,播放起始时,从文件I/O中获取文件数据,进行文件头信息解析;
解析完毕后启动task1,进行解复用操作;
若文件中包含视频,则同时启动task2,且将task1和task2任务注册在task pool中,初始task2处于休眠状态;
轮询查询视频队列是否有数据,若有数据则执行视频解码、视频渲染操作,否则继续进行休眠。
其中,task1解复用出音频码流,将音频码流送入音频解码器中解码,将解码的原始音频数据放入到渲染队列中;
当渲染队列达到一定阈值,则task1进入休眠状态;若未达到阈值,则继续解复用;
如解复用出视频码流,则放入到视频码流队列中。
其中,视频任务在轮询中得到执行时,判断视频码流队列中是否有数据,若有数据则取出数据进行视频解码;
在渲染过程中与音频、系统时钟进行同步,若时间与之比较已经延后则立刻播放,休眠时长为0;若时间提前到达,则计算提前的时间,用音频时间或系统时间减去视频时间,作为task2休眠的时间。
上述方案的具体内容可以理解为:将移动终端上的播放器的播放过程中5个模块按照任务的复杂度以及耗时程度分为两个任务,分别为task1和task2,两个任务统一在一个线程池task pool中轮询执行,其中task1包含解复用模块、音频解码模块、音频渲染模块,task2分为视频解码模块、视频渲染模块,其中视频解码模块仅送入码流输出原始视频数据,真正的解码内核已封装在一个并行多核解码的内部模块中。
task pool执行在一个统一的线程池中,其中每一个任务都按照时间顺序来依次轮询执行,如任务taskn完成后,根据公式(1)计算一下下次取出该任务的时间。
其中,tsleeptime表示此时执行过程中由于某些原因导致需要休眠,如音频渲染缓存队列已满需下次重试,需task1休眠,再如音视频播放同步中出现的视频提前到达,需task2休眠等,最终将该任务放入task pool中按照tnext进行时间由小到大排序,当线程轮询时将当前系统时间与任务池中时间最小的任务时间比较,如果时间已到或者时间已过,则立刻取出当前任务进行执行,若当前时间没有任务满足,则系统进行休眠,不浪费系统资源。
播放中利用任务调度的步骤如下:
播放起始时,从文件I/O中获取文件数据,进行文件头信息解析,解析完毕后启动task1,进行解复用操作,若文件中包含视频,则同时启动task2,且将task1和task2任务注册在task pool中,初始task2由于尚无视频数据,故一直处于休眠状态,且轮询去查询视频队列是否有数据,若有数据则执行视频解码、视频渲染操作,否则继续进行休眠,每次休眠时间可设置为10ms,10ms后轮询操作。
task1解复用出音频码流,将音频码流送入音频解码器中解码,将解码的原始音频数据放入到渲染队列中,当渲染队列达到一定阈值(取32),则task1进入休眠状态,若未达到阈值,则继续解复用,如解复用出视频码流,则放入到视频码流队列中。
视频任务在轮询中得到执行时,判断视频码流队列中是否有数据,若有数据则取出数据进行视频解码(仅输入码流、输出原始数据),其中在渲染过程中需要和音频、系统时钟进行同步,若时间与之比较已经延后则立刻播放,休眠时长为0,若时间提前到达,则计算提前的时间,用音频时间或系统时间减去视频时间,作为task2休眠的时间,见公式(1)。举例当前音频播放时间为2000ms,而视频时间为2400ms,则视频提前到达,则当前task2不能显示该视频,需要休眠400ms(2400-2000=400ms),故task2结束后利用公式(1)得到下次获取执行的时间,即休眠400ms。
播放结束或者客户退出时,将各个任务停止,从任务池中解除,最终结束线程池。
本实施例中,任务调度过程中线程池统一安排任务,按照时间顺序进行排序,当系统时间达到或者已过,则立刻执行该任务,若当前时间没有可执行任务时则系统休眠,节省资源,任务结束后根据其执行过程中遇到的情况进行休眠操作,常见的任务休眠为task1中音频渲染缓存已达到阈值,task2视频在渲染与音频和系统时钟同步时发现提前到达,需要休眠。
线程池执行不同task,避免了线程同步带来的开销,不必考虑线程同步安全问题,如task1解复用视频码流,放入视频码流队列数据以及task2从队列中取出视频码流数据不需要线程同步,减小系统开销,且降低开发维护难度,当客户进行seek操作时,需要将解复用缓存、解码缓存、渲染缓存清空,此时由于都是同一线程,故完全可不考虑线程同步带来的问题,操作极大简化。
实施例2
结合附图2所示,本发明所述一种分布式播放器任务调度的系统,包括:任务分配模块201、线程池模块202和轮询模块203;其中,
所述任务分配模块201,用于将移动终端上的播放器的播放过程中解复用模块、音频解码模块、音频渲染模块、视频解码模块、视频渲染模块共5个模块按照任务的复杂度以及耗时程度分为两个任务task1和task2;其中task1包含解复用模块、音频解码模块、音频渲染模块,task2分为视频解码模块、视频渲染模块;
所述线程池模块202,用于将所述task1和task2两个任务统一在一个线程池taskpool中;
所述轮询模块203,用于所述task pool执行在一个统一的线程池中,每一个任务都按照时间顺序来依次轮询进行执行。
所述轮询模块203还用于:
计算下次取出该任务的时间:
tnext=tcursystime+tsleeptime
其中,tnext表示下次取出该任务执行的时间,tcursystime表示当前系统时间,tsleeptime表示此时执行过程中由于某些原因导致需要休眠的时间;
将该任务放入task pool中按照tnext进行时间由小到大排序;
当线程轮询时,将当前系统时间与任务池中时间最小的任务时间比较,如果时间已到或者时间已过,则立刻取出当前任务进行执行,若当前时间没有任务满足,则系统进行休眠。
播放起始时,从文件I/O中获取文件数据,进行文件头信息解析;
解析完毕后启动task1,进行解复用操作;
若文件中包含视频,则同时启动task2,且将task1和task2任务注册在task pool中,初始task2处于休眠状态;
轮询查询视频队列是否有数据,若有数据则执行视频解码、视频渲染操作,否则继续进行休眠。
task1解复用出音频码流,将音频码流送入音频解码器中解码,将解码的原始音频数据放入到渲染队列中;
当渲染队列达到一定阈值,则task1进入休眠状态;若未达到阈值,则继续解复用;
如解复用出视频码流,则放入到视频码流队列中。
视频任务在轮询中得到执行时,判断视频码流队列中是否有数据,若有数据则取出数据进行视频解码;
在渲染过程中与音频、系统时钟进行同步,若时间与之比较已经延后则立刻播放,休眠时长为0;若时间提前到达,则计算提前的时间,用音频时间或系统时间减去视频时间,作为task2休眠的时间。
通过以上各实施例可知,本申请存在的有益效果是:
第一,任务调度过程中线程池统一安排任务,按照时间顺序进行排序,当系统时间达到或者已过,则立刻执行该任务,若当前时间没有可执行任务时则系统休眠,节省资源。
第二、任务调度过程中线程池统一安排任务,按照时间顺序进行排序,各个任务根据执行情况选择休眠时间,分时复用合理安排。
第三、框架执行更为稳定,可维护性强。
第四、客户的播放操作如seek,pause等均在同一线程内完成,5个模块不需要进行线程同步,简化操作。
第五、框架可扩展性强。
第六、任务池中可注册各种任务,如后续需要添加下载任务,则可新建任务池taskpool2,在新任务池中进行轮询的任务下载,比如M3U8的文件下载,M3U8的文件下载设为task1,具体ts流的下载设置为task2,两任务可以轮询完成,当其中一个下载任务发生网络拥塞时休眠,则唤醒另外一个下载任务,分时复用,另外分布式播放器多设备传输播放时,网络操作可以设置任务池进行操作,客户端网络和服务端网络可分别设置为task1,task2,两者轮询执行即可。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (8)

1.一种分布式播放器任务调度的方法,其特征在于,包括:
将移动终端上的播放器的播放过程中解复用模块、音频解码模块、音频渲染模块、视频解码模块、视频渲染模块共5个模块按照任务的复杂度以及耗时程度分为两个任务task1和task2;其中task1包含解复用模块、音频解码模块、音频渲染模块,task2分为视频解码模块、视频渲染模块;
所述task1和task2两个任务统一在一个线程池task pool中;
所述task pool执行在一个统一的线程池中,每一个任务都按照时间顺序来依次轮询执行,具体地,当taskn完成后,根据tnext=tcursystime+tsleeptime计算下次取出该任务的时间,其中,tnext表示下次取出该任务执行的时间,tcursystime表示当前系统时间,tsleeptime表示此时执行过程中由于某些原因导致需要休眠的时间;将该任务放入task pool中按照tnext进行时间由小到大排序;当线程轮询时,将当前系统时间与任务池中时间最小的任务时间比较,如果时间已到或者时间已过,则立刻取出当前任务进行执行,若当前时间没有任务满足,则系统进行休眠;
task pool中的每个任务执行过程中都不会出现阻塞情况,所有的休眠放入到taskpool中进行;若当前时间没有可以执行的任务,则系统休眠。
2.根据权利要求1所述分布式播放器任务调度的方法,其特征在于,所述方法还包括:
播放起始时,从文件I/O中获取文件数据,进行文件头信息解析;
解析完毕后启动task1,进行解复用操作;
若文件中包含视频,则同时启动task2,且将task1和task2任务注册在task pool中,初始task2处于休眠状态;
轮询查询视频队列是否有数据,若有数据则执行视频解码、视频渲染操作,否则继续进行休眠。
3.根据权利要求2所述分布式播放器任务调度的方法,其特征在于,所述方法还包括:
task1解复用出音频码流,将音频码流送入音频解码器中解码,将解码的原始音频数据放入到渲染队列中;
当渲染队列达到一定阈值,则task1进入休眠状态;若未达到阈值,则继续解复用;
如解复用出视频码流,则放入到视频码流队列中。
4.根据权利要求1所述分布式播放器任务调度的方法,其特征在于,所述方法还包括:
视频任务在轮询中得到执行时,判断视频码流队列中是否有数据,若有数据则取出数据进行视频解码;
在渲染过程中与音频、系统时钟进行同步,若时间与之比较已经延后则立刻播放,休眠时长为0;若时间提前到达,则计算提前的时间,用音频时间或系统时间减去视频时间,作为task2休眠的时间。
5.一种分布式播放器任务调度的系统,其特征在于,包括:任务分配模块、线程池模块和轮询模块;其中,
所述任务分配模块,用于将移动终端上的播放器的播放过程中解复用模块、音频解码模块、音频渲染模块、视频解码模块、视频渲染模块共5个模块按照任务的复杂度以及耗时程度分为两个任务task1和task2;其中task1包含解复用模块、音频解码模块、音频渲染模块,task2分为视频解码模块、视频渲染模块;
所述线程池模块,用于将所述task1和task2两个任务统一在一个线程池task pool中;
所述轮询模块,用于所述task pool执行在一个统一的线程池中,每一个任务都按照时间顺序来依次轮询进行执行,具体地,当taskn完成后,根据tnext=tcursystime+tsleeptime计算下次取出该任务的时间,其中,tnext表示下次取出该任务执行的时间,tcursystime表示当前系统时间,tsleeptime表示此时执行过程中由于某些原因导致需要休眠的时间;将该任务放入taskpool中按照tnext进行时间由小到大排序;当线程轮询时,将当前系统时间与任务池中时间最小的任务时间比较,如果时间已到或者时间已过,则立刻取出当前任务进行执行,若当前时间没有任务满足,则系统进行休眠。
6.根据权利要求5所述分布式播放器任务调度的系统,其特征在于,所述轮询模块还用于:
播放起始时,从文件I/O中获取文件数据,进行文件头信息解析;
解析完毕后启动task1,进行解复用操作;
若文件中包含视频,则同时启动task2,且将task1和task2任务注册在task pool中,初始task2处于休眠状态;
轮询查询视频队列是否有数据,若有数据则执行视频解码、视频渲染操作,否则继续进行休眠。
7.根据权利要求6所述分布式播放器任务调度的系统,其特征在于,所述轮询域模块还用于:
task1解复用出音频码流,将音频码流送入音频解码器中解码,将解码的原始音频数据放入到渲染队列中;
当渲染队列达到一定阈值,则task1进入休眠状态;若未达到阈值,则继续解复用;
如解复用出视频码流,则放入到视频码流队列中。
8.根据权利要求7所述分布式播放器任务调度的系统,其特征在于,所述轮询模块还用于:
视频任务在轮询中得到执行时,判断视频码流队列中是否有数据,若有数据则取出数据进行视频解码;
在渲染过程中与音频、系统时钟进行同步,若时间与之比较已经延后则立刻播放,休眠时长为0;若时间提前到达,则计算提前的时间,用音频时间或系统时间减去视频时间,作为task2休眠的时间。
CN201510549608.4A 2015-08-31 2015-08-31 一种分布式播放器任务调度的方法及系统 Active CN105120323B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510549608.4A CN105120323B (zh) 2015-08-31 2015-08-31 一种分布式播放器任务调度的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510549608.4A CN105120323B (zh) 2015-08-31 2015-08-31 一种分布式播放器任务调度的方法及系统

Publications (2)

Publication Number Publication Date
CN105120323A CN105120323A (zh) 2015-12-02
CN105120323B true CN105120323B (zh) 2018-04-13

Family

ID=54668169

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510549608.4A Active CN105120323B (zh) 2015-08-31 2015-08-31 一种分布式播放器任务调度的方法及系统

Country Status (1)

Country Link
CN (1) CN105120323B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105898535A (zh) * 2015-12-30 2016-08-24 乐视致新电子科技(天津)有限公司 提高起播速度的方法、视频播放器及电子装置
CN110308975B (zh) * 2018-03-27 2022-02-11 阿里巴巴(中国)有限公司 用于播放器起播的方法和装置
CN110300283B (zh) * 2019-06-26 2020-11-27 视联动力信息技术股份有限公司 一种基于视联网的监控巡检控制方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567084A (zh) * 2010-12-31 2012-07-11 新奥特(北京)视频技术有限公司 一种多任务并行调度机制
CN102722417A (zh) * 2012-06-07 2012-10-10 腾讯科技(深圳)有限公司 一种扫描任务的分配方法和装置
CN103177744A (zh) * 2011-12-21 2013-06-26 深圳市快播科技有限公司 一种用于移动设备的低功耗播放方法和装置
CN104536827A (zh) * 2015-01-27 2015-04-22 浪潮(北京)电子信息产业有限公司 一种数据调度方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140204103A1 (en) * 2011-09-02 2014-07-24 Freescale Semiconductor, Inc. Data processing system and method for task scheduling in a data processing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567084A (zh) * 2010-12-31 2012-07-11 新奥特(北京)视频技术有限公司 一种多任务并行调度机制
CN103177744A (zh) * 2011-12-21 2013-06-26 深圳市快播科技有限公司 一种用于移动设备的低功耗播放方法和装置
CN102722417A (zh) * 2012-06-07 2012-10-10 腾讯科技(深圳)有限公司 一种扫描任务的分配方法和装置
CN104536827A (zh) * 2015-01-27 2015-04-22 浪潮(北京)电子信息产业有限公司 一种数据调度方法和装置

Also Published As

Publication number Publication date
CN105120323A (zh) 2015-12-02

Similar Documents

Publication Publication Date Title
US10930318B2 (en) Gapless video looping
CN104159150B (zh) 云终端、云服务器、媒体数据流播放系统及方法
CN111541913B (zh) 一种拼接屏的视频播放方法、装置、计算机设备和介质
CN104837051B (zh) 视频播放方法及客户端
CN105187896B (zh) 多分段的媒体文件播放方法和系统
CN106385635B (zh) Gif动画实时控制方法及播放器
CN103475927B (zh) 在线视频实时变速播放方法及系统
WO2017096885A1 (zh) 视频播放方法及装置
CN105120323B (zh) 一种分布式播放器任务调度的方法及系统
CN106817613B (zh) 实现音视频内容播放的方法和装置
CN109862357A (zh) 低延迟的云游戏图像编码方法、装置、设备和存储介质
WO2017130035A1 (en) A system and methods thereof for auto-playing video content on mobile devices
CN103270764B (zh) 用于处理视频信号的方法和设备
KR101668283B1 (ko) 레이턴시를 고려한 영상 출력 방법, 이를 수행하는 장치 및 클라우드 스트리밍 서비스 시스템
CN103974062B (zh) 图像显示装置、图像显示系统和图像显示方法
CN113079386A (zh) 一种视频在线播放方法、装置、电子设备及存储介质
CN103139610B (zh) 集群视频同步播放的方法和装置
CN106331553B (zh) 一种存储视频的方法、装置及电子设备
US20100076944A1 (en) Multiprocessor systems for processing multimedia data and methods thereof
CN102047662A (zh) 编码器
CN104683882B (zh) 一种流媒体倍速文件的生成及播放方法、装置
CN112019858B (zh) 一种视频播放方法、装置、计算机设备和存储介质
CN110855645B (zh) 流媒体数据播放方法、装置
CN104811782A (zh) 同步影音码流的解码器与解码方法
CN115243089B (zh) 一种音视频同步渲染方法及装置、电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 100191 Beijing, Xueyuan Road No. 51, the first to enjoy the science and technology building, floor 6,

Applicant after: Storm group Limited by Share Ltd

Address before: 100191 Beijing, Xueyuan Road No. 51, the first to enjoy the science and technology building, floor 6,

Applicant before: Beijing Baofeng Technology Co., Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
PP01 Preservation of patent right
PP01 Preservation of patent right

Effective date of registration: 20190705

Granted publication date: 20180413