《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 基于嵌入式Web服务器的数字电视接收终端的设计

基于嵌入式Web服务器的数字电视接收终端的设计

2008-05-06
作者:陶雄飞,刘卫忠,邹雪城

  摘 要: 提出了一种面向计算机用户的数字电视接收终端的设计方案,从硬件构成、协议选择、音视频" title="音视频">音视频数据传输等方面介绍了该接收终端的实现方法。
  关键词: 嵌入式Web服务器 流服务器 数字电视


  目前,在PC机上实现数字电视的播放主要有两种方案,一种是基于PCI总线的数字电视接收卡" title="接收卡">接收卡,另一种是基于USB总线的数字电视接收终端。
  两种方案各有利弊。前种方案硬件成本较后一种低,但是PC机的处理负担比后种方案重。这两种方案均不能实现对加扰节目的播放,且实现的复杂度都较高,开发周期较长。以下方案可有效解决其存在的问题:
  (1)机顶盒专用芯片+CY7C68013芯片。
  (2)机顶盒专用芯片+以太网接口芯片" title="接口芯片">接口芯片DM9000A。
  本文所提出的系统采用方案(2)。这是因为DM9000A比CY7C68013更有价格优势,同时较容易实现。
1 系统结构
  本数字电视接收终端方案采用机顶盒专用解码芯片和以太网接口芯片DM9000A实现。解码芯片选用STMicroelectronics公司的STi5517芯片,STi5517主频可达180MHz,内置DVB的解扰模块,可以处理加扰数据流。通过STi5517的EMI接口总线实现SDRAM、Flash以及DM9000A等的扩展,DM9000A是100MHz的非PCI以太网接口芯片。系统硬件框图如图1所示。


  采用此方案实现的接收终端连接在有线电视网和以太网之间,在接收终端中内嵌Web服务器和简单的流服务器功能。
  用户通过浏览器向接收终端的Web服务器提出请求,如节目搜索、获取节目列表及节目的EIT信息等。Web服务器根据浏览器的请求执行相应的动作,并将相应的静态页面或动态页面发送到浏览器。如果用户通过浏览器向Web服务器发送播放节目的请求,Web服务器将用户所请求节目的描述性文件(PD file)返回给浏览器,同时启动流服务器程序接收音视频数据并将接收到的数据封装为数据包发送。浏览器接收到PD file后,将PD file传给流播放程序,流播放程序根据PD file内容,接收来自流服务器的数据包并播放。
2 设计要点
  系统设计的要点是嵌入式Web服务器和嵌入式流服务器的实现。
2.1 嵌入式Web服务器
  一个典型的Web服务器的系统结构如图2所示。


  虽然嵌入式Web服务器的容量可以很小,但也同样具有典型Web服务器的特点和主要功能。嵌入式Web服务器应不仅给浏览器提供静态网页,同时还应具备动态生成网页的功能。因此系统设计实现了嵌入式CGI的功能,它作为应用程序的一部分存在。
2.1.1 HTTP协议选择
  嵌入式Web服务器技术的核心是HTTP引擎。HTTP是一个应用层协议,使用TCP作为传输层协议。HTTP1.0不支持持续连接,对每一次请求和响应都要通过TCP的3次握手建立,这造成对网络资源的浪费。通常,一个典型的网页页面由多个html文件和多个图形组成,而为了完整接收这个页面,需要为每个文件或图形的接收建立一个连接,建立和关闭连接都需要消耗CPU及内存资源。HTTP1.1允许在一个已经建立的连接上进行多次HTTP交互,这样可大大提高网络和系统的执行效率。另外,HTTP1.0没有直接的缓冲控制(cache-control),因此,对于一些客户端已经接收过的静态页面,如静态文本、图片、图标等会重复接收,这将增加CPU的负担。而HTTP1.1增加了缓冲控制机制,将一些已经接收的静态数据缓存起来,再次使用时则无需再次接收这些数据,从而减轻了网络和CPU的负担。基于以上两点,本系统中的Web服务器采用HTTP1.1协议。
2.1.2 嵌入式通用网关接口eCGI
  本系统采用CGI生成动态页面,实现服务器和浏览器之间的数据交互。
  通用网关接口CGI(Common Gateway Interface)定义了Web服务器主机对外服务的标准接口。其主要功能是在Web环境下,从客户端传送信息给Web服务器,Web服务器把接收到的有关信息放入环境变量,然后启动所指定的CGI脚本以完成特定的工作,CGI脚本从环境变量中获取相关信息运行,最后以HTML格式输出相应的执行结果返回给浏览器端。由于用户能给CGI脚本传递不同的参数,所以CGI技术使得浏览器和服务器之间具有交互性。
  标准的CGI程序需要有文件系统以及程序动态调用的支持,在嵌入式系统中实现标准的CGI将增加代码量,而且也影响系统的执行效率。本系统采取一种变通的方式实现CGI,称之为eCGI以区别标准的CGI。
  在eCGI服务器中,通过调用函数完成CGI程序的执行。如果接收到浏览器的CGI请求,就需要找到相应的处理函数,eCGI通过查找链表方式解决此问题。
  AddCgiFuncs(char*funcName,char*path,void*funcs);
  此函数用来建立eCGI服务器中的CGI处理函数的列表,funcName和path分别是处理函数的虚拟文件名和虚拟路径。
  void*LookupCgiFuncs(char*funcName,char*path);
  此函数用来查找CGI处理函数的指针,funcName和path是从解析浏览器请求中得到的处理函数的文件名和路径。
  eCGI服务器中有一些环境变量以及浏览器与服务器交互的参数,这些数据采用类似上面的机制处理。
  cgiAddVar(char*varName,v_type_t vType,v_value_t value);
  此函数用来创建一个参数,并添加到参数列表中。varName是参数的名称,vType是参数的类型,value是参数的初始值。
  cgiSetValue(char*varName,v_value_t value);
  此函数用来设置参数的值。
  cgiGetValue(char*varName,v_value_t*value);
  此函数用来获得参数的值。
  eCGI工作的主要流程与CGI相似,即解析浏览器请求中CGI相关的脚本信息,然后查找并调用相应的eCGI处理函数,服务器将处理结果通过html文件返回浏览器,结束本次eCGI进程。
2.2 嵌入式流服务器
2.2.1 传输协议" title="传输协议">传输协议选择
  流媒体" title="流媒体">流媒体是指在网络中使用流技术传输的连续时基媒体。其特点是播放前不需要下载整个文件,而是采用边接收边播放的方式。进行实时流媒体数据的传输可以采用UDP、HTTP、RTP等多种协议,本系统采用RTP协议。RTP数据报头部格式如图3所示。


  从RTP数据报的格式不难看出,它包含了传输媒体的类型、格式、序列号、时间戳以及是否有附加数据等信息。这些都为流媒体实时传输提供了基础,它可以建立在底层的面向连接或面向非连接的传输协议之上。在典型的应用场合,RTP是在传输协议之上(如TCP、UDP)作为应用程序的一部分实现的。虽然TCP提供可靠的连接,但是它的网络开销远大于UDP,因此本系统采用UDP协议承载RTP数据。
2.2.2 封装RTP数据包
  在RFC2250(RTP Payload Format for MPEG1/MPEG2 Video)中定义了MPEG音视频流的封装格式。对于MPEG2数据流,可以采用两种封装格式,一种是将MPEG2传输流(TS)作为RTP负载封装到数据包,另一种方式是将MPEG2基本流(ES)数据直接封装到RTP数据包。后一种方式复杂程度较高,同时加大了服务器端的负担,因此,采用第一种封装方式。
  将TS数据封装到RTP数据包时,每个RTP数据包中必须包含整数个TS包,每一个RTP数据包将携带一个由发送端90kHz的参考时钟产生的时间戳,发送端的这个时钟(STC)与节目流中的PCR同步。
  接收终端在接收音视频节目时,首先接收PCR数据,并将接收到的第一个PCR直接设置到STC。当接收到后续的PCR时,则比较PCR与STC的值,根据差值调整PWM,从而达到调整系统时钟振荡频率的目的。经过PCR调整的系统时钟将与前端编码器的时钟同步。
  音视频数据的接收与发送流程如图4所示。


  在接收音视频数据时,将接收通道的类型设置为接收TS流的方式,在接收终端的应用程序中创建Prebuffer和RTPSendData两个任务,解复用模块将接收到的数据送入CyclicBuffer,修改CyclicBuffer的写指针,并通知Prebuffer任务,Prebuffer任务将CyclicBuffer中的TS数据读出并写入PreBuffer中,相应地修改CyclicBuffer和PreBuffer的写指针。RTPSendData任务检查PreBuffer中TS包的个数,若达到一定数量就将TS包封装到RTP数据包中,通过STC得到时间戳的信息,生成序列号,将时间戳、序列号、负载类型等信息封装到RTP头部送入TCP/IP协议栈组成UDP数据包后发送。
  用户使用本系统时,可以通过浏览器查看电视节目列表以及选择电视节目,并通过嵌入到浏览器的播放器播放电视节目,画面流畅。
  本系统与基于PCI、USB总线的数字电视接收终端相比有以下特点:(1)PC端无需安装任何驱动程序;(2)PC端无需安装任何操作界面,由浏览器完成即可;(3)可以实现对加扰节目的播放。
  微软已经将其媒体播放器(Windows Media Player)嵌入IE浏览器。如果接收终端以媒体播放器所能支持的协议(如MMS、RSTP等)传输流媒体数据,则在用户的计算机上无需开发任何程序,所有的开发工作仅在接收终端上,从而实现此接收终端真正的“即插即用”,这是下一步的将要开展的工作。
参考文献
1 Jeremy Bentham著,陈向群译.嵌入式系统Web服务器TCP/IP Lean.北京:机械工业出版社,2003
2 林福宗.多媒体技术基础(第2版).北京:清华大学出版社,2002
3 STMicroelectronics.STi5517 Low-cost interactive set-top box decoder datasheet.2003
4 GoAhead Software Inc.GoAhead Web Server White Paper[Z].http://www.goahead.com.1999-5
5 Ian Douglas Agranat.Engineering Web technologies for embedded applications.IEEE Internet Computing,1998;(5)~(6)
6 Schulzrinne.RTP:A Transport Protocol for Real-time Appli-cations,RFC1889.1996
7 Hoffman.RTP Payload Format for MPEG1/MPEG2 Video,RFC2250.1998
8 Fielding.Hypertext Transfer Protocol,RFC2616.1999
9 胡 宁,崔铁生,吴 楚.基于PCI总线的卫星DVB接收卡设计及实现.山东电子,2004;(3)
10 刘三强,刘 坚.基于USB接口的数字电视接收盒设计.电视技术,2004;(9)
11 施景华,刘卫忠.基于USB2.0协议的数字广播终端接收卡的设计和实现.电视技术,2005;(3)

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。