<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 數字電視視頻服務(wù)器的設計與實(shí)現

數字電視視頻服務(wù)器的設計與實(shí)現

——
作者:袁玉良,劉玉貴 時(shí)間:2007-02-06 來(lái)源:電子技術(shù)應用 收藏

摘 要:討論了一種分布式的設計與實(shí)現。重點(diǎn)從磁盤(pán)和文件調度與節目流調度策略?xún)蓚€(gè)方面討論提高整體性能的技術(shù)。
 
關(guān)鍵詞

是從電視節目錄制、播出到發(fā)射、接收全部采用數字編碼與數字傳輸技術(shù)的新一代電視。它具有可實(shí)現雙向交互業(yè)務(wù)、抗干擾能力強、頻率資源利用率高等優(yōu)點(diǎn)。

視頻服務(wù)器是數字電視的關(guān)鍵技術(shù)之一。視頻服務(wù)器類(lèi)型可分為基于通用計算機的服務(wù)器、基于高級工作站的服務(wù)器、基于專(zhuān)用硬件平臺的服務(wù)器、分布式層次結構服務(wù)器等 幾類(lèi)。分布式視頻服務(wù)器結構對每個(gè)播出服務(wù)器的性能要求不是很高,因此,可以將大量廉價(jià)的服務(wù)器結合起來(lái),通過(guò)合理的控制和調度達到一個(gè)高性能服務(wù)器的功能。本文討論了一種分布式視頻服務(wù)器的設計與實(shí)現。

1 分布式視頻服務(wù)器的設計

1.1 數字電視視頻服務(wù)器網(wǎng)絡(luò )結構

本文設計的分布式視頻服務(wù)器網(wǎng)絡(luò )結構如圖1所示。它可以完成從播出計劃、節目存儲、播出管理、碼流復接等一系列工作。

 

圖1 數字電視視頻服務(wù)器網(wǎng)絡(luò )結構圖

1.2 分布式視頻服務(wù)器的功能構成

節目單服務(wù)器的功能是生成電子節目單。它提供人機交互功能,可以根據播出計劃生成電子節目單,并可對已有的電子節目單進(jìn)行編輯、查詢(xún)等操作。此外它還可以對每一個(gè)節目提供附加信息,如節目簡(jiǎn)介等。當電子節目單發(fā)生變化時(shí)通知節目單代理服務(wù)器。

鏈表,例如根據節目是否重播,是否在多個(gè)視頻服務(wù)器上播放相同的節目等。節目單代理服務(wù)器根據更新的節目單生成相應的PSI/SI各種表復接到TS流中播發(fā)出去。由節目單數據庫形成播出系統的基本指令是數字電視特有的系統流程,是網(wǎng)絡(luò )化播出的基礎,它使流媒體高效連續的自動(dòng)化播出得以實(shí)現。

播出服務(wù)器根據節目單代理服務(wù)器提供的播放列表維護節目的播放狀態(tài),實(shí)現自動(dòng)播出。播出服務(wù)器一般由多個(gè)服務(wù)器組成,由節目單代理服務(wù)器調度。節目單代理服務(wù)器和播出服務(wù)器通過(guò)底層套接字通信。節目單代理服務(wù)器向播出服務(wù)器發(fā)送消息,然后播出服務(wù)器解釋該消息以便決定要執行什么操作,如在特定的時(shí)間播出特定的節目。節目播控是數字電視節目平臺播控系統中重要的組成部分,它的正確、穩定、高效運行是節目播出,安全、優(yōu)質(zhì)的保證。整個(gè)節目播出過(guò)程為自動(dòng)播出無(wú)須人工干預,但可以通過(guò)客戶(hù)端對播出過(guò)程進(jìn)行調整。

2 視頻服務(wù)器實(shí)現的關(guān)鍵問(wèn)題

視頻服務(wù)器涉及的技術(shù)很多,如流調度、磁盤(pán)I/O、磁盤(pán)存儲、VCR功能實(shí)現等。本文重點(diǎn)從磁盤(pán)和文件調度與節目流調度策略?xún)蓚€(gè)方面討論提高數字電視視頻服務(wù)器的整體性能的技術(shù)。

2.1視頻服務(wù)器的磁盤(pán)和文件調度

數字電視視頻服務(wù)器與普通操作系統的磁盤(pán)調度不同,需采用帶有在規定時(shí)間限制內完成的實(shí)時(shí)調度算法。適合流媒體的調度算法有EDF、RM、DSr等。LMD(Least Missed Deadline)算法是對服務(wù)超時(shí)限數作為優(yōu)化對象的實(shí)時(shí)調度算法。本文采用一種稱(chēng)為貪婪LMD的調度算法GLMD。GLMD算法的核心為:(1)精確地計算服務(wù)每一個(gè)請求的時(shí)間,提高優(yōu)化結果的可信度;(2)尋找服務(wù)超時(shí)限數最小的服務(wù)隊列為最佳隊列;(3)在滿(mǎn)足服務(wù)時(shí)限的請求時(shí),利用SCAN算法服務(wù)處在其移動(dòng)路線(xiàn)上的請求。
 
設原服務(wù)隊列為?鄢q,新加入的服務(wù)請求為?鄢r,best_Deadline為原最佳服務(wù)隊列超時(shí)限數,new_Deadline為插入新請求后服務(wù)隊列超時(shí)限數,best_time為原最佳服務(wù)隊列總服務(wù)時(shí)間,new_time為插入新請求后服務(wù)隊列總服務(wù)時(shí)間,具體的GLMD算法如下所示:

void sbull_request(request_queue * q,request * r)
{
best_Deadline=+∞;
new_time=+∞;
while(1)
 {for(i=0;i add_queue( * r,i);/ * 把請求插入隊列i的位置 * /
 int new_Deadline=compute_Deadline( * q);/ * 計算當前
 / * 超限數Deadline * /
 if(new_Deadline {best_queue= * q;/ * 當小于原服務(wù)超時(shí)限數,該服務(wù) * /
 best_Deadline=new_Deadline;}/ * 隊列為最佳服務(wù)隊列 * /
 if(new_Deadline==best_Deadline)
 {new_time=compute_time( * q);/ * 計算當前總服務(wù)時(shí)間 * /
 if(new_ time {best_queue= * q;/ * 當小于原服務(wù)時(shí)間,該服務(wù)隊列 * /
 best_Deadline=new_Deadline;}/ * 為最佳服務(wù)隊列 * /
} } } }

函數compute_Deadline( * q)主要計算當前隊列是否有請求超時(shí)限以及有多少個(gè)請求超時(shí)限。函數 compute_time( * q)主要計算磁頭尋道延時(shí)、磁盤(pán)旋轉延時(shí)、數據傳輸延時(shí)、總線(xiàn)傳輸延時(shí)和命令處理延時(shí)五部分??偩€(xiàn)傳輸延時(shí)和命令處理延時(shí)大小相對穩定;數據傳輸延時(shí)由磁盤(pán)讀取帶寬和數據大小決定;磁頭尋道模型有加速、勻速、減速和定位四個(gè)階段,其中加速和減速的加速度恒定。當磁頭尋道的距離d為1~4個(gè)磁道時(shí),僅有定位階段;當磁頭尋道的距離d(磁道數)為4400時(shí),磁頭尋道有加速、勻速、減速和定位四個(gè)階段。磁頭尋道延時(shí)計算公式如下:
  
磁盤(pán)旋轉延時(shí)為旋轉等待時(shí)間,可取其數據期望值,即磁盤(pán)旋轉一周所需時(shí)間的一半。
 
在Windows平臺實(shí)現時(shí),有二種途徑:(1)寫(xiě)一個(gè)lower filter掛在disk.sys下,GLMD算法在lower filter中實(shí)現。(2)直接改寫(xiě)DISK.SYS,其中DISK.SYS的源代碼可以由Microsoft的DDK(Windows Driver Development Kit)得到。在Unix平臺實(shí)現時(shí),磁盤(pán)設備屬于區塊設備, GLMD算法主要改寫(xiě)區塊設備request等相關(guān)函數,磁盤(pán)設備的驅動(dòng)程序在drivers/ide/下,區塊設備的驅動(dòng)程序的request方法定義在linux/blkdev.h中。

為了檢驗GLMD算法的效果,找到單個(gè)服務(wù)器吞吐量上限(調度條件),本文做了大量實(shí)驗,實(shí)驗數據如表1所示。

表1 GLMD算法實(shí)驗數據

Windows2000 UNIX UNIX +EDF UNIX +GLMD

12h 24h 12h 24h 12h 24h 12h 24h

<=4路節目
0 0 0 0 0 0 0 0
5路節目 0 0 0 1 0 0 0 0
6路節目 1 2 1 2 0 0 0 0
7路節目 2 3 2 2 0 0 0 0
8路節目 12 22 15 29 1 2 0 0
9路節目 50 104 34 62 5 11 0 0
10路節目 63 128 39 87 13 26 2 5

播出節目為同一個(gè)節目,平均帶寬為4.2MB,每一路節目為該節目的一個(gè)備份,所得結果為12h和24h檢測到的超時(shí)限次數。服務(wù)器硬件配置為:PⅢ Xeon 800/512MB內存/SCSI硬盤(pán)/100MB自適應網(wǎng)卡。 

2.2 節目流調度策略 

MPEG碼流不是碼率恒定的。本文實(shí)現的視頻服務(wù)器采用內存緩沖平滑策略:每次磁盤(pán)訪(fǎng)問(wèn)連續讀取相對大數據量的數據,數據首先緩存于內存中,平滑MPEG碼流的突發(fā)碼流,并減少磁盤(pán)訪(fǎng)問(wèn)次數。在實(shí)際處理時(shí),針對不同的視頻流碼率和當前總輸出緩沖區的情況,對每一個(gè)視頻流確定一個(gè)讀取文件的輸入緩沖區??傒敵龃a率與所有數據文件的總碼率有關(guān)。
 
2.2.1 視頻流文件讀取 

實(shí)驗表明,通過(guò)讀取大的請求(64KB),一次讀取磁盤(pán)上的若干數據塊,繞過(guò)文件系統作緩存可以使處理器開(kāi)銷(xiāo)減小一個(gè)數量級,從以前的每字節兩個(gè)機器指令減少到每字節0.2個(gè)機器指令。對于所有大于8KB的請求,無(wú)緩沖的順序讀取達到了磁盤(pán)傳輸率的極限,并且磁盤(pán)控制器的預取機制起到了流水線(xiàn)的并行作用,使驅動(dòng)器讀操作可以達到內部傳輸率的極限。經(jīng)過(guò)實(shí)驗,本文選擇了每隔0.3s進(jìn)行連續文件訪(fǎng)問(wèn),每次I/O操作讀取數據為64KB的讀取方式。 

2.2.2 輸入緩沖區 

輸入緩沖區操作根據2個(gè)閾值進(jìn)行,即大于A(yíng)%為滿(mǎn),小于B%為空。A、B這兩個(gè)閾值的選擇很重要。每次進(jìn)行輸入緩沖區操作前,檢測輸入緩沖區的狀態(tài)。當緩沖區快滿(mǎn)時(shí),暫停并等待下一次進(jìn)行輸入緩沖區操作;同樣,每次完成輸入緩沖區操作后,檢測輸入緩沖區的狀態(tài)。當緩沖區快空時(shí),重復輸入緩沖區操作,防止緩沖區出現下溢,處理更多的傳輸流分組。具體操作如下。 

(1)輸入緩沖區操作 
  while(!EndOfFile){ 
   每隔0.3s處理如下操作 
  if(緩沖區的狀態(tài)< A %){ 
  do{進(jìn)行緩沖區操作} until (緩沖區的狀態(tài)>B%) 
   } 
  } 
(2)參數選擇 
輸入緩沖區參數選擇:A=65,B=35,主要依賴(lài)于表2實(shí)驗數據。
 
表2 輸入緩沖區參數實(shí)驗數據

緩沖區占用情況劃分
(12小時(shí)檢測結果)
大于X%為滿(mǎn),
小于35%為空

大于65%為滿(mǎn),
小于Y%為空
70 65 60 40 35 30
緩沖區上溢次數 2 0 0 0 0 0
緩沖區下溢次數 0 0 0 0 0 2
緩沖區暫停操作次數 5 5 6 6 5 5

緩沖區重復操作次數
1 1 3 2 1 1

(3)輸入緩沖區操作舉例
 
當三個(gè)輸入流的緩沖區占用情況分別為圖2所示的50%、71%、32%時(shí),若此時(shí)正處于0.3s輸入緩沖區操作周期,對于流A和C進(jìn)行輸入緩沖區操作,對于流B暫停并等待下一次進(jìn)行輸入緩沖區操作;若此時(shí)剛完成輸入緩沖區操作,則對于流A和B暫停并等待下一次輸入緩沖區操作,對于流C重復輸入緩沖區操作,如圖2所示。

 

圖2 輸入緩沖區操作舉例

2.2.3 輸出緩沖區 

MPEG傳輸流的時(shí)間信息保存在PCR中,MPEG節目流音視頻的時(shí)間信息保存在視頻、音頻流中攜帶的PTS、DTS中。所以視頻服務(wù)器需要進(jìn)行計算得到輸出碼流中每一路節目的分碼率,并根據每一路節目的分碼率進(jìn)行輸出緩沖區操作,把每一路節目的輸入緩沖區的數據加上時(shí)間信息(PCR)發(fā)送到輸出緩沖區。

 
   
由于視頻服務(wù)器的輸出速率基本恒定,所以視頻服務(wù)器還需要根據傳輸速率與每一路節目的分碼率總和的差向輸出緩沖區加入空的數據包。這樣輸出緩沖區就可以按照恒定的傳輸速率發(fā)送數據。
 
本文提出的數字電視視頻服務(wù)器設計方案已成功應用于遼寧鞍山數字電視系統中,收到了良好的經(jīng)濟和社會(huì )效益。該設計也可以推廣應用到分布式視頻服務(wù)器、視頻點(diǎn)播服務(wù)器(VOD)、準視頻點(diǎn)播服務(wù)器(NVOD)中。這樣對每個(gè)視頻服務(wù)器的性能要求不是很高,可以將大量廉價(jià)的服務(wù)器結合起來(lái),通過(guò)合理的控制和調度,完成一個(gè)高性能數字電視視頻服務(wù)器集群的功能。 

參考文獻 
1 彭廣習,余勝生,周敬利.基于磁盤(pán)性能模型的優(yōu)化調度算法.計算機工程,2002;28(5) 
2 Edward C,Molina H G.Effective memory use in a media server.
  In:Proceeding of the 23rd VLDB Conference,Athens,1997 
3 鐘玉琢.流媒體和視頻服務(wù)器.北京:清華大學(xué)出版社,2003 
4 楊學(xué)良,張占軍.分布式多媒體計算機系統教程.北京:電子工業(yè)出版社,2002



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>