新聞中心

EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于網(wǎng)絡(luò)的多通道超寬視頻系統(tǒng)的研究

基于網(wǎng)絡(luò)的多通道超寬視頻系統(tǒng)的研究

作者: 時間:2007-08-31 來源:網(wǎng)絡(luò) 收藏
引言

  近年來隨著數(shù)字壓縮技術(shù)、計算機及技術(shù)不斷成熟和發(fā)展,人們對視頻和有了更多的需求。現(xiàn)在的數(shù)字視頻顯示畫面一般太小,無法適合眾多觀眾的觀看,而多就是一種從實時切割輸出、同步播放顯示的網(wǎng)絡(luò)的不同PC間同步播放多媒體文件的技術(shù)體系,是使用一組單的顯示系統(tǒng)橫向拼接起來的多比例的特殊顯示系統(tǒng)。它的拼接數(shù)目可以自由選擇。本系統(tǒng)的多通道播放控制軟件平臺是在XP操作系統(tǒng)下VC++.net的編譯環(huán)境中調(diào)試通過的。下面闡述其實現(xiàn)過程和方法。

系統(tǒng)方案

  本系統(tǒng)的控制方式采用了如圖1所示的星型總線拓撲結(jié)構(gòu),它不僅可以方便地進行多臺PC的集中控制,而且還可方便地進行數(shù)據(jù)的傳輸及通過局域網(wǎng)連接進行控制,更好地實現(xiàn)了用戶的一些特殊要求,例如結(jié)合Windows的其他軟件實現(xiàn)對多臺客戶計算機的遠程控制。

網(wǎng)絡(luò)集成管理方案示意圖
圖1 網(wǎng)絡(luò)集成管理方案示意圖

多媒體系統(tǒng)中的同步

  多媒體系統(tǒng)的同步是指兩個或多個多媒體事件按一定的時間順序關(guān)系播放,同時也是一種用于協(xié)調(diào)多個媒體事件在時間域中播放的機制或過程。同步操作可以協(xié)調(diào)和控制兩個或多個媒體事件在并行播放過程中由用戶指定的或由其內(nèi)在本質(zhì)所決定的進展和聯(lián)系。按時間關(guān)系,同步可分為3類:媒體對象之間的同步,媒體流之間的同步,媒體流內(nèi)的同步。這3類同步構(gòu)成多媒體同步的3個層次,最高層是多媒體對象之間同步,最低層是媒體流內(nèi)的同步。其中媒體流內(nèi)的同步在一個時間相關(guān)媒體流內(nèi)(主要是等時媒體流內(nèi))進行,因此,與時間無關(guān)的媒體,如文字、圖像等不存在這種同步問題。媒體對象之間同步要解決的是多媒體合成時的高層同步問題。圖2給出了一個多媒體系統(tǒng)中各個媒體對象之間的時序關(guān)系。

媒體對象之間的時序關(guān)系

圖2 媒體對象之間的時序關(guān)系

  媒體流之間同步的主要任務(wù)是保證不同媒體流之間的時間關(guān)系,例如視頻和音頻之間的時態(tài)關(guān)系、音頻和文本之間的時態(tài)關(guān)系等。流間同步的復(fù)雜性與需要同步的媒體數(shù)目有關(guān)。媒體流內(nèi)同步主要針對等時媒體(音頻和視頻)而言。本系統(tǒng)中的同步最重要的是對象間同步。

  因為多媒體系統(tǒng)引入了許多時間相關(guān)性數(shù)據(jù)類型,而這些多媒體數(shù)據(jù)的時間相關(guān)性可能隱含在建立過程中(如活動視頻圖像序列),也可能是由用戶定義的。時間相關(guān)性必須體現(xiàn)在多媒體系統(tǒng)中。另外在數(shù)據(jù)演示過程中。由于存儲、通信和計

算會導(dǎo)致系統(tǒng)延遲,所有這些特定要求,都需要引進同步技術(shù)才能加以解決。傳統(tǒng)的幾種同步方法或模型有分層同步法、時間軸同步法和參考點同步法。本系統(tǒng)采用的是全局時間軸的同步方法。

  全局時間軸的同步是通過把相互獨立的對象依附到一個時間軸上來描述,丟掉或更改一個對象不影響其他對象的同步。這種描述要維持一個全局時間 (world time)軸。每個對象可將此全局時間映射到局部時間,并沿此局部時間前進。當(dāng)全局時間和局部時間誤差超出一個給定范圍時,則要求與全局時間重新進行同步。時間軸同步能較好地表達源于媒體對象內(nèi)部結(jié)構(gòu)的抽象定義。在這方面,它優(yōu)于分層同步法,它定義了一個與視頻流中某圖像相關(guān)的說明文字的演示的起始位置,而不再要求有相關(guān)視頻幀的知識。由于同步僅能基于固定的時間點定義,若媒體對象無確定的演示時間,這種方法就能力有限了。

  在本系統(tǒng)中,由于我們采用時間軸同步法,所以需要在不同PC間通過網(wǎng)絡(luò)傳送播放時間的數(shù)據(jù)。我們采用了基于C/S(客戶機/服務(wù)器)模式,其功能模塊圖如圖3所示。

系統(tǒng)功能模塊框圖

圖3 系統(tǒng)功能模塊框圖

  服務(wù)端功能模塊主要有視頻處理模塊、服務(wù)器網(wǎng)絡(luò)功能模塊、用戶管理模塊等控制模塊,它們都通過服務(wù)器應(yīng)用程序被統(tǒng)一管理調(diào)用。客戶端功能模塊主要有客戶機網(wǎng)絡(luò)功能模塊、視頻處理顯示模塊、用戶管理模塊等,它們都通過客戶機應(yīng)用程序被統(tǒng)一管理調(diào)用。服務(wù)器和客戶機之間通過網(wǎng)絡(luò)進行相互通信控制和數(shù)據(jù)傳輸。

  網(wǎng)絡(luò)功能模塊分為服務(wù)器網(wǎng)絡(luò)功能模塊和客戶機網(wǎng)絡(luò)功能模塊。服務(wù)器網(wǎng)絡(luò)功能模塊主要負責(zé)監(jiān)控前端視頻播放時間數(shù)據(jù)的網(wǎng)上發(fā)送、對客戶機請求的偵聽及響應(yīng)和對客戶機控制信息的接收及處理等;客戶機網(wǎng)絡(luò)功能模塊主要負責(zé)對服務(wù)器傳來的視頻播放時間數(shù)據(jù)的接收、對服務(wù)器請求連接和控制信息的發(fā)送等。這些都由軟件實現(xiàn),本軟件使用VC++.Net,采用Windows套節(jié)字(WinSock),利用TCP/IP協(xié)議實現(xiàn)網(wǎng)絡(luò)編程。在編程中,還利用了套節(jié)字的異步I/O模型及Windows多線程機制進行循環(huán)內(nèi)存隊列管理等方法。通過這些手段,較好地解決了實時視頻播放時間數(shù)據(jù)傳輸中的各種問題。

實時視頻處理

  無論在服務(wù)器還是客戶機應(yīng)用程序中都有視頻處理模塊,其主要的功能是使多媒體系統(tǒng)能實時進行視頻圖像切割并顯示出來。其實現(xiàn)方法如下:

  在Windows系統(tǒng)中我們將使用微軟提供的一些方法和類來實現(xiàn)實時視頻圖像切割播放的算法。首先將使用設(shè)備環(huán)境作為幀讀取的緩沖區(qū)。設(shè)備環(huán)境是一個由圖形設(shè)備接口管理的包含有設(shè)備信息的數(shù)據(jù)結(jié)構(gòu),所有對繪圖函數(shù)的調(diào)用都要通過使用設(shè)備環(huán)境對象來完成。它封裝了Windows的繪畫函數(shù),并允許在視窗中以設(shè)備的獨立性來繪制圖形。支持設(shè)備獨立性的軟件包括兩個動態(tài)鏈接庫:圖形設(shè)備接口Gdi.dll和設(shè)備驅(qū)動程序。系統(tǒng)要將圖像輸出到對話框,就要得到對話框的設(shè)備環(huán)境,方法大體有兩種:①在對話框類的函數(shù)中,用函數(shù)GetDC()得到一個對話框設(shè)備的指針;②以對話框的指針為參數(shù)生成一個設(shè)備環(huán)境對象,如CDChdc(this)。微軟還提供了一些播放視頻的函數(shù)(如DrawDibDraw函數(shù)),實現(xiàn)了將文件中讀出的視頻圖像數(shù)據(jù)輸出到顯示緩沖區(qū)的某個區(qū)域,利用此函數(shù)可以將每幀圖像切割,顯示我們所要顯示的畫面(原來視頻畫面的一部分);而顯示的圖像數(shù)據(jù)可以以CBitmap的形式從顯示器的設(shè)備環(huán)境中獲得,其中CBitmap是微軟提供的一個位圖類,它封裝了視窗的圖形設(shè)備接口,并且提供了操縱位圖的成員函數(shù)。

  系統(tǒng)是在CPU為P4117GHz、VideoCard為NVIDIAQua

dro2MXR/EX的情況下,在Windows系統(tǒng)中用VC++.net實現(xiàn)了AVI視頻無停頓實時切割播放。

  其具體程序如下:

CDC hdc;
LONG 1 Frame;
BYTE abFormat[1024];
LPBITMAPINFOHEADER 1pbi;
1pbi=(LPBITMAPINFOHEADER)abFormat;
1Frame=AVIStream Time To Sample(m_Pstream,1Time);
//從當(dāng)前媒體流中得到當(dāng)前時間為1Time的樣本
1pbi=(LPBITMAPINFOHEADER)AVIStreamGetFrame
(m_PAviStream,1Frame);
//得到當(dāng)前幀的地址
If (1pbi)
{
xwidth=lpbi->biWidth/total;
//得到客戶機上顯示的視頻畫面的寬度
ywidth=1pbi->biHeight;
xSrc=x_n*xwidth;
//得到源顯示畫面開始顯示點的x坐標
//利用DrawDibDraw函數(shù)將視頻切割顯示
DrawDibDraw(m_hDrawDib,hdc,
rcFrame left,rcFrame.top,
rcFrame right-rcFrame.left,
rcFrame bottom-rcFrame.top,
1pbi,NULL,xSrc,0,xwidth,ywidth,
DDF_SAME_DRAW);

結(jié)束語

  本系統(tǒng)采用多媒體同步技術(shù),實現(xiàn)了基于網(wǎng)絡(luò)通信的不同PC間進行同步通信播放影像文件和實時視頻圖像切割處理的功能,是一種性價比較高的解決方案。該系統(tǒng)對于網(wǎng)絡(luò)視頻、視頻切割的提供了有意義的經(jīng)驗和借鑒。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉