多媒体文件自动生成系统的设计

2013-02-05 06:37季聿阶张忠能
微型电脑应用 2013年8期
关键词:终端服务器模板

季聿阶,张忠能

0 引言

随着网络以及多媒体技术的快速发展,在日常生活中,随处可以看见大大小小的LED大屏幕,无时无刻地播放着各种各样的多媒体节目。

论文重点研究了多媒体节目的表现形式,对当前市场上面比较流行的一款多媒体播放软件进行升级开发,其核心是将所有需要展示的素材文件(包括视频、图片、文字等)通过组合的形式拼装成一系列的页面文件,通过网络的方式传输到各个播放终端上面,最后在播放终端的浏览器上播放。用户可以根据不同的模板生成不同样式的播放文件。此外,还增加了对外的Web Service接口,允许其他应用程序调用其开放的 API来自动生成可以播放的多媒体文件,并定时下发到各个播放终端予以播放,大为缩短了多媒体文件的生成时间以及播放效率。

1 多媒体文件的自动生成

通过该系统,用户看到的多媒体节目是多个视频、图片、文字以任意方式组合,再以任意顺序播放而成的节目。

论文中的多媒体文件主要分两个层级:Unit(单元)和Program(节目)。Unit实为模板文件,每一个 Unit里面都可以包含多个视频、图片或多段文字信息。其中,视频可以根据播放列表,循环播放;图片可以根据设定的时间间隔,不断地切换;文字则可以以走马灯的形式滚动播出。Program是控制Unit的顶层逻辑,通过控制每一个Unit的播放顺序以及播放时间,以达到不同模板定时切换的效果。

论文中自动生成多媒体文件的过程是系统自动编写Unit和Program的过程。系统首先读取用户设计的节目样式配置文件,将其中需要使用到的所有素材文件(视频、图片、文字等)分别发送到指定终端上面,再根据页面的编写规则自动生成相应的HTML代码,继而将这些文件也一同发送到指定终端,最后在终端上面解析播放。

2 多媒体文件自动生成系统设计与实现

2.1 多媒体文件自动生成系统设计

系统主要分为2大模块7个子模块:生成模块包括读取节目配置信息、生成标准节目类和生成节目文件,传输模块包括传输素材文件、传输节目文件、终端素材置换和执行播放,如图1所示:

图1 系统整体结构设计

生成模块主要的任务是读取用户的配置信息并生成所有的节目文件。首先,用户根据想要播放的节目效果先行设计节目样式,并保存成指定的xml格式,系统会读取用户的配置信息并予以解析,从中提取出相应的信息封装成一个标准的节目类,与此同时,系统会向用户报告,系统已经接收到节目请求,正在执行节目文件的生成。紧接着,系统就开始根据标准节目类生成节目文件。

传输模块主要的任务是将所有素材文件和节目文件上传至指定的播放终端,进行播放。首先,用户会将节目所需的所有素材上传到服务器的指定目录下,在生成模块完成了节目文件的生成工作之后,标准节目类会搜索该节目需要的素材,并将这些素材上传到指定的播放终端。随后,待素材传输完毕,系统才会将节目文件传输至指定的终端。最后,当该节目到达播放时间,系统会将该节目的所有素材文件和节目文件切换到播放目录之下,执行播放,并报告用户播放结果。

2.2 多媒体文件自动生成系统实现过程

2.2.1 实现技术:Web Service,FTP与Java多线程技术

Web Service是一套被设计成可以支持机器与机器之间通过网络互相操作的软件系统。[1]它有一个被描述成机器可处理格式(通常是 WSDL[2])的接口,其它系统通过使用SOAP[3]消息描述的方式使用Web Service交互。FTP是一个基于 TCP/IP协议簇中的主机与主机间的文件传输协议。[4]Java多线程是将一些可同时执行的程序并发进行,大大加快了程序的响应速度[5]。

论文使用Apache Axis2对多媒体文件自动生成系统搭建了一个Web Service[1]的服务器和客户端,方便云端应用程序对其进行访问,其调用结构,如图2所示:

图2 系统整体调用结构

云端应用程序首先将节目所需的一系列素材文件上传至系统的数据服务器,然后调用系统开放的Web Service接口,执行生成节目的过程。系统在接收到云端应用程序的请求后,会同时异步回报接收信息成功。在节目播放之后,服务器会发起对云端应用程序的Web Service请求,报告整个节目播放的结果。

2.2.2 读取节目配置信息

节目配置信息是一个XML文档,其结构,如图3所示:

图3节目配置信息的xml结构

config是根节点,对应Program层级。其id为节目序号;title为节目标题;operType为操作指令;startDate为节目开始的日期;endDate为节目结束的日期;clients为需要播放的终端id;volume为节目的音量;templates为模板列表,该节点下的template节点对应组成节目的Unit层级。其中,id为模板序号;playTime为模板播放的时间;bgColor为模板的背景颜色;fontColor为模板中文字的颜色;positions为不同位置的素材列表,该节点下仅有position这一类子节点。其id为位置序号;type为该位置的素材类型;items为素材列表,该节点下也仅有item这一类子节点。name表示素材的名字;time表示素材播放的时间。

使用JDOM2来解析XML文件,构造成一个Document类:同时,开辟新线程继续执行后续指定,主线程回报用户接收信息成功:

2.2.3 生成标准节目类

根据图3的配置信息,分别构造Program类、Template类、Position类和Item类,将相应的子节点构造成相应的类的字段。

2.2.2小节中解析而得的 Document类已经包含了所有XML的结构信息,所以可以直接从中获取配置信息。首先,获得根节点信息:

Program p = newProgram();

Element pElementParent = doc.getRootElement();

接着,按照Item类、Position类、Template类、Program类的顺序,利用pElementParent的get方法,获取所有节点信息,一层一层封装,最终,获得一个完整的Program类实例p。

2.2.4 生成节目文件

需要生成的节目文件只有Program和Unit两类文件。

对于Program,系统将其拆分成三个部分,分别予以生成:

writeProgHead方法会将标准的 HTML头部信息写入content参数,其中包括必要的JavaScript包和一些初始化信息,如窗口位置和需要加载的 Unit数量;writeProgMid方法会将每一个需要加载的Unit的id、地址和播放的时间写入 content参数;writeProgTail方法会将整个节目播放的起止时间、进入Unit的入口函数以及HTML的结束标记写入content参数。最终,content输出成一个Program文件。

对于Unit,系统会分别针对不同的模板进行改写,予以生成,目前,系统中比较常用的两个模板分别是图片文字模板和视频文字模板:

系统内置了图片、视频和文字三个模块的HTML组件代码,这些代码是由人工手动编写而成的。updatePicUnit方法和updateMovUnit方法会分别选择相应的代码予以拼接,修改字体和背景颜色,以及视频的音量等信息,最终生成一个新的Unit文件。

2.2.5 传输文件

传输文件分为传输素材文件和传输节目文件两种,均通过 FTP传输,即传输方式相同,但其传输时机不同:素材文件占用空间可能过大,无法与节目播放同时传输,因此必须提前进行传输;而节目文件非常小,只需要在节目需要播放之前传输即可。

2.2.6 终端素材置换与执行播放

当节目需要播放时,播放终端会将节目所需要的素材文件全部转移至终端的播放目录下,再将原始播放目录下的素材文件清空,并执行节目的播放。播放命令完成后,服务器会通过Web Service调用回报用户播放结果。

3 技术难点及解决方案

论文在实现系统的过程中,碰到了很多技术难点,对应的解决方案,如表1所示:

表1 技术难点及解决方案

3.1 同一模板连续播放多个视频的处理

系统对于上传的视频文件,只会默认播放第一个视频,当用户在一个 Unit上播放多个视频时,就会产生问题。解决方案是创建一个.asx格式的播放列表文件,每次需要播放视频时,就会去读取相应的.asx文件,按照其中的视频列表,逐个播放。其中,播放列表的.asx文件的XML结构,如图4所示:

图4 播放列表文件的xml结构

3.2 Web Service连接超时的处理

在使用Apache Axis2搭建Web Service服务器和客户端时,若传输素材文件过大,会导致传输时间过长的问题,从而导致服务器超时,连接中断。解决方案是在Axis2的配置文件中,对服务器的连接时间进行设置,默认值为30秒,考虑到实际情况,实际传输过程可能会非常长,所以这里尽可能的将该值调大。

另一方面,在Web Service调用过程中,将其异步化也是解决超时的一个办法:

最后服务器sender发出Web Service指令后,直接采取忽略结果的措施,而不是挂起等待返回结果。相当于异步通讯,加快响应速度。

3.3 远程登录播放终端读写权限的处理

系统的播放终端运行Linux操作系统,因此,在使用Java远程进行文件夹创建时,无法获取写入权限,从而导致后续素材文件传输的失败。解决方案是,取消远程新建文件夹的方法,直接改用FTP来新建,并修改FTP的传输模式,使之能够在Linux下获取全部权限,以使得传输素材文件能够顺利进行。

3.4 异常处理

系统在进行节目文件生成的过程中尽可能多地考虑了可能出现的异常情况,并进行了异常处理,如表2所示:

表2 异常处理

将发生异常的信息用String进行描述,添加进报告用户的message信息中,一旦发生异常,系统即认为对指定终端的操作为失败,报告会立即发出。

4 应用与应用效果分析

根据对多媒体文件自动生成系统的研究与设计,已实现完整的应用系统并投入使用,并对该系统的运行情况和应用效果进行分析。

4.1 多媒体文件自动生成系统应用实例

根据对多媒体文件自动生成系统的研究与设计,自主研发的多媒体文件自动生成接口,已经在上海市移动营业厅的部分网点进行测试性使用。

运行多媒体文件自动生成系统,至少需要一台服务器与一台播放终端,服务器上需要安装Apache Tomcat服务器与Apache Axis2 Tools,播放终端仅仅需要联网并拥有基本的Firefox浏览器即可。多媒体文件自动生成系统需要通过Apache Axis2 Tools – Service Archive Wizard 将源代码生成可以在Apache Axis2的Web Service服务器上运行的.aar文件。

通过Web Service服务调用,将素材文件和节目传输至播放终端进行节目播放后,图片模板,如图5所示:

图5 图片模板

4.2 应用效果分析

通过实际使用,该系统运行良好。在开发测试内网环境(100Mbps带宽网络)下,传输一个带有200Mbps的视频的节目的平均响应时间为30秒,其理论传输最快时间为16秒,考虑实际传输速率达不到理想情况和处理其他逻辑的时间损耗,30秒的响应时间处于可以接受的范围之内。在营业厅测试环境(营业厅带宽2Mbps-30Mbps不等,机房带宽10Mbps)下,目前运行 1个月没有出现问题。该系统容错能力强,在多个营业厅传输数据过程中,如果有一个没有传输完成而中断,后续指令只需要对这一个没有传输成功的营业厅进行发布,不需要全部重新传输,在实际测试应用中大大提高了工作的效率。

5 结束语

针对不同的播放节目需求,设计不同样式的模板,对不同模板进行页面生成,再按照配置文件分别进行页面重组。通过终端素材调度算法,管理播放终端的素材文件,判断各个节目所需要的素材是否齐备,若没有被任何节目引用,则调用素材管理的垃圾回收机制进行删除,节约播放终端的磁盘空间。对生成节目文件中间产生的各种异常进行处理,并及时反馈用户,大大提高了系统的容错能力。在实际测试和使用过程中,提高了工作效率,具备良好的实际应用价值。

[1]Haas H,Brown A.Web services glossary[J].W3C Working Group Note (11 February 2004),2004.

[2]Christensen E,Curbera F,Meredith G,et al.Web services description [J].language (WSDL)1.12001.

[3]Gudgin M,Hadley M,Mendelsohn N,et al.SOAP Version 1.2[J].W3C recommendation,2003,24.

[4]Forouzan B A.TCP/IP protocol suite[M].McGraw-Hill,Inc.,2002.

[5]Eckel B.Thinking in JAVA[M].Prentice Hall PTR,2003.

猜你喜欢
终端服务器模板
铝模板在高层建筑施工中的应用
铝模板在高层建筑施工中的应用
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
GSM-R手持终端呼叫FAS失败案例分析
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
铝模板在高层建筑施工中的应用
城市综改 可推广的模板较少