《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > 數(shù)字電視視頻服務(wù)器的設(shè)計與實現(xiàn)

數(shù)字電視視頻服務(wù)器的設(shè)計與實現(xiàn)

2007-08-20
作者:袁玉良,劉玉貴

摘 要:討論了一種分布式視頻服務(wù)器的設(shè)計與實現(xiàn)" title="設(shè)計與實現(xiàn)">設(shè)計與實現(xiàn)。重點從磁盤和文件調(diào)度與節(jié)目流調(diào)度策略兩個方面討論提高數(shù)字電視視頻服務(wù)器" title="數(shù)字電視視頻服務(wù)器">數(shù)字電視視頻服務(wù)器整體性能的技術(shù)。?

關(guān)鍵詞:數(shù)字電視 視頻服務(wù)器 節(jié)目調(diào)度

????

????數(shù)字電視是從電視節(jié)目錄制、播出到發(fā)射、接收全部采用數(shù)字編碼與數(shù)字傳輸技術(shù)的新一代電視。它具有可實現(xiàn)雙向交互業(yè)務(wù)、抗干擾能力強、頻率資源利用率高等優(yōu)點。
  視頻服務(wù)器是數(shù)字電視的關(guān)鍵技術(shù)之一。視頻服務(wù)器類型可分為基于通用計算機的服務(wù)器、基于高級工作站的服務(wù)器、基于專用硬件平臺的服務(wù)器、分布式層次結(jié)構(gòu)服務(wù)器等幾類。分布式視頻服務(wù)器結(jié)構(gòu)對每個播出服務(wù)器的性能要求不是很高,因此,可以將大量廉價的服務(wù)器結(jié)合起來,通過合理的控制和調(diào)度達到一個高性能服務(wù)器的功能。本文討論了一種分布式視頻服務(wù)器的設(shè)計與實現(xiàn)。
1 分布式視頻服務(wù)器的設(shè)計
1.1 數(shù)字電視視頻服務(wù)器網(wǎng)絡(luò)結(jié)構(gòu)
  本文設(shè)計的分布式視頻服務(wù)器網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。它可以完成從播出計劃、節(jié)目存儲、播出管理、碼流復(fù)接等一系列工作。 ?


圖1 數(shù)字電視視頻服務(wù)器網(wǎng)絡(luò)結(jié)構(gòu)圖?


1.2 分布式視頻服務(wù)器的功能構(gòu)成
  節(jié)目單服務(wù)器的功能是生成電子節(jié)目單。它提供人機交互功能,可以根據(jù)播出計劃生成電子節(jié)目單,并可對已有的電子節(jié)目單進行編輯、查詢等操作。此外它還可以對每一個節(jié)目提供附加信息,如節(jié)目簡介等。當電子節(jié)目單發(fā)生變化時通知節(jié)目單代理服務(wù)器。
  鏈表,例如根據(jù)節(jié)目是否重播,是否在多個視頻服務(wù)器上播放相同的節(jié)目等。節(jié)目單代理服務(wù)器根據(jù)更新的節(jié)目單生成相應(yīng)的PSI/SI各種表復(fù)接到TS流中播發(fā)出去。由節(jié)目單數(shù)據(jù)庫形成播出系統(tǒng)的基本指令是數(shù)字電視特有的系統(tǒng)流程,是網(wǎng)絡(luò)化播出的基礎(chǔ),它使流媒體" title="流媒體">流媒體高效連續(xù)的自動化播出得以實現(xiàn)。
  播出服務(wù)器根據(jù)節(jié)目單代理服務(wù)器提供的播放列表維護節(jié)目的播放狀態(tài),實現(xiàn)自動播出。播出服務(wù)器一般由多個服務(wù)器組成,由節(jié)目單代理服務(wù)器調(diào)度。節(jié)目單代理服務(wù)器和播出服務(wù)器通過底層套接字通信。節(jié)目單代理服務(wù)器向播出服務(wù)器發(fā)送消息,然后播出服務(wù)器解釋該消息以便決定要執(zhí)行什么操作,如在特定的時間播出特定的節(jié)目。節(jié)目播控是數(shù)字電視節(jié)目平臺播控系統(tǒng)中重要的組成部分,它的正確、穩(wěn)定、高效運行是節(jié)目播出,安全、優(yōu)質(zhì)的保證。整個節(jié)目播出過程為自動播出無須人工干預(yù),但可以通過客戶端對播出過程進行調(diào)整。
2 視頻服務(wù)器實現(xiàn)的關(guān)鍵問題
  視頻服務(wù)器涉及的技術(shù)很多,如流調(diào)度、磁盤I/O、磁盤存儲、VCR功能實現(xiàn)等。本文重點從磁盤和文件調(diào)度與節(jié)目流調(diào)度策略兩個方面討論提高數(shù)字電視視頻服務(wù)器的整體性能的技術(shù)。
2.1視頻服務(wù)器的磁盤和文件調(diào)度
  數(shù)字電視視頻服務(wù)器與普通操作系統(tǒng)的磁盤調(diào)度不同,需采用帶有在規(guī)定時間限制內(nèi)完成的實時調(diào)度算法。適合流媒體的調(diào)度算法有EDF、RM、DSr等。LMD(Least Missed Deadline)算法是對服務(wù)超時限數(shù)作為優(yōu)化對象的實時調(diào)度算法。本文采用一種稱為貪婪LMD的調(diào)度算法GLMD。GLMD算法的核心為:(1)精確地計算服務(wù)每一個請求的時間,提高優(yōu)化結(jié)果的可信度;(2)尋找服務(wù)超時限數(shù)最小的服務(wù)隊列為最佳隊列;(3)在滿足服務(wù)時限的請求時,利用SCAN算法服務(wù)處在其移動路線上的請求。
  設(shè)原服務(wù)隊列為?鄢q,新加入的服務(wù)請求為?鄢r,best_Deadline為原最佳服務(wù)隊列超時限數(shù),new_Deadline為插入新請求后服務(wù)隊列超時限數(shù),best_time為原最佳服務(wù)隊列總服務(wù)時間,new_time為插入新請求后服務(wù)隊列總服務(wù)時間,具體的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);/ * 計算當前
 / * 超限數(shù)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ù)時間 * /
 if(new_ time
 {best_queue= * q;/ * 當小于原服務(wù)時間,該服務(wù)隊列 * /
 best_Deadline=new_Deadline;}/ * 為最佳服務(wù)隊列 * /
} } } }
  函數(shù)compute_Deadline( * q)主要計算當前隊列是否有請求超時限以及有多少個請求超時限。函數(shù) compute_time( * q)主要計算磁頭尋道延時、磁盤旋轉(zhuǎn)延時、數(shù)據(jù)傳輸延時" title="傳輸延時">傳輸延時、總線傳輸延時和命令處理延時五部分??偩€傳輸延時和命令處理延時大小相對穩(wěn)定;數(shù)據(jù)傳輸延時由磁盤讀取帶寬和數(shù)據(jù)大小決定;磁頭尋道模型有加速、勻速、減速和定位四個階段,其中加速和減速的加速度恒定。當磁頭尋道的距離d為1~4個磁道時,僅有定位階段;當磁頭尋道的距離d(磁道數(shù))為4

?

???
  
  磁盤旋轉(zhuǎn)延時為旋轉(zhuǎn)等待時間,可取其數(shù)據(jù)期望值,即磁盤旋轉(zhuǎn)一周所需時間的一半。
  在Windows平臺實現(xiàn)時,有二種途徑:(1)寫一個lower filter掛在disk.sys下,GLMD算法在lower filter中實現(xiàn)。(2)直接改寫DISK.SYS,其中DISK.SYS的源代碼可以由Microsoft的DDK(Windows Driver Development Kit)得到。在Unix平臺實現(xiàn)時,磁盤設(shè)備屬于區(qū)塊設(shè)備, GLMD算法主要改寫區(qū)塊設(shè)備request等相關(guān)函數(shù),磁盤設(shè)備的驅(qū)動程序在drivers/ide/下,區(qū)塊設(shè)備的驅(qū)動程序的request方法定義在linux/blkdev.h中。
  為了檢驗GLMD算法的效果,找到單個服務(wù)器吞吐量上限(調(diào)度條件),本文做了大量實驗,實驗數(shù)據(jù)如表1所示。 ?

表1 GLMD算法實驗數(shù)據(jù)?

Windows2000?

UNIX?

UNIX +EDF?

UNIX +GLMD?

12h?

24h?

12h?

24h?

12h?

24h?

12h?

24h?


<=4路節(jié)目?

0?

0?

0?

0?

0?

0?

0?

0?

5路節(jié)目?

0?

0?

0?

1?

0?

0?

0?

0?

6路節(jié)目?

1?

2?

1?

2?

0?

0?

0?

0?

7路節(jié)目?

2?

3?

2?

2?

0?

0?

0?

0?

8路節(jié)目?

12?

22?

15?

29?

1?

2?

0?

0?

9路節(jié)目?

50?

104?

34?

62?

5?

11?

0?

0?

10路節(jié)目?

63?

128?

39?

87?

13?

26?

2?

5?




  播出節(jié)目為同一個節(jié)目,平均帶寬為4.2MB,每一路節(jié)目為該節(jié)目的一個備份,所得結(jié)果為12h和24h檢測到的超時限次數(shù)。服務(wù)器硬件配置為:PⅢ Xeon 800/512MB內(nèi)存/SCSI硬盤/100MB自適應(yīng)網(wǎng)卡。
2.2 節(jié)目流調(diào)度策略
  MPEG碼流不是碼率恒定的。本文實現(xiàn)的視頻服務(wù)器采用內(nèi)存緩沖平滑策略:每次磁盤訪問連續(xù)讀取相對大數(shù)據(jù)量的數(shù)據(jù),數(shù)據(jù)首先緩存于內(nèi)存中,平滑MPEG碼流的突發(fā)碼流,并減少磁盤訪問次數(shù)。在實際處理時,針對不同的視頻流" title="視頻流">視頻流碼率和當前總輸出緩沖區(qū)的情況,對每一個視頻流確定一個讀取文件的輸入緩沖區(qū)??傒敵龃a率與所有數(shù)據(jù)文件的總碼率有關(guān)。
2.2.1視頻流文件讀取
  實驗表明,通過讀取大的請求(64KB),一次讀取磁盤上的若干數(shù)據(jù)塊,繞過文件系統(tǒng)作緩存可以使處理器開銷減小一個數(shù)量級,從以前的每字節(jié)兩個機器指令減少到每字節(jié)0.2個機器指令。對于所有大于8KB的請求,無緩沖的順序讀取達到了磁盤傳輸率的極限,并且磁盤控制器的預(yù)取機制起到了流水線的并行作用,使驅(qū)動器讀操作可以達到內(nèi)部傳輸率的極限。經(jīng)過實驗,本文選擇了每隔0.3s進行連續(xù)文件訪問,每次I/O操作讀取數(shù)據(jù)為64KB的讀取方式。
2.2.2 輸入緩沖區(qū)
  輸入緩沖區(qū)操作根據(jù)2個閾值進行,即大于A%為滿,小于B%為空。A、B這兩個閾值的選擇很重要。每次進行輸入緩沖區(qū)操作前,檢測輸入緩沖區(qū)的狀態(tài)。當緩沖區(qū)快滿時,暫停并等待下一次進行輸入緩沖區(qū)操作;同樣,每次完成輸入緩沖區(qū)操作后,檢測輸入緩沖區(qū)的狀態(tài)。當緩沖區(qū)快空時,重復(fù)輸入緩沖區(qū)操作,防止緩沖區(qū)出現(xiàn)下溢,處理更多的傳輸流分組。具體操作如下。
  (1)輸入緩沖區(qū)操作
  while(!EndOfFile){
   每隔0.3s處理如下操作
  if(緩沖區(qū)的狀態(tài)  do{進行緩沖區(qū)操作} until (緩沖區(qū)的狀態(tài)>B%)
   }
  }
  (2)參數(shù)選擇
  輸入緩沖區(qū)參數(shù)選擇:A=65,B=35,主要依賴于表2實驗數(shù)據(jù)。 ?

表2 輸入緩沖區(qū)參數(shù)實驗數(shù)據(jù)?


緩沖區(qū)占用情況劃分
(12小時檢測結(jié)果)?

大于X%為滿,
小于35%為空?


大于65%為滿,
小于Y%為空?

70?

65?

60?

40?

35?

30?

緩沖區(qū)上溢次數(shù)?

2?

0?

0?

0?

0?

0?

緩沖區(qū)下溢次數(shù)?

0?

0?

0?

0?

0?

2?

緩沖區(qū)暫停操作次數(shù)?

5?

5?

6?

6?

5?

5?


緩沖區(qū)重復(fù)操作次數(shù)?

1?

1?

3?

2?

1?

1?


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

?


圖2 輸入緩沖區(qū)操作舉例?


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

?

?????
  
  由于視頻服務(wù)器的輸出速率基本恒定,所以視頻服務(wù)器還需要根據(jù)傳輸速率與每一路節(jié)目的分碼率總和的差向輸出緩沖區(qū)加入空的數(shù)據(jù)包。這樣輸出緩沖區(qū)就可以按照恒定的傳輸速率發(fā)送數(shù)據(jù)。
  本文提出的數(shù)字電視視頻服務(wù)器設(shè)計方案已成功應(yīng)用于遼寧鞍山數(shù)字電視系統(tǒng)中,收到了良好的經(jīng)濟和社會效益。該設(shè)計也可以推廣應(yīng)用到分布式視頻服務(wù)器、視頻點播服務(wù)器(VOD)、準視頻點播服務(wù)器(NVOD)中。這樣對每個視頻服務(wù)器的性能要求不是很高,可以將大量廉價的服務(wù)器結(jié)合起來,通過合理的控制和調(diào)度,完成一個高性能數(shù)字電視視頻服務(wù)器集群的功能。
參考文獻
1 彭廣習(xí),余勝生,周敬利.基于磁盤性能模型的優(yōu)化調(diào)度算法.計算機工程,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é)良,張占軍.分布式多媒體計算機系統(tǒng)教程.北京:電子工業(yè)出版社,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。