您好, 访客   登录/注册

跨平台多终端自动播出系统的研究与实现

来源:用户上传      作者: 陈杰

  【摘要】 本文探讨了如何实现C/S、B/S架构的自动播出系统,比较两种实现的优缺点,并详细介绍了如何采用HTML5的全新特性WebSocket来实现B/S架构自动播出系统,实现对跨平台、多终端的支持。
  【关键词】 自动播出系统 跨平台 多终端 HTML5 WebSocket
  一. 什么是自动播出系统
  自动控制是指无需人经常直接参与,而是通过对某一对象施加合乎目的的作用,以使其产生所希望的行为或变化的控制[1]。
  广播行业的自动播出系统跟传统的自动控制有所区别,它需要软件和硬件密切配合,才能实现。因为在整个广播播出过程之中,有不同功能的不同类型的设备参与,比如视频服务器、矩阵、主控台等等,而且,这样的设备有可能来源于不同的厂商,如果是完全由人工控制,难度大、不易同步协调,而且安全性得不到保障,自动播出系统的出现使得操作员可以通过一个专门的系统对所有设备进行统一的控制与监视。
  二. C/S自动播出系统的实现
  怎样实现一个广播行业的自动播出系统呢?我们从系统部署、系统架构选择、系统实现三方面来详细分析。
  1. 自动播出系统部署
  一般来说,一个自动播出系统由四部分组成:需要被控制的设备、设备控制服务器、数据库、各种应用客户端,图1说明了它们之间的关系。
  (1)需要被控制的设备
  该部分包括各种需要参与自动播出的设备,比如视频服务器,矩阵,主控台,VTR,字幕机,各种音频卡、视频板等等,它们能够通过网络、或RS422串口、或GPI接口进行控制。
  (2)设备控制服务器
  设备控制服务器是自动播出系统的核心,一般来说设备控制服务器属于两个网络:一个是设备网,设备控制服务器在这个网络上能找到需要控制的所有设备,通过网络协议、RS422串口协议、或者GPI接口发送控制命令到具体设备,从而能够控制设备的运行、监视设备的状态;另一个是应用网,在这个网络上,各种的应用程序能够通过设备控制服务器协议与设备控制服务器进行通讯。为了安全起见、同时避免网络阻塞,设备网与应用网最好保持物理上的独立。
  而且为了保证设备控制服务器的可靠运行,采用主、备的双设备控制服务器是更好的选择。
  (3)数据库
  该数据库包含应用中的各种数据,比如用户信息、业务数据、媒体元数据等等。这些数据既可以给应用提供完善的信息,也可以避免应用频繁操作设备,降低设备的性能,比如媒体元数据。
  (4)各种应用客户端
  该部分包括各种各样的应用,比如播放列表、媒体录入、设备状态监视等等,而且随着需求的变更,应用程序会不停变化或增加。
  2. 软件架构的选择
  通常来说,一个软件有C/S或B/S两种架构可以选择。B/S是Browser/Server,指浏览器和服务器端,在客户机端不用安装专门的软件,只要一个浏览器即可,属于瘦客户端。C/S是Client/Server, 指客户机和服务器,在客户机需要安装客户端软件及相应环境后,才能访问服务器,属于胖客户端。
  表1[2]对B/S和C/S优缺点进行了比较,由于C/S架构的实时性能高且稳定,C/S成了自动播出系统的不二之选。
  3. C/S架构自动播出系统的实现
  在选定了C/S的软件架构后,接下来介绍如何实现自动播出系统的设备控制服务器与客户端。
  (1)设备控制服务器的实现
  要实现设备控制服务器,一般来说包括三层:设备驱动层、事务层、服务层。
  设备驱动层
  这一层包括三部分:设备管理,设备协议,设备驱动。
  设备管理主要用来分类管理各种设备,使得可以很方便得在业务层进行控制。
  设备协议是指对不同类型的设备来说,有不同的控制协议,比如控制视屏服务器的VDCP协议,控制VTR的SONY VTR协议,控制矩阵的矩阵协议等等。
  设备驱动是对某一型号设备的具体支持,它从某一设备协议继承而来,可能受通用协议的控制,但也有自己的一些特性。
  设备驱动层是设备控制服务器的基础,只有在设备驱动层正确地工作的前提下,自动播出系统才有可靠运行的可能。
  事务层
  这一层包括设备控制服务器能够提供的各种事务处理能力,比如播放列表、设备状态监视、媒体服务等。
  播放列表主要用于自动播出,通过维护一个串行的列表,使得节目可以一个接一个得连续自动播出,避免繁琐的操作,减少错误的发生。
  设备状态监视是一个非常重要的部分,这一部分通过对设备状态的监视,预防播出事故,即时通知管理员进行维护与更新,就像汽车的胎压监控仪一样给予安全行驶的保障。
  媒体服务保证设备的媒体信息即时更新,比如视频服务器的媒体信息,并提供方便的方式可以进行媒体录入。更进一步的是,可以提供全局媒体服务,在不同的地方可以共享媒体,快捷方便得进行媒体传输等等。
  服务层
  这一层主要给各种应用客户端提供服务,包括两部分。第一部分是在标准的Socket端口上提供服务,接受来自应用客户端的命令;第二部分是将命令按照自动播出系统的协议将其转换成具体的请求,传递给事务层进行具体的处理。
  图2介绍了服务器端的结构。
  (2)客户端的实现
  客户端的结构相对来说比较简单,但是实现相对繁琐。一般来说客户端包括界面层与控制层。
  界面层
  这一部分看起来比较简单,但根据编程语言的不同,有不同的实现方式,难易程度也不同,比如VC、C#、以及Java就有不同的实现策略。总体来说,这一部分就是提供一个易于操作的界面,使得用户可以方便地控制播放编列、查看设备状态、录入新的媒体等。   控制层
  这一层分为两部分,一部分是将界面事件转换成自动播出系统命令,并将其发送到设备控制服务器;另一部分是数据库部分,提供业务需要的数据,并在恰当的时候进行更新。
  图3介绍了客户端的结构。
  通过上面的介绍,一个C/S架构的自动播出系统构建完毕,它有高的实时性,功能强大,稳定高效,可以用来实现绝大部分的自动播出系统。
  三. 新的挑战以及新的技术
  1. 新的挑战
  但是随时时代的发展、技术的进步,C/S架构的产品受到越来越多的挑战。其中最显著的就是多终端的挑战。从刚开始的PC,到笔记本,再到现在的手机与平板电脑,越来越多的终端要求参与到系统的操作监控过程中,特别是手机与平板,这两个为方便而生的产品。
  这样就要求软件产品在支持个人电脑的同时,也要求能够在手机或平板上运行,这也意味着软件产品需要运行在不同的操作系统上,比如Android, iOS, Windows, Windows Phone等等。对C/S架构的产品来说,这意味着为每一个操作系统的终端,必须开发相应的客户端,从而大大提高了开发的成本以及维护更新的成本。
  2. 新的技术HTML5与WebSocket
  有新的挑战,就有新的技术的出现。HTML5就是这样的一种新技术。HTML5是谷歌、苹果、诺基亚、中国移动等几百家公司一起酝酿的W3C推荐的新一代的网络标准,一个公开的标准。
  HTML5是跨平台的、支持多终端的,因为目前PC、手机、平板上的主流浏览器大都主持HTML5,比如不但苹果的Safari支持HTML5, FireFox, Chrome, Opera等主流浏览器也都支持HTML5,微软的IE9开始支持部分HTML5特性,从IE10开始对HTML5有完善的支持。
  HTML5[3]提出了很多的新特性,比如SVG, Canvas, Gealocation, Web Worker等等,使得开发网络应用简单而且功能强大,很多以前只能通过桌面程序完成的功能也很容易通过HTML5在Web应用中完成。
  在HTML5的众多新特性中,有一个全新的特性WebSocket[4]。
  (1)WebSocket出现的背景
  现在,很多网站为了实现即时通讯,所用的技术都是轮询。 轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP request 的header非常长,里面包含的数据可能只是很少的一部份,这样会占用很多的带宽和服务器资源。
  而比较新的技术去做轮询的效果是Comet,使用了AJAX。这种技术虽然可达到双向通信,但依然需要发出请求,而且在Comet中,普遍采用了长链接,这也会大量消耗服务器带宽和资源。
  面对这种状况,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并达到实时通讯[5]。
  (2)WebSocket的目标与优点
  WebSocket规范的目标是在浏览器中实现和服务器端双向通信[6]。双向通信可以拓展浏览器上的应用类型。这样使得我们可以在利用Web应用的优势的同时,可以使用到Socket高效的点对点通讯方式。
  同时WebSocket服务器与客户端之间交换的标头信息很小,大概只有10字节。而且WebSocket不仅支持纯文本的数据,而且支持二进制的数据通讯。
  (3)WebSocket的原理
  浏览器中的网页与服务器的WebSocket的通讯有两个过程,第一个是握手过程,浏览器发送一个类似于http头的请求给服务器,服务器根据http头中的信息,生成另外一个http头发送个客户端,这样连接就建立了;第二个是通讯过程,每次通讯需要包括WebSocket协议头,根据包长度的不同,从2到10字节不等。
  (4)WebSocket客户端
  WebScoket客户端主要需要浏览器对WebSocket的支持。目前大部分最新版的主流浏览器已经支持WebSocket,比如FireFox,Chrome,Safari等。微软从IE 10也开始支持WebSocket。
  在客户端,很容易用JavaScript来实现,请参考下面的代码:
  当WebSocket初始化时,需要一个网络地址,该地址以ws://或wss://开始,其后是服务器地址或主机名,然后服务端口号。在客户端,可以处理onopen、onmessage、onclose、onerror等事件,从而实现对服务器的回应的处理。当客户端想向服务器发送消息时,只要调用send就可以了。
  (5)WebSocket服务器端
  目前已经有一些Web服务器支持WebSocket,比如Tomcat,node.js等。同时由于WebSocket协议的简单性,用户可以很容易地实现自己的WebSocket服务,提供自己订制的WebSocket通讯服务。
  当用户实现WebSocket服务器段时,主要处理三部分信息:
  握手信息
  在浏览器发送来的http握手请求中,包含key信息,服务器需要根据key信息,按照协议的算法,生成另外一个key,发送给客户端,如果key信息不对,浏览器会拒绝连接。
  WebSocket头信息
  WebSocket头比较简单,包括各种标志位,掩码,以及数据长度等。用户很容易根据WebSocket协议将头信息解析出来。
  定制的通讯协议
  用户根据自己的需求,可以定义自己的数据结构,定制自己的通讯协议。   四. 跨平台多终端自动播出系统的实现
  表1比较了C/S与B/S架构的优缺点,虽然B/S有着众多的优点,由于C/S具有实时性高而且稳定的特点,对自动播出系统来说,只能选择C/S架构。
  但是HTML5的WebSocket的出现使得这个变成可能:自动播出系统既可以保持稳定的高实时性,又可以具有B/S系统的跨平台、支持多终端的优点以及其他众多优点。
  下面就从系统部署、系统实现、系统优点、系统挑战几方面来详细了解新的B/S框架的自动播出系统
  1. 系统部署
  从系统部署的总体架构来看,新的系统同样包括四部分:需要被控制的设备、设备控制服务器、数据库、Web服务器。唯一的变化就是所有应用都将发布于Web服务器上,用户可以通过各种终端的浏览器对应用进行访问。应用与设备控制服务器将通过WebSocket进行通讯,保持以前的点对点的高稳定性以及高实时性。
  图5介绍了B/S自动播出系统的部署图。
  2. 设备控制服务器的实现
  对设备控制服务器来说,与C/S架构的设备控制服务器相比,唯一的变化是将标准的Socket服务替换成WebSocket服务。
  从具体实现来说,就是在客户应用的连接建立以后,服务器与客户端多了一个握手的过程,用来保证通讯的安全,在其后的数据通讯中,数据包多了一个WebSocket协议数据头。其他处理与标准Socket通讯完全相同。
  图6介绍了B/S设备控制服务器的结构。
  3. 应用端的实现
  应用端相比C/S架构的客户端,有很大的不同。首先所有页面发布于Web服务器上,所有的维护更新都是对Web服务器上的内容进行维护更新。客户端不再需要安装任何程序,不再受平台、终端的限制,只要有一个浏览器,就可以实现对系统的访问,从而操作播放列表,查看设备状态,进行媒体录入等。
  一般来说应用端包含三部分:HTML5页面,CSS界面装饰,JavaScript逻辑控制。
  HTML5页面是界面部分,包括应用需要的各种显示信息、控件等等。
  CSS界面装饰决定了HTML5页面怎么样进行显示,而且对不同的终端,由于分辨率的不同,可能需要不同的CSS来对HTML5页面进行装饰。同时可能用到公司的统一CSS库,这样保证公司产品风格的一致性。
  JavaScript逻辑控制是应用端的核心,不但包含了与Web服务器的通讯、数据库的通讯,而且包括与设备控制服务器的WebSocket通讯。当然,在这一部分,可以使用已经存在的通用库,如果jQuery库等使代码变得简单;也可以使用公司的通用函数库,重用公司的已有代码。
  图6介绍了B/S应用端的结构。
  4. 系统的优点
  基于HTML5的WebSocket的B/S自动播出系统具有以下优点:
  (1)像C/S系统一样高效稳定
  从设备控制服务器的实现可以看出,跟C/S架构的自动播出系统一样,它具有高实时性、稳定、功能强大的优点,满足广播播出的需求。
  (2)跨平台与多终端
  新系统可以在不同的平台下使用, 比如Windows, Linux, Andriod, iOS等,这意味着它可以在不同的终端中使用,比如PC, 平板, 手机等。
  (3)易于维护升级
  由于新的应用层发表在Web服务器上,维护升级方便,不需要每个终端进行一一维护升级。
  (4)易于集成扩展
  由于是Web应用,可以很方便得跟已有的业务系统进行集成,或者根据新的需求扩展出新的应用。比如跟已有的广告系统、编单系统、审核系统等进行集成。
  (5)易于重构与重用
  对设备控制服务器来说,只要将标准的Socket服务换成WebSocket服务就可以重构原来的系统。对应用端来说,不管公司的JavaScript函数库,还是CSS的页面装饰库,都可以进行重用。
  (6)分工的明确化
  对于产品设计来说,主要关心页面的功能,也就是HTML5页面内容;对于UI来说,主要关心CSS的装饰效果,而再也不要担心自己设计出漂亮的页面,但是程序员实现不出来;对于程序员来说,只要关心JavaScript的逻辑部分是否正确,从而从烦人的界面渲染中释放出来。
  同时分工的明确化可以提高开发的效率,缩短开发周期,更快地交付客户定制需求等.
  (7)易于公司产品风格的统一
  一般来说,一个公司的产品需要能够保持一样的风格。在新系统中,只要用到公司的通用CSS风格库,就可以保持一致的风格,不需要额外的工作,降低开发的成本。
  5. 系统的挑战
  由于HTML5与WebSocket是新的技术,在开发这样的系统时也面临一些挑战:
  (1)浏览器支持的不确定性
  不同的浏览器对HTML5的支持不尽相同。所以同一个页面在不同的浏览器中可能有不同的表现。这就要求我们在页面的开发过程中,需要考虑到这种差异性,使得产品具有良好的兼容性。
  (2)HTML5的未知性
  HTML5的标准并没有完全的确定,它还在不停的完善中,所以它有着一些不确定因素。据估计,2012年HTML5才会推出建议候选版,并在2022年才会成为W3C推荐标准。这就要求我们要关注标准的变更,使得产品适应标准的变更。
  (3)安全问题
  首先,作为一个网络系统,会遇到到传统的网络安全问题威胁,比如黑客攻击。其次作为一个广播系统,要保证设备的安全性,也就是设备被正确的人监视与控制。所以,当我们开始设计系统时,就要有完善的安全策略以保证系统的安全性。除了一般C/S架构系统的安全措施,如服务器冗余备份、设备网和应用网的物理分离、用户权限管理、历史操作日志以外,针对B/S系统还需要防火墙、VPN等措施,保证远程操作、控制的安全性。
  五. 结束语
  HTML5是发展中的新技术,学习它,应用它,使得您一直走在新技术的前列。 B&P
  缩写词
  参考文献:
  [1] 孙扬声. 自动控制理论. 第三版. 北京: 中国电力出版社, 2004年:第1页
  [2] 鲁春燕,孙 娟. 浅析C/S模式和B/S模式的优缺点. 福建电脑, 2008年, 第6期:第87页
  [3] HTML5 Draft. 2012-03-29. [2012-10-02] http://www.w3.org/TR/html5/.
  [4] The WebSocket protocol draft-hixie-thewebsocketprotocol-76. 2010-05-06.
  [2012-10-02] http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76
  [5] WebSocket. 2012-10-21. [2012-11-03] http://zh.wikipedia.org/zh-cn/WebSocket
  [6] WebSocket. 2012-10-24. [2012-11-03] http://baike.baidu.com/view/3623887.htm
转载注明来源:https://www.xzbu.com/1/view-5259851.htm