熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JAVA實現支持視頻點播WEB服務器

2013-11-23 18:52:09  來源: Java核心技術 

  一項目簡介

  JAVA語言是一種可移植的簡單的健壯的嵌入式語言並且對網絡數據庫有很好的支持基於JAVA語言的這種特性可以十分容易地建立一個小型INTERNET服務器

  本項目中作者用JAVA語言編寫了一個WEB微型服務器對簡單的HTTP請求進行響應並通過後端數據庫對用戶的查詢進行處理從而動態地返回HTML頁面

  二項目實現

  (一)項目具體功能分析與開發工具選擇

  可以利用一台較高配置的個人台式機就可以實現社區內的小型服務器包括網頁浏覽基於高速局域網的視頻下載和播放定時新聞組發布程序郵件服務器等服務

  本軟件實際上是一個HTTP協議的服務器HTTP(Hyper Text Transfer Protocol)是一個專門為Web服務器和Web浏覽器之間交換數據而設計的網絡協議它通過規定通用資源定位符(URLs)使客戶端的浏覽器與服務器的Web資源建立鏈接關系從而奠定了用戶對Internet透明訪問的基礎

  在本軟件中通過傳輸HTML文件使客戶端可以實現網頁浏覽HTML是WWW的通用標記語言它用來創建Web頁面和控制Web信息顯示格式HTML不是編程語言而是一種描述語言HTML得到了IETF(Internet Engineering Task Force)的支持而成為Internet國際標准目前HTML已經發展到只是新版本的標准尚未完全統一不同的商家對HTML進行了一定的擴充引入了更多新的功能例如Netscape公司在HTML中增加了頁面底圖(Background Images)和表(Table)定義等標記使得Web頁面更加引人入勝

  CGI是通用網關接口(Common Gateway Interface)的簡稱它是Web服務器與外部程序之間的通信接口服務器並不關心外部應用程序是什麼語言(如CC++PascalDelphi或Perl)編寫的它只是負責接收用戶輸入的信息並把CGI程序所產生的結果HTML文檔或其他符合HTTP規定的文件回傳給用戶事實上CGI是動態Web頁面制作的第一步但由於CGI程序實現比較困難而且效率不高它已經逐漸被新的技術所取代

  網頁浏覽支持的網頁包括HTMLJAVASCRIPTAPPLETVBSCRIPT等編寫的網頁但不支持PHPASP等服務器端動態程序的網頁由於服務器的規模較小所以服務器端動態程序被集成進服務器中但可以通過編寫符合一定規則的JAVA的CGI程序實現服務器端的動態性不過這種JAVA程序的安全性很難保證

  (二)服務器的實現

  . 處理連接策略

  對於每一個用戶的連接我們采取了每次請求滿足後將用戶與服務器的連接斷開這時用戶如果有其他的請求則進入請求隊列重新進行資源競爭

  通常網頁中的每一個圖形都會被看成是一個單獨的連接也就是說對於一個圖形很多的網頁基於本服務器的連接策略將會進行多次請求這樣的好處是防止一個容量很大的網頁獨占網絡資源

  . 與數據庫連接

  在與數據庫的連接中我們選用的後端數據庫是微軟的ACCESS數據庫由於本項目是面向小型社區的社區數據中心服務器所以選用小型的數據庫由於JAVA的可移植性可以將服務器用在LINUX平台上這時可以用本服務器提供的數據庫配置程序連接到MySql等基於LINUX的小型數據庫

  我們應用JDBC完成與數據庫的連接Java的一項出色能力是構建與平台無關的客戶機/服務器數據庫應用在Java 通過Java數據庫連接(JDBC)實現了與各家公司之間的數據庫的互連數據庫最主要的一個問題就是各家公司之間的規格大戰確實存在一種標准數據庫語言結構查詢語言(SQL但各公司為了表示自己的與眾不同對標准都有一些微小的改動所以通常必須確切知道自己要和哪家數據庫公司打交道否則極易出問題盡管存在所謂的標准JDBC是面向與平台無關設計的所以在編程的時候不必關心自己要使用的是什麼數據庫產品和Java中的許多API一樣JDBC也做到了盡量的簡化我們發出的方法調用對應於從數據庫收集數據時想當然的做法同數據庫連接創建一個語句並執行查詢然後處理結果集無論與我們打交道的是哪家數據庫廠商的產品

  JDBC的使用

  為實現這一與平台無關的特點JDBC為我們提供了一個驅動程序管理器它能動態維護數據庫查詢所需的所有驅動程序對象所以假如要連接由數家公司開發的不同種類的數據庫就需要每個數據庫的單獨的驅動程序對象驅動程序對象會在裝載時由驅動程序管理器自動注冊並可用ClassforName()強行裝載

  為打開一個數據庫必須創建一個數據庫URL它要指定下述三方面的內容

  () 用jdbc指出要使用JDBC

  () 子協議驅動程序的名字或者一種數據庫連接機制的名稱由於JDBC的設計從ODBC吸收了許多靈感所以可以選用的第一種子協議就是jdbcodbc橋它用odbc關鍵字即可指定

  () 數據庫標識符隨使用的數據庫驅動程序的不同而變化但一般都提供了一個比較符合邏輯的名稱由數據庫管理軟件映射(對應)到保存了數據表的一個物理目錄為使自己的數據庫標識符具有任何含義必須用自己的數據庫管理軟件為自己喜歡的名字注冊(注冊的具體過程又隨運行平台的不同而變化)

  所有這些信息都統一編譯到一個字串裡數據庫URL本例中我們想通過ODBC子協議同一個標識為vod的數據庫連接相應的數據庫URL設為

  String dbUrl = jdbc:odbc:vod

  同樣如果通過一個網絡連接數據庫URL也需要包含對遠程機器進行標識的信息

  JDBC的連接方式

  首先JDBC中在DriverManager中對數據庫數據庫驅動程序進行登記

  ClassforName(sunjdbcodbcJdbcOdbcDriver);

  裝載JDBC ODBC橋驅動程序這樣做是為了讓DriverManager可以找到數據庫驅動程序然後利用DriverManager打開與數據庫的連接

  Mycon=DriverManagergetConnection(dbUrl);

  本語句的作用是確定與由dbUrl指定的數據庫的連接DriverManager將從其中登記的驅動程序中尋找最適當的驅動程序返回的Mycon代表了與特定的數據庫之間的連接

  Mysta=MyconcreateStatement();

  生成可以執行無參數SQL語句的Statement接口 然後就可以在Mysta中用executeQuery()函數執行SQL語句從返回的ResultSet獲取執行結果

  . 網絡連接

  網絡本身的概念並不難我們想獲得位於其他地方某台機器上的信息並把它們移到這兒或者相反這與讀寫文件非常相似只是文件存在於遠程機器上而且遠程機器有權決定如何處理我們請求或者發送的數據但大多數編程語言對網絡編程都較困難而Java最出色的一個地方就是它的無痛苦連網概念有關連網的基層細節已被盡可能地提取出去並隱藏在JVM以及Java的本機安裝系統裡進行控制我們使用的編程模型是一個文件的模型事實上網絡連接(一個套接字)已被封裝到系統對象裡所以可象對其他數據流那樣采用同樣的方法調用除此以外在我們處理另一個連網問題同時控制多個網絡連接的時候Java內建的多線程機制也是十分方便的

  服務器的主要任務是偵聽建立連接的請求這是由我們創建的特定服務器對象完成的而客戶機的任務是試著與一台服務器建立連接這是由我們創建的特定客戶機對象完成的一旦連接建好那麼無論在服務器端還是客戶機端連接變成了一個IO數據流對象從這時開始我們可以象讀寫一個普通的文件那樣對待連接所以一旦建好連接我們只需使用自己熟悉的IO命令即可

  首先server=new ServerSocket(acceptamount);

  生成一個服務器端的套接字其中第一個參數是表示服務器的監聽端口端口是機器內獨一無二的場所有些時候一個IP地址並不足以完整標識一個服務器這是由於在一台物理性的機器中往往運行著多個服務器(程序)由IP表達的每台機器也包含了端口(Port)我們設置一個客戶機或者服務器的時候必須選擇一個無論客戶機還是服務器都認可連接的端口端口並不是機器上一個物理上存在的場所而是一種軟件抽象(主要是為了表述的方便)客戶程序知道如何通過機器的IP地址同它連接但怎樣才能同自己真正需要的那種服務連接呢(一般每個端口都運行著一種服務一台機器可能提供了多種服務比如HTTP和FTP等等)?端口編號在這裡扮演了重要的角色它是必需的一種二級定址措施

  在HTTP協議中的默認服務端口是當然在小型社區中也可以使用其它的端口本例中使用了默認服務端口

  Socket s=serveraccept();

  這一句的作用是使服務器監聽本機上的端口等待客戶機的連接在沒有新的連接的情況下服務器阻塞自身當客戶機連接到服務器後函數返回一個套接字然後通過套接字的輸入輸出流即可用讀取本機文件的方法與客戶機進行通信

  (三)客戶端設計

  在客戶端理想的裝置是電視機因為當前電視機普及率高有線電視線路遍布各地可重用資源廣泛但目前的電視機絕大多數是模擬電視機它們只能接收模擬電視信號無法接收數字電視信號因此這種電視機的彩色圖像和伴音質量並不是很高而數字電視無論從價格電台改造線路改裝等方面都存在很大的困難短期內難以普及那麼能否有一種折衷方案即使目前的模擬電視機也能接收數字電視信號呢?回答是肯定的但它們必須附加一個被稱作機頂盒(STB)的裝置

  機頂盒概念介紹

  機頂盒(STBSet Top Box)的概念比較廣泛從廣義上說凡是與電視機連接的網絡終端設備都可稱為機頂盒主要有有線電視網絡的模擬頻道增補器模擬頻道解擾器上網機頂盒數字衛星的綜合接收解碼器(IRDIntegrated Receive Decoder)數字地面機頂盒以及有線電視數字機頂盒都可稱為機頂盒從狹義上說我們可以將模擬設備排除在外按主要功能將機頂盒分為上網機頂盒 數字衛星綜合接收解碼器數字地面機頂盒以及有線電視數字機頂盒這些設備由於具有很好的網絡功能因此也成為信息家電的代表 機頂盒也是信號傳輸介質與電視機之間的一種接口並提供附加服務可見它是一種中間電子設備機頂盒可以把衛星直播數字電視信號地面數字電視信號有線電視網數字信號甚至因特網的數字信號轉換成模擬電視機可以接收的信號使現有的模擬電視機用戶也能分享數字化傳媒帶來的清晰高效的科技成果同時它也可以實現電視廣播從模擬信號向數字信號的平穩過渡以及由於種種原因暫時不想購買電腦的人們共享因特網的信息資源和現代化的通信手段機頂盒有模擬和數字之分但現在人們所說的機頂盒一般指的是數字機頂盒

  機頂盒設計

  本設計中推薦的是上網機頂盒這種機頂盒實際上是將電視機作為顯示器構成了一個多媒體電腦所以又稱為WEB TV

  這種機頂盒主要是通過某種傳輸介質實現internet接入技術其傳輸介質可以是電話線(電話調制解調器)有線電視網絡(電纜調制解調器)等在這種機頂盒中較著名的有微軟公司的維納斯計劃另外我國有許多企業陸續推出了該類產品如康佳的光元網絡機頂盒海信的家庭網絡快車DBM互聯網機頂盒海爾的網神網絡機頂盒等但以上的機頂盒大都采用電話調制解調器這樣做的後果是占用了用戶家中幾乎所有的網絡資源(電話線和電視機)卻只能實現上網功能隨著低價位PC機的普及其市場份額必將進一步下降同時數字有線電視機頂盒技術卻表現出了很大的發展空間由於有線電視網絡較好的傳輸質量以及電纜調制解調器技術的成熟使得該類機頂盒可以實現各種交互式應用從而滿足各種用戶的要求事實上該類機頂盒可以支持幾乎所有的廣播和交互式多媒體應用如數字電視廣播接收電子節目指南(EPG)准視頻點播(NVOD)按次付費觀看(PPV)軟件在線升級數據廣播Internet接入電子郵件IP電話和視頻點播等

  機頂盒中的操作系統

  應用於數字有線電視機頂盒中的操作系統與大家比較熟悉的PC的操作系統如DOSWindowsWindows NTUnixMacOS不同機頂盒中的操作系統不是非常的龐大但卻要求可以在實時的環境中工作並能在較小的內存空間中運行這種操作系統稱為實時操作系統

  目前流行的實時操作系統有Wind River System公司的VxWorksIntegrated Systems Incorporated公司的pSOSMicroware公司的DAVID OSST公司的OSWindows CE以及專為機頂盒開發的PowerTV等這些操作系統各有所長在機頂盒中都有應用其中VxWorkspSOSOSOS等是通用的實時操作系統在其他的嵌入式系統中也有廣泛的應用PowerTV是專為機頂盒開發的並將中間件集成在一起的操作系統在美國應用較廣隨著嵌入式Linux的逐漸成熟不僅為機頂盒廠商提供了一種選擇而且由於Linux的開放性和先進的結構會對現有的實時操作系統構成巨大的威脅

  另外作為UNIX系統的一種變種LINUX系統在應用軟件系統集成以及用戶開發使用習慣上都有十分大的優勢所以我們建議使用LINUX系統作為系統平台

  中間件

  中間件是一種將應用程序與低層的操作系統硬件細節隔離開來的軟件環境這種分層的思想在現代系統設計中十分常見如大名鼎鼎的TCP/IP協議中間件通常由各種虛擬機來構成如HTML虛擬機JavaScript虛擬機Java虛擬機等

  一個完整的數字機頂盒由硬件平台和軟件系統組成可以將其分為從底向上分別為硬件底層軟件中間件應用軟件硬件提供機頂盒的硬件平台底層軟件提供操作系統內核以及各種硬件驅動程序應用軟件包括本機存儲的應用和可下載的應用中間件將應用軟件與依賴於硬件的底層軟件分隔開來使應用不依賴於具體的硬件平台這樣用戶可以在任何廠家的硬件平台上進行應用軟件開發和應用軟件下載不必介意任何低層的有關信息保證了機頂盒的開發專業化目前成熟的用於機頂盒的商用中間件產品有Opentv的ENLiberate的TV Navigator for DTVEnreach的EnreachTV for DTVCanel+ 的Mediahighway和Intellibyte的IB EPGIB SI ManagerIB Browser等這些產品在市場上都占有一席之地但彼此並不兼容

  標准組織已經認識到已有中間件產品兼容性差這個事實並且開始著手建立開放的中間件標准DVB提出了基於Java虛擬機的中間件標准DVBMHP(多媒體家庭平台)ATSC成立了T/S技術專家小組委員會致力於機頂盒軟件環境的定義該軟件環境稱為DTV應用軟件環境(DASE)ATVEF(先進電視發展論壇)也創建了一種稱為Advanced Television Enhancement Forum Specification for Interactive Television 的規范

  其實任何一種分層結構都不是要求完全一絲不差的按照其結構在中間件中我們認為JAVA虛擬機較有發展前途因為首先JAVA的設計初衷就是為信息家電開發提供一種簡單健壯的嵌入式語言正是基於這樣一種設計目標JAVA具有小型化的能力可以在簡單的環境下運行而價格方面的原因使機頂盒不可能也不必要擁有同一時代的標准配置的台式機的功能這種相對簡單的硬件環境是可以運行JAVA虛擬機的應用JAVA虛擬機的另一個原因是現在出現了專門運行JAVA語言的JAVA芯片如果應用這種芯片作為機頂盒的CPU則可以使用專門的JAVAOS作為操作系統利用JAVA語言的可移植性在台式機上進行應用層開發借鑒台式機的調試開發經驗和工具

  (四)傳輸壓縮方式

  在視頻點播網上視頻觀看中不可避免的要與數據壓縮打交道如何將視頻數據音頻數據在一定的失真范圍內用最小的數據量傳輸是數據壓縮要研究的一個重要的課題數字多媒體技術的發展突破了傳統的模擬化圖象的應用圖象的采集以及存儲處理顯示等數字化的發展其使我們設計的可行性大大提高數據壓縮及編碼技術是設計中向數字機頂盒傳輸數據時的關鍵技術圖象壓縮編碼從開始系統研究至今已有近年的歷史CCITT(現ITUT)制定了可視電話/會議電視的H建議是極具代表性的標准後來的MPEGMPEGH等圖象壓縮標准都是以它為基礎的聲音壓縮編碼的標准也很多如ITUT制定的GGGG限於筆者的水平我們無法對各種壓縮技術進行評價所以在這裡只作簡單的介紹

  視頻壓縮技術中數字圖象的壓縮是多媒體通信的關鍵技術壓縮比是評價圖象壓縮方法性能的重要參數之一(也可按每象素多少比特反映壓縮特性)圖象壓縮比反應了圖象壓縮的困難性和可能程度ITUT制訂的各種標准壓縮比都不同一般來說壓縮比越大算法越復雜實時壓縮解壓縮的困難程度越大要求的硬件環境也越高對於可視電話若原圖象格式采用QCIF(×則原始圖象有Mb/s的數據量若最後用kb/S的MODEM在PSTN上傳輸則要提供多倍的壓縮遵循ITUT和H標准可實現此壓縮另外H和MPEG也具有較低的碼率適合於在現有網絡上傳輸視頻MPEG廣泛用於VIDEOCD的播放H可應用於NISDN可視電話會議電視遠程醫療遠程教學等各個方面MPEG具有可分級性可擴展性和互操作性且易於與ATM計算機網絡聯結等一系列高性能但其碼率仍高達Mbps其主要目標是針對廣播電視演播室圖象質量和HDTV現也應用於VOD和DVD的制作此外具有高級交互功能更高圖象聲音質量和更大靈活性的MPEG標准國際上正在研究制訂之中

  三進一步工作

  新一代數字機頂盒的主要配量CPU將進一步提高主頻其中將具備硬盤和打印控制功能實時視頻解碼功能(符合MPEGQutik Time標准)和實時音頻解碼功能(符合MPEGAC和Real Audio標准)以及與電視機遙控器合成一體的遙控鍵盤這種鍵盤可以與現在的鍵盤接口統一它還具有硬盤存儲在線打印畫中畫電視與WWW跨接以及電子電視節目指南電子郵件等功能除為了實現實時視頻解碼的硬件解碼器外機頂盒將越來越接近個人桌面電子計算機它的互聯網接入功能將近一步使傳統的媒體供應商向網絡靠攏電視節目制作商將自己選定的節目放入WWW網點地址(URL)用戶可以通過點擊這個標記連接WWW網點以獲取更多的信息下載視頻節目和應用軟件同時用戶可以在觀看電視節目時使用網上資源例如一個學生在觀看一段有關火星探險的電視片時可以點擊屏幕上的NASA(美國宇航局)標記進入NASA的WWW網點浏覽最新的航天科技消息由於傳統媒體供應商在媒體制作和銷售等方面的經驗現階段的網絡供應商將面對更大的挑戰這種功能對於電視廣告商具有極大的吸引力畫中畫功能可以使用戶一邊看電視一邊在因特網上沖浪或調閱電子郵件或進行社區內具有針對性的小范圍產品推銷由上可見Web TV與其說是機頂盒倒不如說它更像一台具有高速率通信能力的多媒體電腦只不過它利用現有電視機作顯示器並可將電視機作為因特網終端而且應用了當前的有線電視技術將電視與因特網融為一體


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25896.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.