亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        支持隨機(jī)播放HTTP協(xié)議流式視頻點(diǎn)播系統(tǒng)的搭建

        2010-12-31 00:00:00熊冬升
        現(xiàn)代教育技術(shù) 2010年8期

        【摘要】通過剖析支持隨機(jī)播放HTTP協(xié)議流式視頻點(diǎn)播系統(tǒng)在服務(wù)器端、客戶端以及內(nèi)容源的關(guān)鍵要求,提出對應(yīng)實(shí)現(xiàn)技術(shù)特點(diǎn),全面介紹了一種基于HTTP協(xié)議傳輸flv流式視頻并且支持隨機(jī)定位播放的視頻點(diǎn)播系統(tǒng)搭建技術(shù)。

        【關(guān)鍵詞】HTTP協(xié)議;流式視頻;點(diǎn)播系統(tǒng);隨機(jī)播放

        【中圖分類號】G40-057【文獻(xiàn)標(biāo)識碼】A【論文編號】1009—8097(2010)08—0052—03

        引言

        視頻點(diǎn)播系統(tǒng)(Video On Demand ,VOD)是當(dāng)前媒體應(yīng)用的一個熱點(diǎn),在現(xiàn)代遠(yuǎn)程教育中也是一項(xiàng)重要應(yīng)用。采用流式視頻點(diǎn)播系統(tǒng)來支持教學(xué)視頻的傳輸,是大多數(shù)遠(yuǎn)程教育試點(diǎn)高校正在使用的技術(shù)。當(dāng)前普遍的流式視頻點(diǎn)播系統(tǒng)都是基于一些專用網(wǎng)絡(luò)傳輸協(xié)議搭建的,主要有mms協(xié)議、rtsp協(xié)議和rtmp協(xié)議等,這些協(xié)議都可以實(shí)現(xiàn)流式視頻點(diǎn)播系統(tǒng),但因?yàn)槠涫撬接袇f(xié)議,在一些網(wǎng)絡(luò)環(huán)境中使用會遇到一些因?yàn)閰f(xié)議不支持而不能正常使用的麻煩,此外采用了這類實(shí)現(xiàn)方式就不得不采用其專門軟件,特別是昂貴的專門服務(wù)器軟件。為了突破這樣一些困難,現(xiàn)在逐漸興起了HTTP協(xié)議流式視頻點(diǎn)播系統(tǒng),這些系統(tǒng)不采用專門的服務(wù)器軟件,對客戶端要求也只是一些基于普遍應(yīng)用的嵌入式小程序,供點(diǎn)播的流式視頻源也可以方便的獲得,所以逐漸成為了當(dāng)前流式視頻點(diǎn)播應(yīng)用的主流。本文就將介紹這類系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)。

        一 流式視頻點(diǎn)播應(yīng)用與點(diǎn)播系統(tǒng)簡介

        一個流式視頻點(diǎn)播應(yīng)用的過程是客戶端發(fā)起一個對某段內(nèi)容的點(diǎn)播請求,服務(wù)器響應(yīng)該請求,依據(jù)請求向客戶端傳輸視頻內(nèi)容,客戶端接收到內(nèi)容后進(jìn)行解碼播放。不同于非流式視頻點(diǎn)播就在于客戶端不需要接受完所有的文件內(nèi)容就可以開始播放。

        可見視頻點(diǎn)播系統(tǒng)實(shí)現(xiàn)主要包括3個要素:服務(wù)器端、客戶端、流式視頻內(nèi)容,其系統(tǒng)結(jié)構(gòu)圖如圖1所示。

        服務(wù)器端主要提供響應(yīng)客戶端請求,向客戶端傳輸流式視頻數(shù)據(jù);客戶端向服務(wù)器發(fā)起對具體內(nèi)容的請求,在接受到傳輸來的流式視頻數(shù)據(jù)后實(shí)時解碼,實(shí)現(xiàn)內(nèi)容展示;流式視頻內(nèi)容是以一定格式編碼的視頻數(shù)據(jù)文件,其在服務(wù)器端表現(xiàn)為獨(dú)立存儲的專門文件。

        流式視頻點(diǎn)播系統(tǒng)與視頻實(shí)時廣播系統(tǒng)主要區(qū)別就在于流式視頻內(nèi)容不同,流式視頻點(diǎn)播系統(tǒng)中的流式視頻內(nèi)容是預(yù)先編碼存儲好的,而實(shí)時廣播系統(tǒng)是由專門的實(shí)時編碼軟件實(shí)時傳輸過來的。

        流式點(diǎn)播應(yīng)用還分支持隨機(jī)定位播放和不支持隨機(jī)定位播放兩種形式。不支持隨機(jī)定位播放的點(diǎn)播指文件數(shù)據(jù)只能嚴(yán)格按照固有的順序進(jìn)行傳輸,客戶端只能看到已經(jīng)傳輸并緩沖在本地的內(nèi)容,不能隨意的請求更后面的內(nèi)容。反之,支持隨機(jī)定位播放的點(diǎn)播就可以不嚴(yán)格依照固有順序,能從播放內(nèi)容中隨意的一個時間點(diǎn)開始播放。

        二 支持隨機(jī)定位播放的HTTP協(xié)議流式視頻點(diǎn)播系統(tǒng)搭建的三個關(guān)鍵

        要實(shí)現(xiàn)支持隨機(jī)定位播放的HTTP協(xié)議流式視頻點(diǎn)播系統(tǒng)需要使視頻點(diǎn)播系統(tǒng)的三個要素都滿足一定的要求,這就成為了系統(tǒng)實(shí)現(xiàn)的三個關(guān)鍵點(diǎn)。

        1 服務(wù)器端要求:服務(wù)器端的關(guān)鍵是能在普通HTTP流式傳輸基礎(chǔ)上,能根據(jù)特殊的請求隨機(jī)從內(nèi)容文件中定位開始傳輸新的數(shù)據(jù),即能響應(yīng)帶隨機(jī)定位標(biāo)記的點(diǎn)播請求。其實(shí)這就類似于支持?jǐn)帱c(diǎn)續(xù)傳的HTTP服務(wù),只不過斷點(diǎn)續(xù)傳中的續(xù)傳標(biāo)記是數(shù)據(jù)傳輸中隨機(jī)分隔的,這里的定位標(biāo)記需要按一定計算才能獲得,使得播放能夠重新建立。

        2客戶端的要求:客戶端的關(guān)鍵是能在普通流式播放基礎(chǔ)上能夠通過計算提出正確的請求定位參數(shù),并能夠?qū)崿F(xiàn)隨機(jī)定位后的播放——從中途開始的播放。

        3 流式視頻內(nèi)容方面要求:流式視頻內(nèi)容的關(guān)鍵是能夠支持服務(wù)器和客戶端隨機(jī)定位的請求,這一般需要特殊的內(nèi)部數(shù)據(jù)組織。

        三 系統(tǒng)實(shí)現(xiàn)

        分析了系統(tǒng)的關(guān)鍵點(diǎn),實(shí)現(xiàn)系統(tǒng)就變得比較簡單了,主要涉及三個方面。

        1 流式視頻內(nèi)容格式的選擇 在系統(tǒng)實(shí)現(xiàn)中我們以flv(FLASH VIDEO)視頻作為流式視頻內(nèi)容格式。流式flv是當(dāng)前最流行的視頻格式,廣泛被各大視頻網(wǎng)站采用,比如YouTube、土豆網(wǎng)等等。其可以方便地采用免費(fèi)開源轉(zhuǎn)換軟件如ffmpeg和mencoder等從各類其他視頻格式轉(zhuǎn)換獲得。需要注意的是經(jīng)過轉(zhuǎn)換的flv其實(shí)還不能滿足隨機(jī)定位播放的要求,還需要采用yamdi或者flv tools2 工具對flv文件進(jìn)行metadata數(shù)據(jù)注入修正,經(jīng)過metadata注入,flv文件上就有了整個視頻文件播放總時間以及視頻每秒對應(yīng)的文件位置數(shù)據(jù)等信息,這為后面在客戶端計算出隨機(jī)播放定位時的文件頭位置提供了條件。metadata數(shù)據(jù)還包括了視頻原始分辨率、采用的編碼格式等信息,這都為實(shí)現(xiàn)視頻的播放提供了保障。

        2 客戶端的實(shí)現(xiàn) 客戶端就是可嵌入普通web頁面內(nèi)的flash小程序,程序可以用很多工具開發(fā),為了使程序小巧,推薦直接采用ActionScript3開發(fā),使用Flex SDK編譯生成swf格式程序,這可以使得最后程序?yàn)?0k左右。ActionScript3編程時采用Flash9的原生播放器庫中的NetConnection 類、NetStream類以及Video類等就可以創(chuàng)建采用漸進(jìn)式流媒體方式播放flv格式視頻的播放類了,但要實(shí)現(xiàn)隨機(jī)定位還需要進(jìn)行專門的定制處理,這也不復(fù)雜,主要有這樣的2個步驟:

        (1) 首次開始播放時加載flv文件metadata數(shù)據(jù),提取并緩存總播放時間和每秒對應(yīng)文件頭信息等數(shù)據(jù);另根據(jù)metadata中視頻分辨率、編碼格式等信息建立播放環(huán)境開始播放視頻;

        (2) 按時間的定位操作分成兩種形式:形式一是數(shù)據(jù)已經(jīng)緩沖到客戶端,直接使用NetStream類提供的seek函數(shù)實(shí)現(xiàn)定位播放;形式二是數(shù)據(jù)還未緩沖到,則需要計算出定位時間所對應(yīng)的文件頭,向服務(wù)器發(fā)出新的數(shù)據(jù)請求,重新緩沖后開始播放。

        這里判斷是否已經(jīng)緩沖到定位時間的條件有:

        StartOff < SeekOff ————條件1

        SeekOff < StartOff + BufferLoaded————條件2

        StartOff是此次請求的文件頭偏移地址,首次定位前為0;

        SeekOff是對應(yīng)定位時間的文件頭偏移地址,這個通過來源于metadata數(shù)據(jù)查表獲得;

        BufferLoaded是本次播放已經(jīng)緩沖的數(shù)據(jù)量。

        如果條件1和條件2同時滿足,即StartOff路徑/文件名?定位頭參數(shù)標(biāo)記=文件頭偏移量,例如 http://168.0.0.1/xxx.flv?start=12345,這其實(shí)就是在請求文件時附帶了一個關(guān)于文件頭偏移的參數(shù),其中“定位頭參數(shù)標(biāo)記”的具體名稱是可以自定的,需要服務(wù)器端支持,這里采用的是“start”,文件頭偏移量是查表獲得的,也就是前面條件中的SeekOff。

        3 服務(wù)器端的選用。服務(wù)器端可以采用常見的開源HTTP服務(wù)器,只要其支持HTTP流式數(shù)據(jù)即可,推薦使用Nginx或者lighttpd,因?yàn)檫@兩種服務(wù)器對flv格式有專門的優(yōu)化,而且對隨機(jī)播放支持也已經(jīng)有了相應(yīng)的服務(wù)器擴(kuò)展實(shí)現(xiàn),我們采用的是Nginx。 默認(rèn)Nginx實(shí)現(xiàn)flv點(diǎn)播支持時采用“start”為定位頭參數(shù)標(biāo)記,如果你想定義自己的標(biāo)記可以修改 ngx_http_flv_module 模塊并編譯替換系統(tǒng)默認(rèn)的。在Nginx中的相關(guān)配置是在某個server配置中添加:

        Location ~ \\.flv {

        root<服務(wù)端數(shù)據(jù)路徑>; #<服務(wù)端數(shù)據(jù)路徑>需要指向真實(shí)目錄

        flv;

        }

        至此一個完整的支持隨機(jī)定位播放HTTP協(xié)議流式視頻點(diǎn)播系統(tǒng)已經(jīng)搭建起來。

        小結(jié)

        本文介紹的支持隨機(jī)定位播放HTTP協(xié)議流式視頻點(diǎn)播系統(tǒng)實(shí)際搭建比較方便,應(yīng)用范圍廣泛。且該系統(tǒng)支持Linux和win32平臺等可跨平臺部署和使用,這進(jìn)一步拓展了系統(tǒng)的應(yīng)用空間。因?yàn)閿?shù)據(jù)傳輸只采用了HTTP協(xié)議,所以有最好的網(wǎng)絡(luò)適應(yīng)性,而且管理更方便。此外使用到的軟件都是開源免費(fèi)的,這也降低了系統(tǒng)部署成本。囿于系統(tǒng)形式的不足,這個系統(tǒng)只支持秒級的隨機(jī)定位,而不支持毫秒等更精細(xì)的定位,但筆者認(rèn)為這在大多數(shù)的點(diǎn)播應(yīng)用中是完全能夠滿足要求的。在這一系統(tǒng)基礎(chǔ)上進(jìn)行擴(kuò)展能夠建立起更廣泛的應(yīng)用,例如現(xiàn)在網(wǎng)絡(luò)教育中常見的教師講授視頻和展示同步顯示的點(diǎn)播應(yīng)用就可以在此基礎(chǔ)上擴(kuò)展實(shí)現(xiàn)。此外這一系統(tǒng)還可以很方便地擴(kuò)展為支持mp4流式格式。

        參考文獻(xiàn)

        [1] W3C .HTTP - Hypertext Transfer Protocol[EB/OL].

        < http://www.w3.org/Protocols.>

        [2] Ing. Fabio Sonnati. Flash Video Technology[M].美國: Progetto Sinergia, 2006 .

        [3] ADOBE. ActionScript 3.0 編程[M].美國:Adobe Systems Incorporated,2008:439-473.

        [4] ADOBE.使用ActionScript3.0組件[M].美國:Adobe Systems Incorporated,2008:117-147.

        [5] Nginx Community. NginxhttpFlvStreamModule[EB/OL].

        国产91网址| 麻豆成人久久精品一区| 亚洲国产av高清一区二区三区| 91九色播放在线观看| 人妻少妇久久中文字幕| 亚洲国产精品特色大片观看完整版 | 日本在线观看不卡| 日韩国产一区二区三区在线观看| 亚洲国产av综合一区| 亚洲一区二区在线观看网址| 中文字幕有码无码人妻av蜜桃 | 国产免费av片无码永久免费| 1769国产精品短视频| 日本高清在线播放一区二区三区| 97女厕偷拍一区二区三区| 亚洲av五月天一区二区| 亚洲国产精华液网站w| 五月婷婷六月激情| 国产精品不卡免费版在线观看| 国产成人久久精品一区二区三区| 99精品国产丝袜在线拍国语| 中文字幕无码日韩专区免费| 国产在线白丝DVD精品| 亚洲国产精品久久九色| 亚洲人成伊人成综合网中文| av免费在线免费观看| 免费无码一区二区三区a片百度| 久久久久久久久888| 精品亚洲一区二区99| 亚洲av日韩av天堂久久不卡| 丰满人妻熟妇乱又仑精品| 国产精品成年片在线观看| √最新版天堂资源在线| 40分钟永久免费又黄又粗| 国产精品国产三级国a| 国产主播一区二区三区蜜桃| 久久综网色亚洲美女亚洲av| 高清偷自拍第1页| 丰满少妇又紧又爽视频| 精品极品一区二区三区| 亚洲精品国偷拍自产在线|