操作JAVA语言实现支持视频点播的WEB处事器
副标题#e#
一.项目简介:
JAVA语言是一种可移植的,简朴的,结实的嵌入式语言。而且对网络,数据库有很好的支持,基于JAVA语言的这种特性可以十分容易地成立一个小型INTERNET处事器。
本项目中,作者用JAVA语言编写了一个WEB微型处事器,对简朴的HTTP请求举办响应,并通事后端数据库对用户的查询举办处理惩罚,从而动态地返回HTML页面。
二.项目实现:
(一)项目详细成果阐明与开拓东西选择
可以操作一台较高设置的小我私家台式机就可以实现社区内的小型处事器,包罗网页欣赏,基于高速局域网的视频下载和播放,按时新闻组宣布措施,邮件处事器等处事。
本软件实际上是一个HTTP协议的处事器。HTTP(Hyper Text Transfer Protocol),是一个专门为Web处事器和Web欣赏器之间互换数据而设计的网络协议。它通过划定通用资源定位符(URLs)使客户端的欣赏器与处事器的Web资源成立链接干系,从而奠基了用户对Internet透明会见的基本。
在本软件中通过传输HTML文件使客户端可以实现网页欣赏。HTML是WWW的通用标志语言,它用来建设Web页面和节制Web信息显示名目。HTML不是编程语言,而是一种描写语言。HTML2.0获得了IETF(Internet Engineering Task Force)的支持而成为Internet国际尺度。今朝,HTML已经成长到3.0和4.0版,只是新版本的尺度尚未完全统一,差异的商家对HTML2.0举办了必然的扩充,引入了更多新的成果。譬喻,Netscape公司在HTML3.0中增加了页面底图(Background Images)和表(Table)界说等标志,使得Web页面越发引人入胜。
CGI是通用网关接口(Common Gateway Interface)的简称,它是Web处事器与外部措施之间的通信接口,处事器并不体贴外部应用措施是什么语言(如C、C++、Pascal、Delphi或Perl)编写的,它只是认真吸收用户输入的信息,并把CGI措施所发生的功效–HTML文档或其他切合HTTP划定的文件回传给用户。事实上,CGI是动态Web页面建造的第一步,但由于CGI措施实现较量坚苦,并且效率不高,它已经逐渐被新的技能所代替。
网页欣赏支持的网页包罗HTML,JAVASCRIPT,APPLET,VBSCRIPT等编写的网页,但不支持PHP,ASP等处事器端动态措施的网页。由于处事器的局限较小,所以处事器端动态措施被集成进处事器中。但可以通过编写切合必然法则的JAVA的CGI措施实现处事器端的动态性,不外这种JAVA措施的安详性很难担保。
#p#副标题#e#
(二)处事器的实现
1. 处理惩罚毗连计策:
对付每一个用户的毗连我们采纳了每次请求满意后,将用户与处事器的毗连断开,这时用户假如有其他的请求,则进入请求行列从头举办资源竞争。
凡是网页中的每一个图形城市被当作是一个单独的毗连,也就是说对付一个图形许多的网页基于本处事器的毗连计策将会举办多次请求,这样的长处是防备一个容量很大的网页独有网络资源。
2. 与数据库毗连
在与数据库的毗连中我们选用的后端数据库是微软的ACCESS数据库,由于本项目是面向小型社区的社区数据中心处事器,所以选用小型的数据库。由于JAVA的可移植性可以将处事器用在LINUX平台上,这时可以用本处事器提供的数据库设置措施毗连到MySql等基于LINUX的小型数据库。
我们应用JDBC完成与数据库的毗连。Java的一项精彩本领是构建与平台无关的客户机/处事器数据库应用。在Java 1.1中,通过Java数据库毗连(JDBC)实现了与各家公司之间的数据库的互连。数据库最主要的一个问题就是各家公司之间的规格大战。确实存在一种"尺度"数据库语言,即"布局查询语言"(SQL-92),但各公司为了暗示本身的与众差异对尺度都有一些微小的窜改。所以凡是必需确切知道本身要和哪家数据库公司打交道,不然极易出问题,尽量存在所谓的"尺度"。JDBC是面向"与平台无关"设计的,所以在编程的时候不必体贴本身要利用的是什么数据库产物。和Java中的很多API一样,JDBC也做到了只管的简化。我们发出的要领挪用对应于从数据库收集数据时想虽然的做法:同数据库毗连,建设一个语句并执行查询,然后处理惩罚功效集,无论与我们打交道的是哪家数据库厂商的产物。
JDBC的利用:
为实现这一"与平台无关"的特点,JDBC为我们提供了一个"驱动措施打点器",它能动态维护数据库查询所需的所有驱动措施工具。所以如果要毗连由数家公司开拓的差异种类的数据库,就需要每个数据库的单独的驱动措施工具。驱动措施工具会在装载时由"驱动措施打点器"自动注册,并可用Class.forName()强行装载。
为打开一个数据库,必需建设一个"数据库URL",它要指定下述三方面的内容:
(1) 用"jdbc"指出要利用JDBC。
#p#分页标题#e#
(2) "子协议":驱动措施的名字可能一种数据库毗连机制的名称。由于JDBC的设计从ODBC接收了很多灵感,所以可以选用的第一种子协议就是"jdbc-odbc桥",它用"odbc"要害字即可指定。
(3) 数据库标识符:随利用的数据库驱动措施的差异而变革,但一般都提供了一个较量切合逻辑的名称,由数据库打点软件映射(对应)到生存了数据表的一个物理目次。为使本身的数据库标识符具有任何寄义,必需用本身的数据库打点软件为本身喜欢的名字注册(注册的详细进程又随运行平台的差异而变革)。
所有这些信息都统一编译到一个字串里,即"数据库URL"。本例中,我们想通过ODBC子协议同一个标识为"vod"的数据库毗连,相应的数据库URL设为:
String dbUrl = "jdbc:odbc:vod"
同样假如通过一个网络毗连,数据库URL也需要包括对长途呆板举办标识的信息。
JDBC的毗连方法:
首先,JDBC中在DriverManager中对数据库数据库驱动措施举办挂号。
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
装载JDBC- ODBC桥驱动措施,这样做是为了让DriverManager可以找到数据库驱动措施。然后操作DriverManager打开与数据库的毗连。
Mycon=DriverManager.getConnection(dbUrl);
本语句的浸染是,确定与由dbUrl指定的数据库的毗连。DriverManager将从个中挂号的驱动措施中寻找最适当的驱动措施。返回的Mycon代表了与特定的数据库之间的毗连。
Mysta=Mycon.createStatement();
生成可以执行无参数SQL语句的Statement接口。 然后就可以在Mysta顶用executeQuery()函数执行SQL语句从返回的ResultSet获取执行功效。
3.网络毗连:
网络自己的观念并不难。我们想得到位于其他处所某台呆板上的信息,并把它们移到这儿;可能相反。这与读写文件很是相似,只是文件存在于长途呆板上,并且长途呆板有权抉择如那里理惩罚我们请求可能发送的数据。但大大都编程语言对网络编程都较坚苦,而Java最精彩的一个处所就是它的"无疾苦连网"观念。有关系网的下层细节已被尽大概地提取出去,并埋没在JVM以及Java的本机安装系统里举办节制。我们利用的编程模子是一个文件的模子;事实上,网络毗连(一个"套接字")已被封装到系统工具里,所以可象对其他数据流那样回收同样的要领挪用。除此以外,在我们处理惩罚另一个连网问题–同时节制多个网络毗连–的时候,Java内建的多线程机制也是十分利便的。
处事器的主要任务是侦听成立毗连的请求,这是由我们建设的特定处事器工具完成的。而客户机的任务是试着与一台处事器成立毗连,这是由我们建设的特定客户机工具完成的。一旦毗连建好,那么无论在处事器端照旧客户机端,毗连酿成了一个IO数据流工具。从这时开始,我们可以象读写一个普通的文件那样看待毗连。所以一旦建好毗连,我们只需利用本身熟悉的IO呼吁即可。
首先,server=new ServerSocket(80,acceptamount);
生成一个处事器端的套接字。个中第一个参数是暗示处事器的监听端口,端口是呆板内唯一无二的场合。有些时候,一个IP地点并不敷以完整标识一个处事器。这是由于在一台物理性的呆板中,往往运行着多个处事器(措施)。由IP表达的每台呆板也包括了"端口"(Port)。我们配置一个客户机可能处事器的时候,必需选择一个无论客户机照旧处事器都承认毗连的端口。端口并不是呆板上一个物理上存在的场合,而是一种软件抽象(主要是为了表述的利便)。客户措施知道如何通过呆板的IP地点同它毗连,但奈何才气同本身真正需要的那种处事毗连呢(一般每个端口都运行着一种处事,一台呆板大概提供了多种处事,好比HTTP和FTP等等)?端口编号在这里饰演了重要的脚色,它是必须的一种二级定址法子。
在HTTP协议中的默认处事端口是80,虽然在小型社区中也可以利用其它的端口。本例中利用了默认处事端口。
Socket s=server.accept();
这一句的浸染是使处事器监听本机上的80端口,期待客户机的毗连。在没有新的毗连的环境下,处事器阻塞自身。当客户机毗连随处事器后函数返回一个套接字。然后,通过套接字的输入,输出流即可用读取本机文件的要领与客户机举办通信。
(三)客户端设计
在客户端,抱负的装置是电视机,因为当前电视机普及率高,有线电视线路遍布各地,可重用资源遍及。但今朝的电视机绝大大都是模仿电视机,它们只能吸收模仿电视信号,无法吸收数字电视信号,因此这种电视机的彩色图像和伴音质量并不是很高。而数字电视无论从价值,电台改革,线路改装等方面都存在很大的坚苦,短期内难以普及。那么可否有一种折衷方案,纵然今朝的模仿电视机也能吸收数字电视信号呢?答复是必定的。但它们必需附加一个被称作机顶盒(STB)的装置。
1.机顶盒观念先容:
#p#分页标题#e#
机顶盒(STB,Set Top Box)的观念较量遍及。从广义上说,每每与电视机毗连的网络终端设备都可称为机顶盒,主要有有线电视网络的模仿频道弥补器、模仿频道解扰器,上网机顶盒、数字卫星的综合吸收解码器(IRD,Integrated Receive Decoder)、数字地面机顶盒,以及有线电视数字机顶盒都可称为机顶盒。从狭义上说,我们可以将模仿设备解除在外,按主要成果将机顶盒分为上网机顶盒、 数字卫星综合吸收解码器、数字地面机顶盒,以及有线电视数字机顶盒,这些设备由于具有很好的网络成果,因此也成为信息家电的代表。 机顶盒也是信号传输介质与电视机之间的一种接口,并提供附加处事,可见它是一种中间电子设备。机顶盒可以把卫星直播数字电视信号、地面数字电视信号、有线电视网数字信号甚至因特网的数字信号转换成模仿电视机可以吸收的信号,使现有的模仿电视机用户也能分享数字化传媒带来的清晰,高效的科技成就。同时,它也可以实现电视广播从模仿信号向数字信号的平稳过渡,以及由于各种原因临时不想购置电脑的人们共享因特网的信息资源和现代化的通信手段。机顶盒有模仿和数字之分,但此刻人们所说的机顶盒一般指的是数字机顶盒。
2.机顶盒设计:
本设计中推荐的是上网机顶盒,这种机顶盒实际上是将电视机作为显示器组成了一个多媒体电脑,所以又称为WEB TV。
这种机顶盒主要是通过某种传输介质实现internet接入技能,其传输介质可以是电话线(电话调制解调器),有线电视网络(电缆调制解调器)等。在这种机顶盒中较著名的有微软公司的维纳斯打算,别的我国有很多企业连续推出了该类产物,如康佳的"光元"网络机顶盒、海信的"家庭网络快车"DB-200M互联网机顶盒、海尔的"网神"网络机顶盒等。但以上的机顶盒多半回收电话调制解调器,这样做的效果是占用了用户家中险些所有的网络资源(电话线和电视机),却只能实现上网成果跟着低价位PC机的普及其市场份额必将进一步下降。同时数字有线电视机顶盒技能却表示出了很大的成长空间。由于有线电视网络较好的传输质量以及电缆调制解调器技能的成熟,使得该类机顶盒可以实现各类交互式应用,从而满意各类用户的要求。事实上,该类机顶盒可以支持险些所有的广播和交互式多媒体应用,如数字电视广播吸收、电子节目指南(EPG)、准视频点播(NVOD)、按次付费寓目(PPV)、软件在线进级、数据广播、Internet接入、电子邮件、IP电话和视频点播等。
3.机顶盒中的操纵系统:
应用于数字有线电视机顶盒中的操纵系统与各人较量熟悉的PC的操纵系统,如DOS、Windows98、Windows NT、Unix、MacOS差异,机顶盒中的操纵系统不长短常的复杂,但却要求可以在及时的情况中事情,并能在较小的内存空间中运行。这种操纵系统称为及时操纵系统。
今朝风行的及时操纵系统有Wind River System公司的VxWorks、Integrated Systems Incorporated公司的pSOS、Microware公司的DAVID OS-9、ST公司的OS20、Windows CE以及专为机顶盒开拓的PowerTV等。这些操纵系统各有所长,在机顶盒中都有应用。个中VxWorks、pSOS、OS-9、OS20等是通用的及时操纵系统,在其他的嵌入式系统中也有遍及的应用。PowerTV是专为机顶盒开拓的,并将中间件集成在一起的操纵系统,在美国应用较广。跟着嵌入式Linux的逐渐成熟,不只为机顶盒厂商提供了一种选择,并且由于Linux的开放性和先进的布局,会对现有的及时操纵系统组成庞大的威胁。
别的,作为UNIX系统的一种变种,LINUX系统在应用软件,系统集成,以及用户开拓,利用习惯上都有十分大的优势,所以我们发起利用LINUX系统作为系统平台。
4.中间件
中间件是一种将应用措施与低层的操纵系统、硬件细节隔分开来的软件情况,这种分层的思想在现代系统设计中十分常见,如台甫鼎鼎的TCP/IP协议。中间件凡是由各类虚拟机来组成,如HTML虚拟机、JavaScript虚拟机、Java虚拟机等。
#p#分页标题#e#
一个完整的数字机顶盒由硬件平台和软件系统构成,可以将其分为4层,从底向上别离为硬件、底层软件、中间件、应用软件。硬件提供机顶盒的硬件平台;底层软件提供操纵系统内核以及各类硬件驱动措施;应用软件包罗本机存储的应用和可下载的应用;中间件将应用软件与依赖于硬件的底层软件脱离开来,使应用不依赖于详细的硬件平台。这样用户可以在任何厂家的硬件平台长举办应用软件开拓,和应用软件下载。不必介怀任何低层的有关信息。担保了机顶盒的开拓专业化。今朝成熟的用于机顶盒的商用中间件产物有Opentv的EN2、Liberate的TV Navigator for DTV、Enreach的EnreachTV for DTV、Canel+ 的Mediahighway和Intellibyte的IB EPG、IB SI Manager、IB Browser等,这些产物在市场上都占有一席之地,但互相并不兼容。
尺度组织已经认识到已有中间件产物兼容性差这个事实,而且开始着手成立开放的中间件尺度。DVB提出了基于Java虚拟机的中间件尺度DVB-MHP(多媒体家庭平台);ATSC创立了T3/S17技能专家小组委员会,致力于机顶盒软件情况的界说,该软件情况称为DTV应用软件情况(DASE)。ATVEF(先进电视成长论坛)也建设了一种称为Advanced Television Enhancement Forum Specification for Interactive Television 的类型。
其实,任何一种分层布局都不是要求完全一丝不差的凭据其布局,在中间件中我们认为JAVA虚拟机较有成长前途。因为首先,JAVA的设计初志就是为信息家电开拓提供一种简朴,结实的嵌入式语言。正是基于这样一种设计方针,JAVA具有小型化的本领可以在简朴的情况下运行。而价值方面的原因使机顶盒不行能,也不须要拥有同一时代的尺度设置的台式机的成果,这种相对简朴的硬件情况是可以运行JAVA虚拟机的。应用JAVA虚拟机的另一个原因是,此刻呈现了专门运行JAVA语言的JAVA芯片假如应用这种芯片作为机顶盒的CPU,则可以利用专门的JAVAOS作为操纵系统,操作JAVA语言的可移植性在台式机长举办应用层开拓,警惕台式机的调试开拓履历和东西。
(四)传输压缩方法
在视频点播,网上视频寓目中不行制止的要与数据压缩打交道,如何将视频数据,音频数据在必然的失真范畴内用最小的数据量传输是数据压缩要研究的一个重要的课题。数字多媒体技能的成长,打破了传统的模仿化图象的应用,图象的收罗以及存储、处理惩罚、显示等数字化的成长,其使我们设计的可行性大大提高。数据压缩及编码技能是设计中向数字机顶盒传输数据时的要害技能。图象压缩编码从开始系统研究至今已有近50年的汗青。1988年,CCITT(现ITU-T)拟定了可视电话/集会会议电视的H.261发起是极具代表性的尺度,厥后的MPEG-1、MPEG-2、H.263等图象压缩尺度都是以它为基本的。声音压缩编码的尺度也许多,如ITU-T拟定的G.711、G.722、G.728、G.723等。限于笔者的程度我们无法对各类压缩技能举办评价,所以在这里只作简朴的先容。
视频压缩技能中数字图象的压缩是多媒体通信的要害技能,"压缩比"是评价图象压缩要领机能的重要参数之一(也可按每象素几多比特反应压缩特性),图象压缩比回响了图象压缩的坚苦性和大概水平,ITU-T制订的各类尺度压缩比都差异。一般来说,压缩比越大,算法越巨大,及时压缩解压缩的坚苦水平越大,要求的硬件情况也越高。对付可视电话,若原图象名目回收QCIF(176×144),则原始图象有4.5Mb/s的数据量,若最后用28.8kb/S的MODEM在PSTN上传输,则要提供150多倍的压缩,遵循ITU-T和H.263尺度可实现此压缩,别的,H.261和MPEG-1也具有较低的码率,适合于在现有网络上传输视频。MPEG-1遍及用于VIDEO-CD的播放,H.261可应用于N-ISDN可视电话、集会会议电视、长途医疗、长途解说等各个方面。MPEG-2具有可分级性、可扩展性和互操纵性,且易于与ATM、计较机网络联络等一系列高机能,但其码率仍高达4~20Mbps,其主要方针是针对广播电视演播室图象质量和HDTV,现也应用于VOD和DVD的建造。另外,具有高级交互成果、更高图象声音质量和更大机动性的MPEG-4尺度,国际上正在研究制订之中。
三.进一步事情:
新一代数字机顶盒的主要配量CPU将进一步提高主频,个中将具备硬盘和打印节制成果、及时视频解码成果(切合MPEG、Qutik Time尺度)和及时音频解码成果(切合MPEG、AC-3和Real Audio尺度);以及与电视机遥控器合成一体的遥控键盘,这种键盘可以与此刻的键盘接口统一。它还具有硬盘存储、在线打印、画中画、电视与WWW跨接以及电子电视节目指南,电子邮件等成果,除为了实现及时视频解码的硬件解码器外,机顶盒将越来越靠近小我私家桌面电子计较机。它的互联网接入成果快要一步使传统的媒体供给商向网络靠拢。电视节目建造商将本身选定的节目放入WWW网点地点(URL),用户可以通过点击这个标志毗连WWW网点,以获取更多的信息,下载视频节目和应用软件。同时用户可以在寓目电视节目时利用网上资源。譬喻,一个学生在寓目一段有关火星探险的电视片时,可以点击屏幕上的NASA(美国宇航局)标志,进入NASA的WWW网点欣赏最新的航天科技动静,由于传统媒体供给商在媒体建造和销售等方面的履历,现阶段的网络供给商将面临更大的挑战。这种成果对付电视告白商具有极大的吸引力。画中画成果可以利用户一边看电视,一边在因特网上"冲浪",或调阅电子邮件,或举办社区内具有针对性的小范畴产物推销。由上可见,Web TV与其说是机顶盒,倒不如说它更像一台具有高速率通信本领的多媒体电脑,只不外它操作现有电视机作显示器,并可将电视机作为因特网终端,并且应用了当前的有线电视技能将电视与因特网融为一体。
参考书目:
1. 数字图象压缩编码在多媒体通信中的应用 北京邮电大学 张家谋 尹昊晖
2. 多姿多彩的数字机顶盒
3. 广播电视技能成长展望杜百川
4. 基于WEB的数据库技能研究 郑成增 陈志锋 陶勇 李思忠
5. Thinking in Java Bruce Eckel