国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺析基于Apache視頻直播技術

2009-09-28 07:29石華龍
辦公室業(yè)務 2009年5期
關鍵詞:視頻多媒體

石華龍

摘要: Apache具有高度的模塊化特性,該特性實現(xiàn)了Apache的靈活性和可擴展性,而且開發(fā)者可以利用該特性很容易地添加第三方功能模塊,通過模塊開發(fā)人員可以添加任何功能。在Apache服務器的基礎上,通過向Apache服務器增加一個功能模塊,可使Apache具有了流式媒體服務器的功能,能向客戶端提供實時的視頻數(shù)據(jù)。

關鍵詞:Internet;多媒體;視頻;流式媒體技術

1.Apache的主要特征

可以運行上所有計算機平臺;支持的HTTP 1.1協(xié)議;簡單而強有力的基于文件的配置;支持通用網(wǎng)關接口CGI;支持虛擬主機;支持http;集成Perl腳本編程語言;集成的代理服務器;縣有可定制的服務器日志;支持服務器端包命令(SSI);支持安全SOCket層(SSL);用戶會話過程的跟蹤能力;支持FastCGI;支持Java Servlets。

編寫服務器是非常簡單的,僅僅需要監(jiān)聽合適的端口,建立連接,發(fā)送數(shù)據(jù)。編寫這樣的服務器和客戶端的收發(fā)一般總是相輔相成地發(fā)展的,兩者的誕生標志著WWW的開始在九十年代瀏覽器、Web 服務器、HTML和HTTP協(xié)議都得到了快速的發(fā)展。隨后服務器變?yōu)橛蒒CSA開發(fā),相應的也變?yōu)镹CSA Web服務器。瀏覽器M Mosaic變?yōu)镹etscape Navigator. NCSA目前仍然可以得到,雖然它不再被維護和繼續(xù)開發(fā),但仍然可以免費下載其源代碼。其就是著名的Web服務器Apache的前身。

但是要進行這樣的聯(lián)系也需要一個客戶端、一個協(xié)議和一個網(wǎng)絡環(huán)境。但是當Internet不斷發(fā)展,Web服務器需要更多的功能以滿足客戶端對更多動態(tài)內(nèi)容的需求。Apache己經(jīng)發(fā)展出擴展模塊方式來滿足這種需求。但是當Web服務成為很多商務應用都必須面對和采用的技術時,就出現(xiàn)了很多不同Web服務器以滿足這些不同的需求。可伸縮性,可靠性,速度和高級動態(tài)功能都是Web服務器應該具有的關鍵因素,特別是在電子商務應用環(huán)境中。易于配置和管理對于新手來說也同樣重要。

2.Apache的基本結(jié)構(gòu)

Apache有非常好的跨平臺性。為了實現(xiàn)這一目標和簡化模塊編寫者的負擔,Apache完成了許多基本的功能如IO,內(nèi)存分配等,這些接口都是與具體平臺無關的。還有一些很有用的例如:hash table, array有一個基本點,它盡可能的使用簡單的結(jié)構(gòu)和算法,提高了它的穩(wěn)定性。

在UNIX系統(tǒng)上,Apache采用了多進程模型, Apache的主配置文件為純文本格式的httpd.conf,隨著Apache版本的發(fā)展,其他一些配置文件則逐漸消亡,趨向于使用單一的配置文件httpd.conf來存放所有的配置指令,如客戶訪問信息、記錄認證信息和虛擬服務器等等。Apache配置選項采用的是指令模式,配置指令設定各種參數(shù)的值,例如:DocumentRoot設置服務器Web頁面的根目錄。你也可以靈活地設置多個基于IP或基于域名的虛擬Web服務器,這些Web虛擬服務器可以各自定義獨立的DocumentRoot配置指令。而LoadModule指令則用來指定加載不同的模塊來實現(xiàn)對Apache服務器功能的擴充。這些新功能大多是提供服務器端對腳本技術的支持,比如Perl,PHP等。Apache結(jié)合使用ApacheJServ可以實現(xiàn)對Java servlets及JSP的支持。

Apache是山模塊組成,其中http_core.c是最根本的,一個最小Apache編譯只包含這一個模塊。你可以用“httpd -1”可以列出Apache被編譯進了哪些模塊.動態(tài)模塊是需要在配制文件中定義的。在Redhat中,只有“http_core.c”被編譯進去了,其余的都被編譯成了so??梢员籄pache動態(tài)加載。Redhat中的Apache是比較特殊的,標準的Apache只有一個配制文件httpd.conf,其他的文件都是空的。

下面是在配制文件中裝載模塊的命令:

LoadModule

ClearkloduleList

AddModule

SetHandler

LoadModule是用于動態(tài)加載模塊的。CIearModuleList是刪除Apache中的模塊列表。AddModule是將模塊加入到列表中去。上面命令是用于重新構(gòu)造模塊列表,模塊在列表中的順序代表了其處理時的優(yōu)先級,后面的優(yōu)先級高。SetHandler用將某個清求和模塊連接起來,例如將對實時視頻的請求與實時視頻模塊連接起來,則所有的實時視頻的請求的處理都會由這個實時視頻模塊來處理。

Apache將對一個客戶端的請求按以下步驟處理:

URI文件名的轉(zhuǎn)換;用戶ID檢查;用戶進入檢查;進入檢查;判斷所請求的對象的類型;修正;真在將應答發(fā)送給客戶;對請求作日志。

對每個步驟Apache內(nèi)核都會激活模塊相應的處理部分,判斷模塊是否處理了相應的步驟。模塊對上述步驟的處理一般會是下面情況:

對這個步驟進行處理,同時返回OK表示這個步驟已經(jīng)被正確處理了;.拒絕處理,同時返回DECLINED表示

這個步驟沒有被處理。Apache內(nèi)核將在同樣的狀態(tài)下調(diào)用其它模塊對這個請求進行處理;通過返回一個HTTP錯誤代碼,表示發(fā)生了一個錯誤。這將打破正常的處理步驟,中斷對客戶端請求的繼續(xù)處理,對錯誤進行日志處理。

大部分的步驟會在第一個對它進行了正確處理的模塊之后退出,但對于如日志、修正和認證步驟所有的模塊都會被調(diào)用進行處理,除非在此之中模塊返回了一個錯誤。模塊可以聲明“*/*”處理所有類型的請求,但是對于處理通配符“*”的模塊只有在Apache內(nèi)核調(diào)用了其它處理模塊沒有發(fā)現(xiàn)能夠進行更精確的處理模塊之后才有機會被調(diào)用。每個處理模塊都是一個函數(shù),這個函數(shù)只有一個為request_rec結(jié)構(gòu)的參數(shù)。

Apache本身只負責內(nèi)存分配、IO、進程管理和模塊管理等,它通過調(diào)用模塊提供的接口函數(shù)完成配制命令的處理和用戶請求的實際處理.其中的核心模塊http-core.c提供了最基本的命令,每一個模塊通常都會有自己的配制命令.模塊可以參與上述的八個步驟.每一個模塊提供一個struct module其中定義了大量函數(shù)指針和結(jié)構(gòu)指針,通過struct module告訴Apache該模塊所支持的命令和參與的步驟.

3.Apache模塊的編寫

也許在Apache模塊中最重要的結(jié)構(gòu)就是module了,這個結(jié)構(gòu)定義在http_config.h中所以一般所有的模塊程序中最開頭的兩句就是下面兩句了:

#include “l(fā)tttpd.h”

#include “http_ config.h”

其中httpd.h必須出現(xiàn)在所有的Apache程序中。

結(jié)構(gòu)module在Apache內(nèi)核和模塊提供了一個接口,使得Apache內(nèi)核和模塊無縫連接在了一起。在結(jié)構(gòu)module中包括了一系列的函數(shù)指針,就是通過在Apache的配制文件httpd.conf中加入下面這句話,使Apache在啟動時加載模塊realtime.dll的。

LoadModule realtime_ module mymodules/realtime/realtime.dll

第一項STANDARD_ MODULE._ STUFF必須出現(xiàn)在所有模塊中,它初始化了一些基本的結(jié)構(gòu)單元如版本一號和模塊名等,Apache內(nèi)核通過這些來管理模塊。初始化在內(nèi)核讀取了配置信息后和在未產(chǎn)生任何子進程時調(diào)用。創(chuàng)建目錄配置、合并目錄配置 ,服務器配置、合并服務器配置,命令表是用于模塊來從Apache配置文件讀取模塊自己的配置信息,在模塊結(jié)構(gòu)中提供這些單元使得Apache模塊使用起來非常靈活。

每個處理模塊函數(shù)只有一個為request_rec結(jié)構(gòu)的參數(shù),這個為request_rec結(jié)構(gòu)的參數(shù)對應了個來自客戶端對服務端的請求,一般對整個請求都只有一個為request_rec結(jié)構(gòu)的參數(shù)。在reques_rec中包含了請求的所有信息,在請求被Apache內(nèi)核處理時會被釋放:在request_rec中有一些足用字符串的信息如它的URI、文件名、內(nèi)容類型和內(nèi)容編碼等。大部分的,equest_rec信息都是通過來自客戶端的HTTP請求得來的。

realtime Handlers模塊是實時視頻模塊的核心部分,所有對實時視頻數(shù)據(jù)的請求都在本模塊中進行處理。在模塊中所有的處理都是采用Apache內(nèi)核所提供的API函數(shù)。在本模塊中首先向客戶端發(fā)送標準的HTTP響應,然后進入主循環(huán).在主循環(huán)中首先等待視頻數(shù)據(jù)可用,一旦數(shù)據(jù)可用就向客戶端發(fā)送視頻數(shù)據(jù),并更新Apache的狀態(tài),使其它模塊可得到Apache的實時信息、如總共向客戶端發(fā)送了多少視頻數(shù)據(jù)等以便進行統(tǒng)計。

4.基于Apache的流式媒體系統(tǒng)的總體框架

ernet的快速發(fā)展,Internet已經(jīng)無所不在,網(wǎng)絡現(xiàn)場直播已經(jīng)從實驗階段走向了實用階段。各式各樣的社會活動,都可以借助網(wǎng)上現(xiàn)場直播的方式傳遍全世界,如新聞發(fā)布會、體育比賽、商貿(mào)展覽、商業(yè)宣傳、遠程會議、遠程看護開學典禮、校友聚會、周年慶典、結(jié)婚慶典等等。我們可以應客戶的要求把活動現(xiàn)場的音頻或視頻信號經(jīng)壓縮、送到多媒體服務器上,在Internet上供廣大網(wǎng)友或授權(quán)特定人群就近收聽或收看。

所謂“流式媒體技術”,簡單的解釋就是采用“流”技術來傳播多媒體資源。那么,什么是“流”技術呢?我們平常會見到很多的“流”:水流、汽流、車流等,它們一個共同的特征就是“連續(xù)性”是一個接著一個。我們把這樣的思想用到在互聯(lián)網(wǎng)上傳播影音文件上來,就出現(xiàn)了所謂的“流式媒體技術”。

曾經(jīng),我們?yōu)榱嗽诰W(wǎng)上欣賞一段聲音或者電影片段,需要等待漫長的下載過程。流式媒體技術的出現(xiàn),給互聯(lián)網(wǎng)帶來勃勃生機,讓我們在互聯(lián)網(wǎng)上傳輸和播放聲音、影像己經(jīng)變得非常方便。簡單地說,它采用邊傳邊播放的思想,無需等到文件全部下載就可以欣賞其中的樂趣。

本系統(tǒng)可以實現(xiàn)很多的應用。例如可應用于下列場合:

互聯(lián)網(wǎng)直播;網(wǎng)站視音頻服務;寬帶M視頻點播;遠程教學;遠程單向視頻會議;遠程監(jiān)控。

在本系統(tǒng)中主要包括下面這些部分:

節(jié)目源:節(jié)目源可以是錄像機、VCD機、錄音機或者是攝像機、電視臺的影像節(jié)目。

數(shù)據(jù)捕獲和編碼:由MPEG-1壓縮卡組成,安裝在一臺PC機編碼工作站上,負責把實時視頻信號數(shù)字化成MPEG-1格式,送到Apache服務器一上,同時以文件的形式存放到服務器上。

實時服務器: 實時視頻服務器采用的是Apache服務器加上實時視頻服務模塊: Apache服務器是因特網(wǎng)上主流的服務器,上面已經(jīng)有了很多成熟的技術了,對于系統(tǒng)其他功能的擴充如用戶管理等就很方便了,使本系統(tǒng)具有了很大的優(yōu)勢。

視頻分流服務器:視頻分流服務器采用的是Apache服務器加上分流器模塊。分流技術是用來在服務器之間傳輸直播數(shù)據(jù)的一種技術。它降低了對服務器性能的要求,對網(wǎng)絡的負擔,提高了系統(tǒng)的整體性能,大大的提高了系統(tǒng)所能驅(qū)動的客戶端的數(shù)量。

客戶:客戶使用普通的多媒體PC機,通過撥號或者專線入網(wǎng),可以通過WWW瀏覽方式,查詢并點播本系統(tǒng)提供的視頻服務。在系統(tǒng)中客戶端只需要瀏覽器如IE就夠了,不需要安裝其它軟件,就可以瀏覽到實時的視頻信息,大大的方便了客戶端的使用,特別對電腦不太熟悉的用戶來說特別方便。

在整個系統(tǒng)中采用了分流技術(Splitting),分流技術是用來在服務器之間傳輸直播數(shù)據(jù)的。使得客戶端可以就近訪問視頻服務器,獲得更好的訪問質(zhì)量。分流技術在整個系統(tǒng)中起到很重要的作用,它使整個系統(tǒng)大大的提高了整體的性能,大人的提島了系統(tǒng)所能NX動的客戶端的數(shù)量,在沒有分流技術的情況下,所有的客戶端都連接到同一個視頻服務器上,因此對服務器的性能的要求很高,對服務器的負擔很重:在采用了分流技術之后,系統(tǒng)共有了分布式處理的功能,戶端可以就近訪問視頻服務器,不必都集中在個服務器上,人人的減輕了視頻服務器的負擔,對服務器的性能的要求也可以相對的降低一點。

在采分流技術中,比較重要的是要保證從系統(tǒng)中的住何一個服務器得到的視頻數(shù)據(jù)都要是實時的:在各個服務器之間它們是級連的關系,下一級的視頻服務器從上一級的視頻服務器中取得實時視頻數(shù)據(jù),在本地保留一份數(shù)據(jù)傳給下一級的視頻服務器和連接到它上的客戶。端。各個視頻服務器之間采用級連的結(jié)構(gòu),保證每個個服務器都保留著最新的實時數(shù)據(jù)。每個客戶端不管連接到哪個服務器都能得到同樣最新的數(shù)據(jù),因此客戶端連接到離自己最近的視頻服務器上。不必將所有的連接請求都集中到一個服務器身上。降低了對服務器性能的要求。對網(wǎng)絡的負擔,提高了系統(tǒng)的整體性能。

5.客戶端的技術

實時視頻數(shù)據(jù)的接收工作主要是通過Windows的Media Player技術實現(xiàn)的.我們一個Windows的媒體播放器,輸入地址:http:/127.0.0.1/realtime就可以接收到實時視頻數(shù)據(jù):雖然上面兩種方法均能完成流信息的播放,但不足之處是播放是在獨立的窗口中進行的。幸運的是Media Player是一個標準的ActiveX控件,我們可以將它作為一個對象直接嵌入到HTML頁中去,這樣就可以在Web頁中直接用Player對象來播放流節(jié)目。在Web 頁中啟之入Media Player的方法比較簡單.,只要用HTML 中的

猜你喜歡
視頻多媒體
借助多媒體探尋有效設問的“四度”
多媒體情境下培養(yǎng)學生閱讀素養(yǎng)的三個維度
如何有效利用多媒體課件為教學服務
多媒體在高中物理教學中的應用
計算機基礎課MOOC視頻的制作方法
新浪網(wǎng)副總裁談移動直播如何帶來媒體彎道超車新機會
基于IPv6組播技術校園網(wǎng)絡視頻服務設計
淺談HTML5的發(fā)展與應用趨勢
南皮县| 台北县| 禹州市| 四会市| 右玉县| 英德市| 泗洪县| 嘉义市| 抚顺县| 登封市| 保山市| 游戏| 长汀县| 长顺县| 中江县| 水富县| 竹北市| 平利县| 顺义区| 阜平县| 河间市| 岗巴县| 蒲江县| 花垣县| 长汀县| 五原县| 英吉沙县| 武威市| 汝城县| 喀喇沁旗| 弥渡县| 东阳市| 定结县| 商城县| 海原县| 和平县| 和静县| 巨鹿县| 霍邱县| 进贤县| 阿拉善右旗|