一种微课播放引擎及微课播放方法

文档序号:7799269阅读:286来源:国知局
一种微课播放引擎及微课播放方法
【专利摘要】本发明公开了一种微课播放引擎,包括:装载器、逻辑控制器、资源堆栈单元、渲染控制器、计时器、音频控制器;同时,本发明在一种微课播放引擎的基础上提出了一种微课播放方法,本发明通过优化算法,避免在制作产品的过程中,出现零时间点和最末时间点暂停时录制的无限制的清线、清屏、撤销和恢复操作播放出现资源数据的丢失;将缓存数据与磁盘零时文件置换,防止在时长超过三十分钟以上的课件出现内存泄漏,保证了可用性和稳定性;设计多种队列来保存不同动作,并结合反向帧、全量帧来进行性能提升,这样缩短了用户拖动播放等待时间,在后续播放上能够感觉无延迟。
【专利说明】一种微课播放引擎及微课播放方法
【技术领域】
[0001]本发明涉及一种微课播放引擎及微课播放方法,主要是在android平板终端播放录制的微型课件,应用于学校知识重点内容的讲解和企业员工培训。
【背景技术】
[0002]在PC终端有相应的播放应用,主要是对视频文件或Flash动画文件,生产标准的多媒体文件,这类多媒体文件较大,几分钟的课件几十兆,对数据传送是个瓶颈,IOS平板终端的播放应用是根据自己录制引擎应用产生的自定义多媒体文件格式进行播放,但是终端对普通消费者消费能力是个瓶颈,在Android终端还未出现类似像IOS—样的产品,可以对用户在平板终端第一人称录制的多媒体内容进行播放。传统的播放引擎存在渲染缺陷,会出现线条过细残缺现象,由于存在性能缺陷,导致拖动播放有几百毫秒延迟,因无缓冲数据需要渲染界面和缓冲准备,同时由于存在功能缺陷,需一次性装载完后进行播放。

【发明内容】

[0003]本发明的目的在于提供一种微课播放引擎及微课播放方法,能够克服上述缺陷,使用了线程队列管理池、纹理渲染引擎,用户可以下载多媒体内容,在平板终端随时随地播放,也可在线播放,填补了市场空白。
[0004]本发明通过以下技术方案实现:
一种微课播放引擎,包括:
装载器:与逻辑控制器相连接,用于读取微课文件并将读取的数据发送到逻辑控制
器;
逻辑控制器:分别与资源堆栈单元、渲染控制器相连接,用于把分类的资源数据进行分类解析、数据运算、将零时数据压入资源堆栈、检查数据堆栈是否达到阀值、发送数据、组装数据;
资源堆栈单元:用于接收逻辑控制器组装好的零时数据;
渲染控制器:用于控制渲染的方式和算法策略,对数据进行渲染并显示;
计时器:与逻辑控制器相连接,用于记录从逻辑控制器获得的时间点并计时;
音频控制器:与计时器相连接,用于接收计时器信息进行微课播放或停止播放。
[0005]进一步地,为更好地实现本发明,还包括置换器,所述置换器分别与逻辑控制器、资源堆栈单元相连接。
[0006]进一步地,为更好地实现本发明,所述逻辑控制器将数据组装为全量帧和反向帧,全量帧从零时间点且每隔10秒生成一个当前时刻显示数据,反向帧每次撤销操作前的那时刻显示数据。
[0007]进一步地,为更好地实现本发明,所述渲染控制器的渲染方式为显示数据写入位图bitmap之后放入到画布 canvas ο
[0008]进一步地,为更好地实现本发明,所述渲染控制器的渲染策略为使用双缓存,一个缓存记录后续显示数据,另一个缓存当前显示渲染数据,双缓存交替工作。
[0009]进一步地,为更好地实现本发明,还包括总控器,所述总控器分别与装载器、逻辑控制器、资源堆栈单元、渲染控制器、计时器、音频控制器、置换器相连接。
[0010]本发明在设计了一种微课播放引擎的同时设计了一种微课播放方法,包括以下步骤:
用户启动微课文件时,包括以下步骤:
(1)启动:点击微课文件,启动用例;
(2)读取微课文件:装载器读取微课文件;
(3)分解资源数据:根据文件规范协议进行解析,动作资源、声音资源、图片素材资源分类放入到待处理队列,声音和图片生成零时缓存文件;
(4)发送资源数据:装载器把数据发送给逻辑控制器;
(5)数据运算:逻辑控制器把分类的资源数据进行分类解析,动作资源解析成画笔动作、擦子动作、撤销动作、恢复动作、清线动作、清屏动作、插入图片动作、删除图片动作、旋转图片、置前置后图片;如果是图片资源转义成对应的编号和引用地址;如果是画笔动作和擦子动作把消息转义成轨迹点坐标数组存放到线条对象;
(6)压入堆栈:逻辑控制器把组装好的零时数据压入到资源堆栈单元,为播放时提供待运算处理的数据;
(7)是否超过堆栈容量:检查是否超过堆栈队列定义的阀值,图片总数量的大小或声音实体数据过大;
(8)发送数据缓存到磁盘缓存:发送组装好的零时数据给置换器,置换器把数据保存到磁盘缓存区;
(9)请求指定的数据:堆栈数据处理完毕后,请求指定时间片的数据;
(10)弹出数据:资源堆栈单元根据时间片标记弹出符合时间的内存堆栈数据;
(11)组装数据:逻辑控制器组装成全量帧和反向帧;全量帧从零时间点,然后每隔10秒生成一个当前时刻显示数据,反向帧是每次撤销操作前的那时刻显示数据;前者是为了拖动播放不需要从头开始运算显示数据,后者是为了撤销操作也不需要从头开始运算显示数据;
(12)发送零时间点的数据:发送O点时间片的全量数据给渲染控制器;
(13)渲染并显示:渲染控制器控制渲染的方式和算法策略,渲染方式为显示数据写入bitmap然后放入到canvas,算法策略使用了双缓存,一个缓存记录后续显示数据,另一个缓存当前显示渲染数据,这两个缓存交替工作,从而解决渲染性能问题。
[0011]用户启动微课文件后,开始播放微课文件,包括以下步骤:
(14)播放:用户播放,播放又可能是拖动播放或继续播放,用例开始;
(15)启动计时器:如果是拖动事件逻辑控制器获得进度条的时间点,如果是继续播放获取内存时间标志中的时间,如果是从头开始播放内存时间标志为零,然后启动/唤醒计数器中线程,同时计时器开始计时;
(16)启动声首播放:启动首频控制器解码播放;
(17)启动显示数据:启动逻辑控制器开始显示逻辑;
(18)获取当前时间点的数据:逻辑控制器请求指定时间片的数据; (19)弹出数据:资源堆栈单元根据时间片标记弹出符合时间的内存堆栈数据;
(20)组装数据:逻辑控制器组装显示数据并向全量帧或反向帧中追加;
(21)推送数据:发送当前时间片的全量数据给渲染控制器;
(22)渲染并显示:渲染控制器把显示数据写入bitmap然后放入到canvas;这样按时间片进行不停地读取、组装和渲染,从而形成了动态的显示效果;
(23)暂停:如果用户点击暂停,计时器停止计时;
(24)停止声音播放:用户进行步骤(23)操作时,计时器向音频控制器发送停止播放指令,声音播放暂停;
(25)通知停止:用户进行步骤(23)操作时,计时器向逻辑控制器发送停止组装指令,组装线程暂停;
(26)检查数据:资源堆栈单元中一个线程检查资源堆栈剩余数据;
(27)如果未装置,进行置换:如果资源堆栈单元发现后续的数据没有在资源堆栈队列中,向置换器发送需装入下个时间段的数据;
(28)返回数据:置换器根据时间段标志读取磁盘缓存的数据并返回;
(29)替换堆栈队列数据:资源堆栈单元根据返回的数据压入到对应的堆栈队列。
[0012]本发明与现有技术相比,具有以下有益效果:
(1)本发明通过优化算法,避免在制作产品的过程中,出现零时间点和最末时间点暂停时录制的无限制的清线、清屏、撤销和恢复操作播放出现资源数据的丢失;
(2)本发明通过设置置换器,将缓存数据与磁盘零时文件置换,防止在时长超过三十分钟以上的课件出现内存泄漏,保证了可用性和稳定性;
(3)本发明通过设计多种队列来保存不同动作,并结合反向帧、全量帧来进行性能提升,这样缩短了用户拖动播放等待时间,在后续播放上能够感觉无延迟。
【专利附图】

【附图说明】
[0013]图1为本发明启动状态逻辑组件连接图;
图2为本发明播放状态逻辑组件连接图;
图3为本发明启动状态时序图;
图4为本发明播放状态时序图。
【具体实施方式】
[0014]下面结合具体实施例对本发明进行进一步详细介绍,但本发明的实施方式不限于此。
[0015]实施例1:
如图1、图2所示,一种微课播放引擎,包括:
装载器:与逻辑控制器相连接,用于读取微课文件并将读取的数据发送到逻辑控制器;逻辑控制器:分别与资源堆栈单元、渲染控制器相连接,用于把分类的资源数据进行分类解析、数据运算、将零时数据压入资源堆栈、检查数据堆栈是否达到阀值、发送数据、组装数据;资源堆栈单元:用于接收逻辑控制器组装好的零时数据;渲染控制器:用于控制渲染的方式和算法策略,对数据进行渲染并显示;计时器:与逻辑控制器相连接,用于记录从逻辑控制器获得的时间点并计时;音频控制器:与计时器相连接,用于接收计时器信息进行微课播放或停止播放。
[0016]为更好地实现本发明,保证可用性和稳定性,还包括置换器,所述置换器分别与逻辑控制器、资源堆栈单元相连接。通过将缓存数据与磁盘零时文件置换,防止在时长超过三十分钟以上的课件出现内存泄漏,从而可以保证可用性和稳定性。
[0017]为更好地实现本发明,避免播放延迟现象,所述逻辑控制器将数据组装为全量帧和反向帧,全量帧从零时间点且每隔10秒生成一个当前时刻显示数据,反向帧每次撤销操作前的那时刻显示数据。通过设计多种队列来保存不同动作,并结合反向帧、全量帧来进行性能提升,这样缩短了用户拖动播放等待时间,在后续播放上能够感觉无延迟。
[0018]为更好地实现本发明,所述渲染控制器的渲染方式为显示数据写入位图bitmap之后放入到画布canvas。同时为更好地实现本发明,所述渲染控制器的渲染策略为使用双缓存,一个缓存记录后续显示数据,另一个缓存当前显示渲染数据,双缓存交替工作,可以防止数据丢失。
[0019]为更好地实现本发明,便于关闭退出应用,还包括总控器,所述总控器分别与装载器、逻辑控制器、资源堆栈单元、渲染控制器、计时器、音频控制器、置换器相连接。用户需要退出应用时,通过总控器销毁所有控制器,关闭所有线程并退出应用。
[0020]实施例2:
本实施例在实施例1的基础上提出了一种微课播放方法,如图3所示,在用户通过步骤
(I)启动微课文件时,通过点击用户界面组件(UI),点击微课文件,启动用例;
装载器通过步骤(2)读取微课文件,装载器通过步骤(3)根据文件规范协议进行解析,动作资源、声音资源、图片素材资源分类放入到待处理队列,声音和图片生成零时缓存文件,装载器通过步骤(4)将数据发送给逻辑控制器;
逻辑控制器通过步骤(5)把分类的资源数据进行分类解析,动作资源解析成画笔动作、擦子动作、撤销动作、恢复动作、清线动作、清屏动作、插入图片动作、删除图片动作、旋转图片、置前置后图片;如果是图片资源转义成对应的编号和引用地址;如果是画笔动作和擦子动作把消息转义成轨迹点坐标数组存放到线条对象;逻辑控制器通过步骤(6)把组装好的零时数据压入到资源堆栈,为播放时提供待运算处理的数据;逻辑控制器通过步骤(7)检查是否超过堆栈队列定义的阀值,图片总数量的大小或声音实体数据过大;在堆栈数据处理完毕后,逻辑控制器通过步骤(9)请求指定的时间片的数据;资源通过步骤(10)根据时间片标记弹出符合时间的内存堆栈数据;逻辑控制器通过步骤(12)发送O点时间片的全量数据给渲染控制器,渲染控制器通过步骤(13)对数据进行渲染并显示。
[0021]如图4所示,在用户需要播放微课文件时,通过点击用户界面组件(UI),点击微课文件进行播放操作:
通过步骤(14)播放微课文件,播放有可能是拖动播放或继续播放,用例开始;如步骤
(15)所示,如果是拖动事件逻辑控制器获得进度条的时间点,如果是继续播放获取内存时间标志中的时间,如果是从头开始播放内存时间标志为零,然后启动/唤醒计数器中线程,同时计时器开始计时;计时器通过步骤(16)启动音频控制器解码播放,计时器通过步骤
(17)启动逻辑控制器开始显示逻辑;
逻辑控制器通过步骤(18)向资源堆栈单元请求指定时间片的数据,从而向资源堆栈单元获取当前时间点的数据,资源堆栈单元通过步骤(19)根据时间片标记弹出符合时间的内存堆栈数据;
逻辑控制器空过步骤(20 )组装显示数据并向全量帧或反向帧中追加,逻辑控制器通过步骤(21)向渲染控制器发送当前时间片的全量数据;
当用户通过步骤(23)点击暂停时,计时器停止计时,计时器通过步骤(24)向音频控制器发送停止播放指令,声音播放暂停;计时器通过步骤(25)向逻辑控制器发送停止组装指令,组装线程暂停。
[0022]本实施例包括以下协议规范:
1.文件头长度(4字节int);
2.XML格式的文件头,定义了每个资源在微课文件中的数据位置,格式如下:
<Vke>
〈TotalTime value=〃十个Byte (不足十个的前面补O) 〃/>//微课总时间
〈AudioCodecType value=〃 一个 Byte (默认为 O) 〃/>//音频编码类型
<AudioSampIeRate value=〃十个Byte (不足十个的前面补O) 〃/> //音频码率 <AudioChanneICount value=〃 一个 Byte (默认为 1)〃/>// 音频声道数
〈AudioFrameSize value=〃十个Byte (不足十个的前面补O) 〃/> //音频帧大小〈AudioDataPosition value=〃十个Byte (不足十个的前面补0)〃/> //音频数据的位置
<ActionDataPosition value=〃十个Byte (不足十个的前面补0)〃/> //动作数据的位置
〈ResourceDataPosition value=〃十个Byte (不足十个的前面补0)〃/> //资源数据的位置
〈VkeWidth value=〃十个Byte (不足十个的前面补O) 〃/> //微课录制时的宽度〈VkeHeight value=〃十个Byte (不足十个的前面补O) 〃/> //微课录制时的高度〈AudioMappingDataPosition value=〃十个 Byte (不足十个的前面补 O) 〃/> //音频数据包和文件位置映射数据的位置</Vke>
通过自定义多媒体文件格式,vke后缀的文件数据分为头信息和资源信息,头信息定义了数据协议规则,资源信息分为痕迹资源信息、图片资源信息和声音资源信息。
[0023]Android环境组件包括Canvas、Media Framework等,Android端自定义多媒体数据播放功能,装载、解析、资源队列压栈模式,根据资源生成反向帧、全量帧、动态帧数据。
[0024]UI组件包括播放进度条、音量控制条、播放暂停开关。
[0025]如图3所示,在用户启动播放引擎时,逻辑控制器通过步骤(8)发送组装好的零时数据给置换器,置换器把数据保存到磁盘区;在用户播放微课文件时,如图4所示,资源堆栈单元通过步骤(26)检查资源堆栈单元剩余数据,如果发现后续的数据没有在资源堆栈队列中,资源堆栈单元通过步骤(27)向置换器发送需装入下个时间段的数据,置换器通过步骤(28)根据时间段标志 读取磁盘缓存的数据并返回,资源堆栈单元通过步骤(29)根据返回的数据压入到对应的堆栈队列。
[0026]渲染控制器通过步骤(22)把显示数据写入位图bitmap然后放入到画布canvas,这样按时间片进行不停地读取、组装和渲染,从而形成了动态的显示效果。
[0027]通过优化算法,能够防止出现零时间点和最末时间点暂停时录制的无限制的清线、清屏、撤销和恢复操作播放出现资源数据的丢失。本实施例其他部分与实施例1相同,不再赘述。
[0028]以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
【权利要求】
1.一种微课播放引擎,其特征在于,包括: 装载器:与逻辑控制器相连接,用于读取微课文件并将读取的数据发送到逻辑控制器; 装载器:分别与资源堆栈单元、渲染控制器相连接,用于把分类的资源数据进行分类解析、数据运算、将零时数据压入资源堆栈、检查数据堆栈是否达到阀值、发送数据、组装数据; 资源堆栈单元:用于接收逻辑控制器组装好的零时数据; 渲染控制器:用于控制渲染的方式和算法策略,对数据进行渲染并显示; 计时器:与逻辑控制器相连接,用于记录从逻辑控制器获得的时间点并计时; 音频控制器:与计时器相连接,用于接收计时器信息进行微课播放或停止播放。
2.根据权利要求1所述的一种微课播放引擎,其特征在于:还包括置换器,所述置换器分别与逻辑控制器、资源堆栈单元相连接。
3.根据权利要求2所述的一种微课播放引擎,其特征在于:还包括总控器,所述总控器分别与装载器、逻辑控制器、资源堆栈单元、渲染控制器、计时器、音频控制器、置换器相连接。
4.根据权利要求1所述的一种微课播放引擎,其特征在于:所述逻辑控制器将数据组装为全量帧和反向帧,全量帧从零时间点且每隔10秒生成一个当前时刻显示数据,反向帧每次撤销操作前的那时刻显示数据。`
5.根据权利要求1所述的一种微课播放引擎,其特征在于:所述渲染控制器的渲染方式为显示数据写入位图bitmap之后放入到画布canvas。
6.根据权利要求1所述的一种微课播放引擎,其特征在于:所述渲染控制器的渲染策略为使用双缓存,一个缓存记录后续显示数据,另一个缓存当前显示渲染数据,双缓存交替工作。
7.根据上述权利要求所述的一种微课播放方法,其特征在于:包括以下步骤: 用户启动微课文件时,包括以下步骤: (1)启动:点击微课文件,启动用例; (2)读取微课文件:装载器读取微课文件; (3)分解资源数据:根据文件规范协议进行解析,动作资源、声音资源、图片素材资源分类放入到待处理队列,声音和图片生成零时缓存文件; (4)发送资源数据:装载器把数据发送给逻辑控制器; (5)数据运算:逻辑控制器把分类的资源数据进行分类解析,动作资源解析成画笔动作、擦子动作、撤销动作、恢复动作、清线动作、清屏动作、插入图片动作、删除图片动作、旋转图片、置前置后图片;如果是图片资源转义成对应的编号和引用地址;如果是画笔动作和擦子动作把消息转义成轨迹点坐标数组存放到线条对象; (6)压入堆栈:逻辑控制器把组装好的零时数据压入到资源堆栈单元,为播放时提供待运算处理的数据; (7)是否超过堆栈容量:检查是否超过堆栈队列定义的阀值,图片总数量的大小或声音实体数据过大; (8)发送数据缓存到磁盘缓存:发送组装好的零时数据给置换器,置换器把数据保存到磁盘缓存区; (9)请求指定的数据:堆栈数据处理完毕后,请求指定时间片的数据; (10)弹出数据:资源堆栈单元根据时间片标记弹出符合时间的内存堆栈数据; (11)组装数据:逻辑控制器组装成全量帧和反向帧;全量帧从零时间点,然后每隔10秒生成一个当前时刻显示数据,反向帧是每次撤销操作前的那时刻显示数据;前者是为了拖动播放不需要从头开始运算显示数据,后者是为了撤销操作也不需要从头开始运算显示数据; (12)发送零时间点的数据:发送O点时间片的全量数据给渲染控制器; (13)渲染并显示:渲染控制器控制渲染的方式和算法策略,渲染方式为显示数据写入bitmap然后放入到canvas,算法策略使用了双缓存,一个缓存记录后续显示数据,另一个缓存当前显示渲染数据,这两个缓存交替工作,从而解决渲染性能问题; 用户启动微课文件后,开始播放微课文件,包括以下步骤: (14)播放:用户播放,播放又可能是拖动播放或继续播放,用例开始; (15)启动计时器:如果是拖动事件逻辑控制器获得进度条的时间点,如果是继续播放获取内存时间标志中的时间,如果是从头开始播放内存时间标志为零,然后启动/唤醒计数器中线程,同时计时器开始计时; (16)启动声首播放:启动首频控制器解码播放; (17)启动显示数据:启动逻辑控制器开始显示逻辑;` (18)获取当前时间点的数据:逻辑控制器请求指定时间片的数据; (19)弹出数据:资源堆栈单元根据时间片标记弹出符合时间的内存堆栈数据; (20)组装数据:逻辑控制器组装显示数据并向全量帧或反向帧中追加; (21)推送数据:发送当前时间片的全量数据给渲染控制器; (22)渲染并显示:渲染控制器把显示数据写入bitmap然后放入到canvas;这样按时间片进行不停地读取、组装和渲染,从而形成了动态的显示效果; (23)暂停:如果用户点击暂停,计时器停止计时; (24)停止声音播放:用户进行步骤(23)操作时,计时器向音频控制器发送停止播放指令,声音播放暂停; (25)通知停止:用户进行步骤(23)操作时,计时器向逻辑控制器发送停止组装指令,组装线程暂停; (26)检查数据:资源堆栈单元中一个线程检查资源堆栈剩余数据; (27)如果未装置,进行置换:如果资源堆栈单元发现后续的数据没有在资源堆栈队列中,向置换器发送需装入下个时间段的数据; (28)返回数据:置换器根据时间段标志读取磁盘缓存的数据并返回; (29)替换堆栈队列数据:资源堆栈单元根据返回的数据压入到对应的堆栈队列。
【文档编号】H04N21/85GK103826167SQ201410099758
【公开日】2014年5月28日 申请日期:2014年3月18日 优先权日:2014年3月18日
【发明者】夏萱 申请人:上海景界信息科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1