媒體同步
出自 MBA智库百科(https://wiki.mbalib.com/)
媒體同步(Media Synchronization)
目錄 |
什麼是媒體同步[1]
媒體同步是指根據媒體的播放過程同步顯示文本、圖形、圖像和執行其他內容,媒體可以是包含聲音或數字化電影等基於時間的數據。
影響媒體同步的因素[2]
在分散式多媒體系統中,由於媒體同步涉及多媒體數據的生成、傳輸和播放等多個方面,因此在這個過程中如果受到一些因素的影響,多媒體數據的同步關係就可能被破壞,從而導致不能正確地播放。下麵將分別敘述影響媒體同步的因素。
- 1.媒體間的時延偏移
由於各個相關媒體流可能來自不同的發送端,每個發送端所處的地理位置可能不同,每個媒體流選擇的通道也不同,因此各個媒體流的網路時延不等,這就是媒體問的時延偏移,這些偏移會使媒體問的時間關係變壞。解決辦法是通過接收端的緩存加以補償,也可使各個媒體流在不同時刻發送,但保證在經歷不同的時延後能夠同時到達接收端。
- 2.時延抖動
信號從發送端傳輸到接收端所經歷的網路時延的變化,稱為時延抖動。對於音頻流和視頻流,在發送端它們各自的LDU之間是等時間間隔的,兩個流的相關LDU之間在時間上也是對應的,然而由於各個LDU經歷的網路時延不同,因此音頻流和視頻流內部LDU的時間關係出現了不連續,兩者之問的對應關係也被破壞。所以時延抖動會破壞媒體內和媒體間的同步。時延抖動通常通過在接收端設置播放緩衝區來補償。
- 3.時鐘漂移
在無全局時鐘的情況下,由於溫度、濕度或其他因素的影響,發送端和接收端的本地系統時鐘頻率可能存在著偏差。多媒體數據的播放是由接收端的本地系統時鐘驅動的,如果忽略時鐘漂移,經過一段時間之後接收端的緩衝區就會發生上溢或下溢,從而影響媒體同步。時鐘漂移的問題可以通過在網路中使用時鐘同步協議,例如網路時間協議(Network Time Protocol,NTP)來解決。
- 4.不同的採集起始時間
在有多個相關媒體流的情況下,發送端可能不是同時開始採集和傳輸信息。例如發送端分別採集圖像信號和相關的伴音信號,若兩者採集的起始時間不同,那麼在接收端同時播放這兩個媒體流時必然會出現唇音同步的問題。
- 5.不同的播放起始時間
在有多個接收端的情況下,各個接收端的播放起始時間應該相同。如果用戶播放的起始時間不同,則獲得信息早的用戶便較早地對該信息作出響應,這對其他用戶就不公平。
- 6.網路條件的變化
網路條件的變化是指網路連接性質的變化,例如網路平均時延的改變、時延抖動的變化和媒體單元丟失率的增大等。因此,在播放起始時已經同步的媒體流,經過一段時間後可能因網路條件的變化而失去媒體同步。
媒體同步控制技術[2]
由於非連續媒體對象自身沒有時域約束關係,且非連續媒體對象和相關連續媒體對象之間的同步要求又較低,兩者間的同步控制比較容易實現,因此在多媒體通信中,非連續媒體對象的傳輸以及非連續媒體對象和相關連續媒體對象間的同步控制並不是需要解決的主要問題。本節主要研究單個媒體流的媒體內同步和相關媒體流的媒體問同步。
到目前為止,對於相關媒體流的媒體間同步的控制技術還未形成通用的模式,許多方法都是基於特定的應用環境而提出的。因此本節對單個媒體流的媒體內同步的控制技術進行概述。
單個媒體流的媒體內同步的控制技術根據系統是否使用時間信息,可以分為面向時間的播放控制演算法和麵向緩衝區的播放控制演算法兩種類型。面向時問的播放控制演算法給媒體單元打上時間標簽,並且使用發送端和接收端的本地系統時鐘來獲得網路時延或者時延抖動,一般用於音頻流。面向緩衝區的播放控制演算法通過觀察接收端的播放緩衝區的占用水平來估計當前的時延抖動,一般用於視頻流。
- 一.面向時間的播放控制演算法
面向時間的播放控制演算法根據系統是否採用全局時鐘和如何處理遲到的媒體單元可以分為採用全局時鐘、不需要全局時鐘、具有近似時鐘同步和不維護時延等播放控制演算法。
1.採用全局時鐘的播放控制演算法
使用全局時鐘可以準確測量媒體單元的網路時延。而媒體單元到達接收端後還需經歷緩衝時延再播放,網路時延和緩衝時延一起構成了播放時延。在獲得網路時延後,接收端可以設置播放時延的值為一個常數,或者根據網路時延的變化來設置。
2.不需要全局時鐘的播放控制演算法
由於全局時鐘不易獲得,因此很多播放控制演算法是對時延差異而不是網路時延進行操作的。當考慮時延差異時,發送端和接收端的本地系統時鐘可以有偏移量,但是兩個時鐘的頻率不能存在偏差。在這類演算法中,媒體單元的播放時延不必為常數或被限制在某個絕對數值下,而是可根據網路時延的變化而變化。
3.具有近似時鐘同步的播放控制演算法
具有近似時鐘同步的播放控制演算法通過測量發送端和接收端之間的往返時間RTT來設定播放時延的上限,所有超過該上限的媒體單元都不播放。Roccetti等人提出的方法中利用周期的探測分組和三方握手協議來精確測量RTT,接收端的本地系統時鐘設置為探測分組的時間標簽,用來與發送端的本地系統時鐘保持虛擬同步,因此兩個時鐘偏移量等於探測分組的單向網路時延t,而播放時延取為RTT+t,其中RTT是由最近的探測分組測量得到的。
4.不維護時延的播放控制演算法
處理遲到的媒體單元有兩種方法:一種是維護時延法,就是丟掉遲到的媒體單元以保持媒體流的時延需求;另一種是不維護時延法,即不丟棄一些或者所有遲到的媒體單元,當它們到達接收端時立即播放,以維持媒體流的連續性。一般的演算法都採取維護時延法,在這些播放控制演算法中,為媒體單元的到達時間規定了兩個區域:等待區域和丟棄區域。等待區域中的媒體單元到達接收端後等待播放,直到它的播放時間;而丟棄區域中的媒體單元到達後直接丟棄而不播放。Liu等人在這兩個區域中間引入一個新的區域:不等待區域,落在該區域的媒體單元的到達時間大於播放時間,但還不足以將其丟棄,因此立即播放。該演算法可以維持媒體流的連續性,但增加了播放時延。多媒體通信域,落在該區域的媒體單元的到達時間大於播放時間,但還不足以將其丟棄,因此立即播放。該演算法可以維持媒體流的連續性,但增加了播放時延。
- 二.面向緩衝區的播放控制演算法
該類演算法不要求媒體單元具有時間標簽或者使用時鐘,而是針對同步/時延的權衡進行處理。面向緩衝區的演算法和麵向時間的演算法的類似之處在於,都採用時延差異的方法來調節播放時間,不過面向緩衝區的演算法不是用時間標簽來估計時延抖動,而是通過觀察播放緩衝區的占用水平來估計的。由於缺少時間信息,該類演算法不能保證播放時延的絕對值,而唯一“可見”的時延為媒體單元的緩衝時延,因此可以通過在媒體流連續性和緩衝時延之問進行權衡,以達到優化同步/時延權衡的目的。該類演算法可以分為以下三種方法:沒有初始化緩衝、跳過/暫停發送或者跳過/重覆播放媒體單元、改變媒體流的播放幀率或者發送幀率。
1.沒有初始化緩衝的播放控制演算法
媒體單元到達接收端後不放人緩衝區中,而是立即播放。這種演算法使得初始的播放時延,即第一個媒體單元的網路時延D,很低。但是當網路出現時延抖動時,所經歷的網路時延大於D,的媒體單元都會由於遲到而丟棄,造成媒體流的不連續性。
2.跳過/暫停發送或者跳過/重覆播放媒體單元的播放控制演算法
當接收端的播放緩衝區的占用水平過高時,可以採取在發送端暫停發送媒體單元或者在接收端跳過播放媒體單元的方法;當占用水平過低時,則可以採取在發送端跳過發送媒體單元或者在接收端重覆播放媒體單元的方法。這種方法可以儘可能地避免播放緩衝區的溢出。
3.改變媒體流的播放幀率或者發送幀率的播放控制演算法
由於增加或者減少一個媒體單元的方法會破壞媒體流的連續性,且在低幀率(如15幀/秒)的情況下,這種操作容易被用戶察覺,因此可以採取改變媒體流的播放幀率或者發送幀率的播放控制演算法。改變媒體流的播放幀率或者發送幀率就是改變媒體單元的播放持續時間或者發送間隔。例如對於一個播放幀率和發送幀率為25幀/秒的視頻流,每個視頻幀的播放持續時間和發送間隔都是o.04s,當發生失步時,可以通過改變媒體單元的播放持續時間或者發送間隔來重新同步。改變媒體單元的播放持續時間其實是改變媒體單元離開播放緩衝區的時間,而改變媒體單元的發送問隔其實是通過改變媒體單元在發送端的發送時間來改變媒體單元到達播放緩衝區的時間。通過這種方法可以使播放緩衝區的占用水平保持在一個正常的範圍內。
媒體同步的參考模型[3]
為了理解媒體同步的各種要求,確定支持同步的實時機制的結構以及實時機制介面間的關係,需要一個媒體同步的參考模型。本節從概念上討論同步機制。
媒體同步需要系統的許多部分支持解決,包括操作系統、通信系統、資料庫以及應用程式等。因此,一個多媒體系統的同步要從幾個層次上加以考慮。為了更好地理解媒體同步的要求,描述並建立支持同步的機制,Blakowski等人將同步層分為四個子層,提出了一個四層的同步參考模型,如圖1所示。每層有自己的接VI,介面定義一些服務,也就是為用戶提供一種說明用戶要求的方法。介面提供實現同步的機制,每層的介面都可以直接被一個應用程式使用,或者被它的高層利用來實現其介面。四層參考模型的意義在於它規定了同步機制所應有的層次以及各層所應完成的主要任務。
- 圖1 同步參考模型
1.媒體層
媒體層提供一個獨立於設備的介面,它的操作針對單個的媒體流的LDU。媒體層對LDU的處理通常是有時間限制的,因而需要底層服務系統(如操作系統、通信系統等)提供必要的資源預留及相應的管理措施(如服務質量保障等)。在媒體層介面,該層負責向上提供與設備無關的操作,如read(devicehandle,LDU)和write(devicehandle,LDU)等。其中,以devicehandle標識的設備可以是數據播放器、編/解碼器或文件,也可以是數據傳輸通道。
媒體層主要完成兩個任務:一是申請必要的資源(如CPU時間、通信帶寬、通信緩衝區等)和系統服務(如服務質量保障等),為該層各項功能的實施提供支持;二是訪問各類設備的介面函數,獲取或提交一個完整的LDU。例如,當設備代表一條數據傳輸通道時,發送端的媒體層負責將LDU進一步劃分成若幹適合於網路傳輸的數據包,而接收端的媒體層則需要將相關的數據包組合成一個完整的LDU。實際上,媒體層是同步機制與底層服務系統之間的介面,其內部不包含任何的同步控制操作。
2.流層
流層的處理對象是媒體流以及媒體流所組成的媒體流組,在一個媒體流組中,所有的媒體流採用流間同步機制播放。該層的作用是維持單個媒體流內部各個媒體單元的時間關係及相關媒體流之間的時間關係,也就是說完成流內同步和流間同步。
在介面處,流層向用戶提供諸如start(stream)、stop(stream)、start(group)、stop(group)和create—group(1ist—of—streams)等功能函數。這些函數將媒體流作為一個整體來看待,即對該層用戶來說,流層利用媒體層的介面功能對LDU所作的各種處理是透明的。流層在對媒體流或媒體流組進行處理前,首先決定LDU的大小以及對各LDU的處理方案。此外,流層還向媒體層提交必要的Qos要求。媒體層將依照流層提交的QoS要求,向底層服務系統申請資源以及QoS保障。在執行LDTU處理方案的過程中,流層負責將媒體流的抖動及相關媒體流的偏移保持在許可的範圍內,即實施流內和流間的同步控制。
3.對象層
對象層能夠對各種類型的媒體對象進行統一處理,它隱藏了連續媒體對象和非連續媒體對象的差異。對象層的主要任務是實現非連續媒體對象和相關連續媒體對象之間的同步,並完成對非連續媒體對象的處理。與流層相比,該層同步控制的精度較低。
對象層在處理媒體對象之前先要完成兩項工作:第一,從描述層提供的同步描述數據出發,推導出必要的調度方案(如播放調度方案、通信調度方案等);第二,進行必要的初始化工作。得到調度方案並完成初始化工作以後,對象層開始執行調度方案。通過調用流層的介面函數,對象層執行調度方案中與連續媒體對象相關的部分。流層利用媒體層的介面函數,完成對連續媒體對象的LDU的處理,同時進行流內和流間的同步控制。在調度方案的執行過程中,對象層主要負責完成對非連續媒體對象的處理以及非連續媒體對象和相關連續媒體對象之間的同步控制。
4.描述層
描述層是一個開放的層,不提供明確的介面。該層包含一些應用和工具,利用這些工具,用戶可以生成同步描述數據。這些工具包括同步編輯器、多媒體文獻編輯器及著作系統。描述層還提供轉換工具,可將同步描述數據轉換成對象層的格式。描述層還負責將同步要求提供給對象層介面。同步描述的方法主要有四種:基於間隔的描述、基於時間軸的描述、基於控制流的描述和基於事件的描述,這些都是較為抽象層次上的媒體同步的描述。
媒體同步的設置[4]
Authorware7.0提供了媒體同步技術允許聲音圖標和數字電影圖標激活任意基於媒體播放位置和時間的事件。只要將文本、圖形、圖像的顯示和對其他事件的計時同音頻或視頻信息併列,就能夠輕易地在媒體播放的任意時刻控制各種事件。
若要進行媒體同步,具體的操作步驟如下:
(1)先從圖標選擇板中拖動一個聲音圖標拖放到流程線上。
(2)再將另一個圖標(如顯示圖標)拖放到該聲音圖標的右邊,就會出現一個“媒體同步”分支。在該圖標的上方會出現一個同步標識,其形狀看起來像一個鬧鐘,如圖2所示。
- 圖2 “媒體同步”分支
(3)雙擊“媒體同步”標記,就可以彈出“媒體同步”屬性對話框,如圖3所示。
- 圖3 “媒體同步”屬性對話框
(4)在對話框中可以對媒體同步分支的同步屬性進行設置,以決定“媒體同步”圖標的執行情況。具體的屬性介紹如下。
①“同步於”下拉列表框:用於設置媒體同步圖標的執行時機,提供了兩個選項。
(a)“位置”:選擇此選項可以根據聲音或影像的位置來進行同步操作,在下麵的文本框中就可以輸入位置的值。如果是聲音媒體,則位置值指毫秒數;如果是影像媒體,則位置值指幀數。
(b)“秒”:選擇此選項可以根據聲音或影像播放的時問來進行同步操作,在下麵的文本框中就可以輸入播放的時間(以秒為單位1。
②“擦除條件”下拉列表框:用於設置是否擦除“媒體同步”圖標的內容,其提供了4個選項。
(a)“在下一事件後”選項:在程式執行到下一“媒體同步”分支時,擦除當前“媒體同步”分支中的所有內容。在程式執行到下一“媒體同步”分支之前,當前“媒體同步”分支中的所有內容將一直保留在演示視窗中。
(b)“在下一事件前”選項:在程式執行完當前“媒體同步”分支時,立即擦除當前“媒體同步”分支中的所有內容。
(c)“在退出前”選項:在程式執行完所有“媒體同步”分支後,再擦除當前“媒體同步”分支中的所有內容。
(d)“不擦除”選項:保持當前“媒體同步”分支中的所有內容不被擦除。在這種情況下,需要使用擦除圖標來擦除被保留的內容。
③“打開”按鈕:如果單擊“打開”按鈕,則會打開子圖標的演示視窗。