本公開涉及通信,以及更具體地,涉及用于輔助媒體流的同步的方法和系統(tǒng)。
技術(shù)背景
自適性比特率流是用于通過計(jì)算機(jī)網(wǎng)絡(luò)流送多媒體的技術(shù)。它通過采用轉(zhuǎn)碼器或編碼器基于可以被實(shí)時(shí)監(jiān)測的用戶參數(shù)來調(diào)整視頻流的質(zhì)量發(fā)揮作用。此種編碼器或者轉(zhuǎn)碼器可以以多比特率來編碼單一源視頻。在可以包括多個(gè)編碼器或轉(zhuǎn)碼器的結(jié)構(gòu)中,例如用于備份或冗余目的,每個(gè)編碼器或轉(zhuǎn)碼器需要將其視頻和音頻塊的邊界恰當(dāng)?shù)赝?。例如,每個(gè)編碼器可以利用被插入到視頻源中以獨(dú)特地標(biāo)識視頻源的幀的時(shí)序信號(例如諸如線性時(shí)間碼(LTC)或垂直間隔時(shí)間碼(VITC)之類的時(shí)間碼)。然而,在一些情況中時(shí)序信號可能丟失或者需要昂貴的設(shè)備以添加時(shí)序信號。
附圖說明
圖1示出了用以輔助多媒體流的同步的部分媒體傳送系統(tǒng)的示例。
圖2示出了被配置為輔助媒體流的同步的節(jié)點(diǎn)的示例。
圖3示出了對于提供給多個(gè)節(jié)點(diǎn)的數(shù)據(jù)流計(jì)算的標(biāo)識符數(shù)據(jù)的示例。
圖4示出了可以通過節(jié)點(diǎn)交換的標(biāo)識符數(shù)據(jù)的示例。
圖5示出了用于多節(jié)點(diǎn)的被相關(guān)的標(biāo)識符數(shù)據(jù)的示例。
圖6A-圖6H示出了將計(jì)算的標(biāo)識符數(shù)據(jù)進(jìn)行相關(guān)的過程的示例。
圖7示出了用以輔助媒體流同步的方法的示例的流程圖。
具體實(shí)施方式
概述
本公開總體涉及通信,以及更具體地,涉及流數(shù)據(jù)的同步。
作為示例,方法可以包括:在給定節(jié)點(diǎn)處接收來自媒體源的輸入媒體的連續(xù)流。針對在給定節(jié)點(diǎn)處接收的輸入媒體的連續(xù)流中的多個(gè)塊的每個(gè)塊的值可以被計(jì)算。每個(gè)值可以作為連續(xù)流的多個(gè)塊的各自塊的函數(shù)而被計(jì)算。方法還可以包括:在給定節(jié)點(diǎn)處接收針對由其它節(jié)點(diǎn)所接收的連續(xù)流的多個(gè)數(shù)據(jù)塊所計(jì)算出的值。來自其它節(jié)點(diǎn)的接收到的值的集合可以被與計(jì)算出的值的集合進(jìn)行相關(guān),用于給定節(jié)點(diǎn)來確定由給定節(jié)點(diǎn)所接收的輸入媒體的連續(xù)流的塊與由另一節(jié)點(diǎn)所接收的輸入媒體的連續(xù)流的塊之間的補(bǔ)償。
作為另一示例,裝置可以包括:被配置為基于在給定節(jié)點(diǎn)處接收的來自媒體源的輸入媒體流中的輸入媒體內(nèi)容的每個(gè)塊來計(jì)算標(biāo)識符值的標(biāo)識符生成器。關(guān)于輸入媒體內(nèi)容的至少一系列的塊的多個(gè)被計(jì)算出的標(biāo)識符可以被儲(chǔ)存在存儲(chǔ)器中。補(bǔ)償計(jì)算器可以被配置為基于給定節(jié)點(diǎn)的一組的多個(gè)所計(jì)算出的標(biāo)識符相對于至少一個(gè)在其它節(jié)點(diǎn)處所接收到的輸入媒體內(nèi)容的一系列塊所計(jì)算出的另一組標(biāo)識符之間的相關(guān),來確定由給定節(jié)點(diǎn)與至少一個(gè)其它節(jié)點(diǎn)所接收到的輸入媒體流的塊之間的補(bǔ)償。
作為另一示例,系統(tǒng)可以包括被配置為接收來自共同的媒體源的輸入媒體內(nèi)容的連續(xù)流的多個(gè)節(jié)點(diǎn)。多個(gè)節(jié)點(diǎn)中的每個(gè)可以被配置為生成和通過網(wǎng)絡(luò)傳遞合適比特率的媒體內(nèi)容。多個(gè)節(jié)點(diǎn)中的每個(gè)可以被配置為計(jì)算由各自節(jié)點(diǎn)所接收的輸入媒體內(nèi)容的連續(xù)流的一系列塊的每一塊的獨(dú)特的標(biāo)識符值。每個(gè)節(jié)點(diǎn)還可以被配置為在相應(yīng)節(jié)點(diǎn)處接收對于由多個(gè)節(jié)點(diǎn)中的至少一個(gè)其它節(jié)點(diǎn)所接收的連續(xù)流的一系列塊所計(jì)算出的值。每個(gè)節(jié)點(diǎn)可以被配置為將來自另一節(jié)點(diǎn)的一組接收到的值與補(bǔ)償值的范圍中的各自節(jié)點(diǎn)的一組計(jì)算出的值進(jìn)行相關(guān)。每個(gè)節(jié)點(diǎn)還可以被配置為從可以提供同步的補(bǔ)償值的范圍中確定相應(yīng)的補(bǔ)償值,上述同步介于由各自節(jié)點(diǎn)所接收的輸入媒體內(nèi)容的連續(xù)流的塊關(guān)于由多個(gè)節(jié)點(diǎn)中的每一個(gè)其它節(jié)點(diǎn)所接收的輸入媒體內(nèi)容的連續(xù)流的塊之間。
示例性實(shí)施例
圖1示出了媒體傳送系統(tǒng)10的一部分的示例。系統(tǒng)10包括多個(gè)節(jié)點(diǎn)12和14,如節(jié)點(diǎn)1到節(jié)點(diǎn)N所示,其中N是代表節(jié)點(diǎn)數(shù)量的正整數(shù)。各自節(jié)點(diǎn)12和14中的每一個(gè),例如可以被實(shí)現(xiàn)以提取連續(xù)媒體流。作為示例,連續(xù)媒體流可以從媒體源通過數(shù)字視頻接口(諸如電影與電視工程師協(xié)會(huì)(SMPTE)所標(biāo)準(zhǔn)化的串行數(shù)字視頻接口(SDI))而提供。因此,媒體流可以是標(biāo)準(zhǔn)清晰度鏈、高清晰度鏈或任何分辨率鏈的數(shù)字媒體流。輸入媒體流可以是通過相應(yīng)的接口協(xié)議所提供的未被壓縮的媒體流。
輸入媒體流可以是包括一系列的數(shù)字媒體塊的連續(xù)視頻流。輸入媒體流中的每個(gè)媒體塊可以包括代表照片(例如圖片)的數(shù)字?jǐn)?shù)據(jù),以及諸如可以包括音頻數(shù)據(jù)、字幕以及與此塊的照片相關(guān)聯(lián)的相關(guān)元數(shù)據(jù)的附屬數(shù)據(jù)。例如,在輸入媒體流是隔行掃描視頻的情況下,輸入媒體流的塊可以作為相應(yīng)的字段而被實(shí)現(xiàn)。在輸入媒體流是逐行掃描的格式的示例中,輸入媒體流的塊可以被作為幀實(shí)現(xiàn)。一些情況下,諸如LTC或VITC之類的時(shí)序信號或時(shí)間碼可以被插入到輸入媒體流中。然而很多情況下,時(shí)間信號并不出現(xiàn)在輸入媒體流中,或者可能可以在由一個(gè)或多個(gè)節(jié)點(diǎn)12和14所接收的信號中以其它方式出錯(cuò)。相應(yīng)地,如本文所公開的,在不要求時(shí)間碼存在的情況下,節(jié)點(diǎn)12和14中的被配置為基于輸入媒體流的進(jìn)入的塊的內(nèi)容而生成獨(dú)特的標(biāo)識符,以使得對由兩個(gè)或多個(gè)這種節(jié)點(diǎn)所提供的媒體內(nèi)容同步的同步成為可能,而無需這種時(shí)間碼的存在。
節(jié)點(diǎn)12和14可以在系統(tǒng)10中作為冗余架構(gòu)的一部分而被實(shí)現(xiàn),在此冗余結(jié)構(gòu)中每個(gè)相應(yīng)節(jié)點(diǎn)可以作為能提供輸入媒體流的自適性比特率(ABR)轉(zhuǎn)碼或編碼的備份管道而運(yùn)行。為了使系統(tǒng)10中的這種冗余架構(gòu)可以備份,兩個(gè)相應(yīng)節(jié)點(diǎn)都被配置為通過標(biāo)識輸入媒體流中的各塊來實(shí)現(xiàn)輸入媒體流的同步。節(jié)點(diǎn)12和14中的每個(gè)因此可以對應(yīng)于被配置(例如,作為包括轉(zhuǎn)碼器/編碼器以及包裝器的媒體生產(chǎn)管道的一部分)以生成一個(gè)或多個(gè)視頻文件的流內(nèi)容的已對齊的分組塊的ABR轉(zhuǎn)碼或編碼節(jié)點(diǎn)。
本文公開的多個(gè)示例描述了節(jié)點(diǎn)12和14作為ABR轉(zhuǎn)碼或編碼節(jié)點(diǎn)用于在系統(tǒng)10(例如內(nèi)容傳送網(wǎng)絡(luò))的備份結(jié)構(gòu)的情境中生成已對齊的流媒體,節(jié)點(diǎn)可以被實(shí)現(xiàn)以同步和對齊通過其它傳送范例而傳送的其它類型的數(shù)據(jù)。在一些示例中,節(jié)點(diǎn)12和14可以被分開放置在不同的位置,例如節(jié)點(diǎn)12在東海岸的設(shè)備中并且節(jié)點(diǎn)14在西海岸的設(shè)備中。在其它示例中,相應(yīng)的節(jié)點(diǎn)12和14可以處于同一位置,例如線纜供應(yīng)商的數(shù)據(jù)頭端或給定設(shè)備(例如在內(nèi)容分配分離的線路板上,諸如編碼器好轉(zhuǎn)碼器、數(shù)字內(nèi)容管理器、內(nèi)容傳送服務(wù)器等等)中的其它媒體傳送管道的前端。在這兩種示例的任意一個(gè)中,節(jié)點(diǎn)12和14中的每個(gè)可以在大體上比特相同的源輸入上運(yùn)作,相同的比特可能如本文中公開的那樣互相補(bǔ)償,并且在源輸入中缺少適當(dāng)時(shí)間碼(例如VITC或LTC)的情況下使得同步可以實(shí)現(xiàn)。
由一個(gè)或多個(gè)節(jié)點(diǎn)12和14生成的內(nèi)容可以向下游方向提供用于任何數(shù)量的一個(gè)或多個(gè)ABR客戶端消耗。另外地或替代地,由節(jié)點(diǎn)12和14生成的內(nèi)容可以被儲(chǔ)存在一個(gè)或多個(gè)非暫態(tài)存儲(chǔ)介質(zhì)(諸如閃存、硬盤驅(qū)動(dòng)器等等)中,例如源服務(wù)器??梢杂糜谏捎糜诹魉鸵曨l服務(wù)的每個(gè)轉(zhuǎn)換文檔(rendition)的內(nèi)容的ABR流協(xié)議的示例可以包括:HTTP動(dòng)態(tài)流媒體協(xié)議(HLS)、Adobe系統(tǒng)HTTP動(dòng)態(tài)流、Microsoft平滑流媒體、基于HTTP的MPEG動(dòng)態(tài)自適應(yīng)流(DASH)或其它流協(xié)議。
在圖1的示例中,節(jié)點(diǎn)12包括被配置為基于在輸入媒體流中所接收的媒體數(shù)據(jù)的塊中的內(nèi)容來計(jì)算標(biāo)識符(ID)的ID生成器20。ID生成器可以是被配置為計(jì)算ID的硬件和/或軟件,ID是作為基于所提供的媒體數(shù)據(jù)的每個(gè)塊中的內(nèi)容而被計(jì)算出的大體上獨(dú)特的值。如本文所使用的,作為修飾語的術(shù)語“大體上”并不要求每一個(gè)ID是絕對地、全球地獨(dú)特的,但是要求所執(zhí)行的計(jì)算作為內(nèi)容的函數(shù)是可獲得的和確定的。例如,如果作為ID值計(jì)算的基礎(chǔ)的這些不同塊的內(nèi)容對于塊是相同的,則ID生成器20可以為媒體數(shù)據(jù)的不同的塊計(jì)算出相同ID。例如如果ID值僅從靜止圖像的連續(xù)幀的活動(dòng)視頻部分被計(jì)算出,則這種情況可能會(huì)發(fā)生。然而典型地,依據(jù)用作計(jì)算每個(gè)相應(yīng)的ID值的基礎(chǔ)的媒體內(nèi)容,每個(gè)被計(jì)算出的ID可以獨(dú)特地代表在輸入媒體流中的媒體數(shù)據(jù)的每個(gè)塊。如本文所公開的,一旦靜止的圖片轉(zhuǎn)變?yōu)橐苿?dòng)的(例如變化的)圖片,后繼幀所計(jì)算出的ID值將相應(yīng)地變化,從而接收節(jié)點(diǎn)12和14之間的同步將重新開始。
ID生成器20可以通過計(jì)算基于相應(yīng)塊的內(nèi)容的函數(shù)來計(jì)算媒體流中的數(shù)據(jù)的每個(gè)塊的ID。作為示例,ID生成器20可以被配置為將ID值作為包括活動(dòng)的視頻部分和附屬數(shù)據(jù)的數(shù)據(jù)的整個(gè)塊的函數(shù)來計(jì)算。在其它示例中,ID生成器20可以將ID值作為輸入媒體流的塊的選擇部分的函數(shù)的來計(jì)算,例如僅基于活動(dòng)的視頻部分或基于附屬數(shù)據(jù)來計(jì)算。作為示例,ID生成器20可以被配置為計(jì)算可以被儲(chǔ)存在媒體流的每個(gè)相應(yīng)塊的ID值中的循環(huán)冗余碼校驗(yàn)(CRC)值。所計(jì)算的CRC并不像眾所周知的那樣用于幫助保持?jǐn)?shù)據(jù)的完整性,而是替代地被用于輔助不同的節(jié)點(diǎn)12和14相對于彼此的同步。例如,ID生成器20可以作為FPGA(現(xiàn)場可編程門陣列)或被配置為計(jì)算輸入媒體流中的相應(yīng)塊上的CRC其它硬件,而在節(jié)點(diǎn)12中實(shí)現(xiàn)。無論采用什么計(jì)算類型來生成ID,節(jié)點(diǎn)12和14中的每個(gè)可以包括被配置為采用確切地生成在輸入媒體流中所接收的媒體數(shù)據(jù)塊的ID的相同計(jì)算的相應(yīng)ID生成器。
ID生成器20因此可以提供ID數(shù)據(jù)22,ID數(shù)據(jù)22可以包括對于輸入媒體數(shù)據(jù)的多個(gè)有序塊所計(jì)算的ID。例如,ID數(shù)據(jù)可以包括保存由ID生成器計(jì)算出的多個(gè)有序ID的移動(dòng)數(shù)據(jù)窗。每個(gè)ID值可以以編程的方式與特定序列號相關(guān)聯(lián)(例如加標(biāo)簽),例如根據(jù)對于各自輸入媒體流的視頻形式的幀號或字段號。塊序列號可以對于每個(gè)節(jié)點(diǎn)是任意的,并且因此可以對于每個(gè)相應(yīng)節(jié)點(diǎn)是不同的。例如,每個(gè)節(jié)點(diǎn)可以具有不同的起始時(shí)刻,并且順次在不同時(shí)刻開始對塊進(jìn)行計(jì)數(shù)。本文公開的方法因此提供了實(shí)現(xiàn)媒體塊的對齊與同步,而不管與每塊相關(guān)聯(lián)的塊序號不同,也不需要LTC或VITC碼的基于內(nèi)容的機(jī)制。例如,ID數(shù)據(jù)22的窗可以作為固定大小的窗被儲(chǔ)存在存儲(chǔ)器中,固定大小的窗(例如,作為先進(jìn)先出的緩存器實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu))包括輸入流中的媒體數(shù)據(jù)的固定數(shù)量的一系列塊的一組所計(jì)算的ID值。
輸入媒體流還可以被提供到與節(jié)點(diǎn)12相關(guān)聯(lián)的相應(yīng)的內(nèi)容生產(chǎn)管道24。生產(chǎn)管道可以包括被配置為向打包階段28提供ABR內(nèi)容的已轉(zhuǎn)碼或編碼的媒體(例如,一個(gè)或多個(gè)基本流)的轉(zhuǎn)碼器/編碼器26。例如,轉(zhuǎn)碼器/編碼器26可以被配置為將輸入媒體內(nèi)容轉(zhuǎn)碼或編碼為基于視頻服務(wù)的相應(yīng)ABR簡檔的一個(gè)或多個(gè)比特率。例如,給定的服務(wù)可以包括任何數(shù)量的傳輸流,并且每個(gè)傳輸流可以包括相應(yīng)內(nèi)容簡檔(例如,也稱為轉(zhuǎn)換文檔)。每個(gè)內(nèi)容簡檔的參數(shù)可以包括編解碼器、編解碼簡檔、視頻和音頻比特率、寬度和高度、幀速率等等。
例如,轉(zhuǎn)碼器/編碼器26可以包括多個(gè)編碼器,每一個(gè)被配置為通過改變包括媒體分辨率在內(nèi)的編碼參數(shù),將打包的基本流轉(zhuǎn)化為一個(gè)或多個(gè)不同比特率的輸出流。替代地或者另外,轉(zhuǎn)碼器/編碼器26能包括多個(gè)編碼器以將輸入流以期望的編碼方式編碼到被打包的輸出流中。每個(gè)輸出媒體流可以被提供給打包器28。打包器28可以被配置為對由轉(zhuǎn)碼器/編碼器26所提供的每一個(gè)相應(yīng)流生成相應(yīng)的被打包的ABR內(nèi)容數(shù)據(jù)。ABR內(nèi)容數(shù)據(jù)可以包括關(guān)于多個(gè)不同輸出流中的每個(gè)的ABR包。例如,每個(gè)ABR包可以包括依次對應(yīng)對于針對相應(yīng)比特率和分辨率而編碼的已打包的媒體的多個(gè)媒體塊。
管道24可以包括可以被配置為協(xié)調(diào)輸入媒體流中的內(nèi)容同步與一個(gè)或多個(gè)其它節(jié)點(diǎn)14的同步的同步控制器30。同步可以包括將由打包器28所提供的每個(gè)輸出流中的塊邊界與節(jié)點(diǎn)14中的塊邊界相同步。例如,同步控制器30可以采用通信接口(未被示出)以協(xié)調(diào)節(jié)點(diǎn)12和每個(gè)節(jié)點(diǎn)14之間對包括ID數(shù)據(jù)22中的至少一部分的信息的交換。例如。節(jié)點(diǎn)12可以提供與儲(chǔ)存在ID數(shù)據(jù)22中的ID值的窗的適當(dāng)子集(例如少于全部的)相對應(yīng)的ID數(shù)據(jù)的有限窗,并且通過通信鏈路向節(jié)點(diǎn)14提供這種ID數(shù)據(jù)的有限窗。相似地,系統(tǒng)10中的每個(gè)其它節(jié)點(diǎn)14都可以提供由節(jié)點(diǎn)14的ID生成器所計(jì)算出的相應(yīng)的ID值的有限窗,并且將這種信息提供給節(jié)點(diǎn)12以供同步控制器30使用。
作為進(jìn)一步的示例,同步控制器可以實(shí)現(xiàn)被配置為計(jì)算下述兩者之間的相似度的ID相關(guān)器32.來自每個(gè)節(jié)點(diǎn)14的信息中所接收的ID值的有限窗、相對于儲(chǔ)存于ID數(shù)據(jù)22中的ID值的窗之間的相似度。在被進(jìn)行比較的所計(jì)算的ID數(shù)據(jù)中的每個(gè)ID值都具有相關(guān)的塊號(例如幀或字段號)。相關(guān)性因此可以在各個(gè)塊號之間的補(bǔ)償值的范圍內(nèi)被實(shí)現(xiàn)。同步控制器的相關(guān)器32可以基于對相關(guān)結(jié)果的分析來將補(bǔ)償值作為被提供用于一組ID值的集合間的匹配的塊號之差進(jìn)行計(jì)算。
同步控制器30因此可以采用補(bǔ)償以使得由相應(yīng)節(jié)點(diǎn)12和14中的每個(gè)所接收的輸入媒體流相對于彼此對齊。例如,可以采用所計(jì)算的補(bǔ)償來對輸出ABR流(其可以由節(jié)點(diǎn)12和14通過網(wǎng)絡(luò)向下游提供用于分發(fā)或存儲(chǔ))中的塊的邊界進(jìn)行同步。在一些示例中,例如如果生產(chǎn)管道24故障并且來自節(jié)點(diǎn)14的輸出流被作為備份輸出而提供,則所計(jì)算的補(bǔ)償可以用于(通過基于補(bǔ)償對齊塊的邊界來)保持輸出流的同步。所計(jì)算的補(bǔ)償因此可以使得節(jié)點(diǎn)12和14中的每個(gè)可以補(bǔ)償和改正輸入媒體流中較小的源延遲,例如到不同地理位置的編碼器的源路由延遲。
盡管在圖1中示出了ID相關(guān)器32作為駐留于轉(zhuǎn)碼器/編碼器26的同步控制器30內(nèi),應(yīng)當(dāng)理解ID相關(guān)器可以與同步控制器分離和/或與轉(zhuǎn)碼器/編碼器分離。在一些示例中,ID生成器20與ID相關(guān)器32可以在節(jié)點(diǎn)12的外部操作以使得同步控制器30可以協(xié)調(diào)輸入媒體流相對于一個(gè)或多個(gè)其它節(jié)點(diǎn)14同步的同步。此外,同步即使在存在靜止幀、黑幀、3∶2下拉或者源輸入流中可以提供給這樣的節(jié)點(diǎn)的其它模式的情況下,本文公開的方案對于實(shí)現(xiàn)節(jié)點(diǎn)12與14之間的同步也是足夠強(qiáng)健的。
圖2為可以被實(shí)現(xiàn)以輔助被提供至兩個(gè)或多個(gè)節(jié)點(diǎn)52和54的輸入媒體流的同步的另一系統(tǒng)50的示例。系統(tǒng)50可以包括被配置為向多個(gè)節(jié)點(diǎn)52和54提供公共媒體流57的媒體源56。如本文所描述的,例如由于潛在的路徑延遲流57可以于不同的時(shí)刻到達(dá)不同的節(jié)點(diǎn)。相應(yīng)地,當(dāng)被接收用于由相應(yīng)節(jié)點(diǎn)處理時(shí),媒體數(shù)據(jù)的塊可能被補(bǔ)償。每個(gè)節(jié)點(diǎn)可以與參考圖1所公開的節(jié)點(diǎn)12相似的方式實(shí)現(xiàn)。例如,節(jié)點(diǎn)52與54可以為ABR媒體遞送系統(tǒng)提供冗余生產(chǎn)管道。
在圖2的示例中,節(jié)點(diǎn)52包括被配置為大體獨(dú)特的標(biāo)識輸入媒體流的每個(gè)塊的ID生成器58。ID生成器58可以包括塊選擇器60,塊選擇器60被配置為對媒體流的塊進(jìn)行取樣用于由ID計(jì)算器62進(jìn)行處理。例如,塊選擇器60可以將來自輸入媒體流的每個(gè)各自塊或其選定塊提供至ID計(jì)算器62。ID計(jì)算器62可以被配置為計(jì)算ID值以大體獨(dú)特地確定媒體流中的每個(gè)塊。被計(jì)算出的ID值可以作為由64處示出的所計(jì)算的ID數(shù)據(jù)而被儲(chǔ)存在存儲(chǔ)器中。
作為進(jìn)一步的示例,ID計(jì)算器62可以被配置為針對數(shù)據(jù)序列中的數(shù)據(jù)的每個(gè)塊計(jì)算CRC值以提供相應(yīng)的所計(jì)算的ID數(shù)據(jù)64。諸如哈希秘鑰之類的其它函數(shù)可以由每個(gè)節(jié)點(diǎn)用于計(jì)算各自塊的ID值。相似的一組被計(jì)算出的ID數(shù)據(jù)可以生成于每個(gè)其它的節(jié)點(diǎn)54上。由于理想情況下,除了可能的延遲之外由每個(gè)節(jié)點(diǎn)接收到的輸入媒體流是相同的,因此給定所計(jì)算的ID值序列對于媒體數(shù)據(jù)的相同塊應(yīng)當(dāng)是相同的。
所計(jì)算的ID數(shù)據(jù)64可以包括每個(gè)所計(jì)算的ID值以及相應(yīng)的塊號的標(biāo)識。即,被計(jì)算出的ID數(shù)據(jù)64可以包括所計(jì)算的ID值與一個(gè)或多個(gè)相應(yīng)塊號碼。例如,塊號可以被提供給每組ID值的序列中的第一塊,其可以被用于確定針對媒體塊序列而計(jì)算出的ID值中的每個(gè)其它塊的塊標(biāo)識符。如本文所公開的,一組ID值可以是針對固定數(shù)量的有序媒體塊計(jì)算的ID值,其隨時(shí)間流逝作為針對相應(yīng)塊計(jì)算的ID值的移動(dòng)窗被存儲(chǔ)在存儲(chǔ)器中移動(dòng)窗。
所計(jì)算的ID值的選定部分與塊序列信息可以通過節(jié)點(diǎn)間通信塊66被提供到其它節(jié)點(diǎn)54。例如,數(shù)據(jù)選擇器68能從ID數(shù)據(jù)64的窗中選擇諸如對應(yīng)ID數(shù)據(jù)的合適子集的有限窗。數(shù)據(jù)選擇器68可以通過節(jié)點(diǎn)間通信組件66將ID數(shù)據(jù)的選定子集(作為有限窗)周期性地發(fā)送到其它節(jié)點(diǎn)。節(jié)點(diǎn)54中的每個(gè)因此可以處理來自節(jié)點(diǎn)52的所接收的計(jì)算出的ID數(shù)據(jù)的有限窗,以查明在由其它節(jié)點(diǎn)54所接收的輸入媒體流相對于由節(jié)點(diǎn)52所接收的媒體流之間的相應(yīng)的補(bǔ)償。如本文所公開的,可以采用補(bǔ)償來使得由節(jié)點(diǎn)52與54的每一個(gè)所接收的相應(yīng)的輸入媒體流的同步成為可能,并且因此使得例如冗余結(jié)構(gòu)內(nèi)容遞送系統(tǒng)(例如,圖1的系統(tǒng)10)中的塊邊界的協(xié)定的對齊成為可能。
節(jié)點(diǎn)52還包括被配置為計(jì)算由節(jié)點(diǎn)52所接收的媒體流的塊相對于由一個(gè)或多個(gè)其它節(jié)點(diǎn)54所接收的媒體流之間的相對補(bǔ)償?shù)难a(bǔ)償計(jì)算器70。例如,節(jié)點(diǎn)52可以儲(chǔ)存來自其節(jié)點(diǎn)54的一組接收到的ID數(shù)據(jù)72,ID數(shù)據(jù)72例如可以通過節(jié)點(diǎn)間通信組件66而在消息中被通信。因此,節(jié)點(diǎn)52和54中的每個(gè)可以交換對于媒體塊的子集所計(jì)算的ID值的有限窗,使得每個(gè)相應(yīng)節(jié)點(diǎn)的補(bǔ)償計(jì)算器70可以計(jì)算相應(yīng)的補(bǔ)償。
補(bǔ)償計(jì)算器70可以包括控制組件74,控制組件74被配置為控制將接收到ID數(shù)據(jù)72相對于所計(jì)算的ID數(shù)據(jù)64進(jìn)行比較的補(bǔ)償計(jì)算過程。如本文所公開的,在所接收到的數(shù)據(jù)72中針對其計(jì)算了ID值的數(shù)據(jù)塊的數(shù)量,通常小于由對于節(jié)點(diǎn)52所計(jì)算的ID數(shù)據(jù)所代表的塊的數(shù)量。因此控制器74可以通過遞增地調(diào)節(jié)來自其它節(jié)點(diǎn)54的所接收到的ID數(shù)據(jù)72的相應(yīng)的有限窗之間的補(bǔ)償使得比較可以實(shí)現(xiàn),并且相對于對節(jié)點(diǎn)52所計(jì)算ID數(shù)據(jù)64中的較大的窗中的一系列ID值有效地移動(dòng)有限窗中的ID值??刂破?4的增量補(bǔ)償值的范圍可以基于相對節(jié)點(diǎn)52的較大窗中的塊號范圍的、來自節(jié)點(diǎn)54的有限窗中的塊號的相對范圍來確定。
補(bǔ)償計(jì)算器70應(yīng)用被配置以計(jì)算所接收到的ID數(shù)據(jù)72的每個(gè)ID值(有限窗)相對于所計(jì)算的ID數(shù)據(jù)64的相應(yīng)的序列之間的相關(guān)的相關(guān)器76。在被進(jìn)行比較的序列中的ID值之間的每個(gè)相關(guān)的結(jié)果可以被相加以提供針對給定補(bǔ)償值的聚合相關(guān),其由控制器74設(shè)置。補(bǔ)償值范圍的聚合相關(guān)可以相對于彼此被評估,以確定由每個(gè)相應(yīng)節(jié)點(diǎn)52與54所接收的輸入媒體流之間的、可以在輸入媒體流之間提供最優(yōu)對齊的相應(yīng)補(bǔ)償。
由于除了臨時(shí)的延遲之外的錯(cuò)誤也可能被引入由節(jié)點(diǎn)52和54所接收輸入媒體的塊中,相關(guān)以及對相關(guān)結(jié)果的評估可以采用允許比理想相關(guān)情況不完美的閾值來指示所比較的ID值的組之間的匹配。閾值可以是固定的或者是可以是可由用戶響應(yīng)于用戶輸入編程的。補(bǔ)償計(jì)算器70確定節(jié)點(diǎn)52和54之間的補(bǔ)償對應(yīng)引起最優(yōu)相關(guān)的補(bǔ)償值,并且如果被應(yīng)用,則提供超過相關(guān)閾值的聚合相關(guān)。
導(dǎo)向相關(guān)的ID值的補(bǔ)償值能夠被儲(chǔ)存在存儲(chǔ)器中以由節(jié)點(diǎn)52用來使得節(jié)點(diǎn)之間的媒體內(nèi)容的同步得以實(shí)現(xiàn)。另外地,節(jié)點(diǎn)52可以發(fā)送導(dǎo)出的補(bǔ)償值到另一節(jié)點(diǎn)54,并且類似的每一個(gè)其它節(jié)點(diǎn)54可以發(fā)送相較節(jié)點(diǎn)52的導(dǎo)出的補(bǔ)償值到節(jié)點(diǎn)52。節(jié)點(diǎn)52可以將從另一節(jié)點(diǎn)54接收的補(bǔ)償與由節(jié)點(diǎn)52所計(jì)算的補(bǔ)償進(jìn)行比較,作為確保補(bǔ)償值的精確的進(jìn)一步的檢查。例如,如果每個(gè)補(bǔ)償值之間的差的絕對值為0,則可以確定補(bǔ)償是精確的。然而,如果節(jié)點(diǎn)52確定每個(gè)補(bǔ)償?shù)慕^對值的差并不等于0,則可以查明節(jié)點(diǎn)52和54中的一個(gè)或兩個(gè)都具有被錯(cuò)誤地推導(dǎo)的補(bǔ)償值。這種不精確的補(bǔ)償?shù)拇_定可能觸發(fā)節(jié)點(diǎn)52和54中的每個(gè)重計(jì)算這種節(jié)點(diǎn)之間的補(bǔ)償值并且交換重計(jì)算的、本應(yīng)相同的補(bǔ)償值。補(bǔ)償計(jì)算器70可以被配置為周期性地確定補(bǔ)償。另外地或替代地,補(bǔ)償計(jì)算器可以被配置為響應(yīng)于觸發(fā)來計(jì)算補(bǔ)償,例如響應(yīng)于接收的來自另一節(jié)點(diǎn)54的ID值的有限窗、響應(yīng)于另一指令或檢測到的預(yù)先確定的事件來計(jì)算補(bǔ)償。
圖3是針對一個(gè)節(jié)點(diǎn)A(例如,節(jié)點(diǎn)52)的32個(gè)數(shù)據(jù)塊的序列而計(jì)算的一系列ID值80、和針對另一節(jié)點(diǎn)B(例如節(jié)點(diǎn)54)的數(shù)據(jù)塊序列中的每個(gè)塊計(jì)算的另一系列的ID值82的示例。在圖3、圖4和圖5的示例中,ID值80和82被示出為CRC值。然而如本文所公開的,在其它示例中,不同的函數(shù)可以用于對每個(gè)數(shù)據(jù)塊確定獨(dú)特的ID值。在圖3的示例中,CRC值80的集合可以對應(yīng)為塊號1000到塊1031的序列范圍的塊而計(jì)算出的CRC值。CRC值的另一集合82可以對應(yīng)被示出為對于數(shù)據(jù)塊號碼范圍從2000到塊2031的塊所計(jì)算的CRC值。因此CRC值的集合80和82中的每個(gè)可以對應(yīng)于所計(jì)算的ID值的相應(yīng)的窗,其中本示例的ID值是(諸如由ID發(fā)生器20或ID計(jì)算器62所計(jì)算的)CRC值。
如所述的,數(shù)據(jù)選擇器(例如數(shù)據(jù)選擇器68)可以選擇對應(yīng)所計(jì)算ID值的有限窗的子集(適當(dāng)?shù)淖蛹?并且通過節(jié)點(diǎn)間通信組件66將其提供到其它節(jié)點(diǎn)。圖4表示選定的CRC值的集合,作ID值80主集合的子集84示出。在本示例中,子集84對應(yīng)于針對塊1008到1022計(jì)算的ID值,其例如通過節(jié)點(diǎn)間通信組件(諸如組件66)從節(jié)點(diǎn)A(諸如節(jié)點(diǎn)52)被提供到節(jié)點(diǎn)B(諸如節(jié)點(diǎn)54)。數(shù)據(jù)選擇器68可以操作以提供周期性地或響應(yīng)于經(jīng)規(guī)劃的事件來交換被計(jì)算的ID值的有限窗。
同樣在圖4中示出,在86處示出的所計(jì)算的ID值的有限窗,被作為來自所計(jì)算的ID值的集合82的適當(dāng)?shù)淖蛹贿x擇。ID數(shù)據(jù)86的子集可以被從節(jié)點(diǎn)A提供到節(jié)點(diǎn)B(例如從節(jié)點(diǎn)54到節(jié)點(diǎn)52)。在圖4的示例中,ID數(shù)據(jù)86的窗包括對于塊2008到2022中的每個(gè)計(jì)算的CRC值。接收ID數(shù)據(jù)的有限窗的每個(gè)節(jié)點(diǎn)因此可以采用補(bǔ)償計(jì)算器(諸如包括控制器74和相關(guān)器76)來確定這樣的補(bǔ)償:該補(bǔ)償提供從另一節(jié)點(diǎn)接收的有限窗相對于由節(jié)點(diǎn)自身計(jì)算的ID值的最佳相關(guān)。
圖5示出了其中(來自圖4中的節(jié)點(diǎn)B的)有限窗86的ID值已與來自節(jié)點(diǎn)A的相應(yīng)ID值的窗的相應(yīng)ID值序列進(jìn)行相關(guān)的示例。例如,來自從節(jié)點(diǎn)B接收的塊2008-2022的ID值已(例如由相關(guān)器76)確定為與對于塊1012-1026的由節(jié)點(diǎn)A所計(jì)算的ID值相關(guān)。圖5還示出了有限窗84(來自圖4中的節(jié)點(diǎn)A)由節(jié)點(diǎn)B與塊2004-2018的相應(yīng)CRC值的集合。因此,基于圖5的示例中所示出的相關(guān),節(jié)點(diǎn)A可以確定媒體內(nèi)容的-996塊的補(bǔ)償,并且節(jié)點(diǎn)B可以確定媒體內(nèi)容的+996塊的補(bǔ)償。如本文所公開的,補(bǔ)償可以由同步控制器用于建立可由相應(yīng)節(jié)點(diǎn)提供的經(jīng)編碼的媒體數(shù)據(jù)的相應(yīng)的輸出流的塊邊界。
為了進(jìn)一步示出(例如可以由補(bǔ)償計(jì)算器70實(shí)現(xiàn)的)相關(guān)的過程,圖6A-圖6H示出了對媒體內(nèi)容的三個(gè)連續(xù)塊(塊號碼2008、2009與2010)計(jì)算的CRC值的有限窗(如90處所示)的相關(guān)的示例。例如,給定節(jié)點(diǎn)(諸如節(jié)點(diǎn)52)可以從另一節(jié)點(diǎn)(諸如節(jié)點(diǎn)54)接收ID數(shù)據(jù)90的有限窗。返回參考圖2,補(bǔ)償計(jì)算器控制器74可以選擇性地比較來自其它節(jié)點(diǎn)的CRC值的有限窗90與來自節(jié)點(diǎn)52的CRC值的選定序列。例如,控制器74可以在補(bǔ)償值范圍內(nèi)增加補(bǔ)償以將有限窗90與(例如由相關(guān)器76)所實(shí)現(xiàn)的每個(gè)相關(guān)的不同的序列的值對齊。
作為示例,圖6A中有限窗90中的塊號2008、2009和2010的CRC值相對于由節(jié)點(diǎn)52針對塊號1008、1009和1010的計(jì)算的對應(yīng)CRC值進(jìn)行相關(guān)。在此特定示例中,補(bǔ)償被設(shè)置為-1000,從而塊2008的ID值與塊1008的ID值相關(guān),塊2009的ID值與塊1009的ID值相關(guān),并且塊2010的ID值與塊1010的ID值相關(guān)。在圖6A的此示例中,因?yàn)镃RC值中沒有相關(guān)的,所以(例如由相關(guān)器76確定的)聚合相關(guān)值為0。此過程可以對補(bǔ)償值的范圍重復(fù),如圖6B-圖6H所示。如圖6B、6C、6D、6E、6F、6G和6H的每個(gè)示例所示,控制器74可以跨被保持在所計(jì)算的ID數(shù)據(jù)64的窗中的CRC值的組來選擇性地以遞增方式調(diào)整塊號碼之間的塊補(bǔ)償,并且轉(zhuǎn)而計(jì)算每個(gè)相應(yīng)補(bǔ)償?shù)腎D值之間的聚合相關(guān)。
在圖6A-圖6H中的示例中,由圖6E示出的對于-996的圖像補(bǔ)償?shù)南嚓P(guān)示出了3的聚合總相關(guān)。針對每個(gè)其它補(bǔ)償確定的總相關(guān)被確定為0。因此,圖6E的示例的為3的相關(guān)值因而代表來自有限窗90的ID值、與為節(jié)點(diǎn)52計(jì)算的對塊號1012到1014的集合所計(jì)算出來的ID值之間的匹配。引出被相關(guān)的ID值的補(bǔ)償值可以被儲(chǔ)存在存儲(chǔ)器中和/或于節(jié)點(diǎn)間進(jìn)行交換以核實(shí)推導(dǎo)出的補(bǔ)償值的精確性。
由于在用于計(jì)算CRC值的相應(yīng)的媒體塊的內(nèi)容中沒有錯(cuò)誤,圖5和圖6的示例假設(shè)由每個(gè)節(jié)點(diǎn)所計(jì)算出的針對媒體內(nèi)容的相同塊的ID值是相同的。然而在其它示例中,當(dāng)相應(yīng)的相關(guān)的閾值可以保證相關(guān)的數(shù)量足以表明在由其它節(jié)點(diǎn)所提供的有限窗與由給定節(jié)點(diǎn)自身所計(jì)算的CRC值的集合之間的匹配時(shí),上述相應(yīng)的相關(guān)的閾值可以被設(shè)置為允許在相關(guān)中存在錯(cuò)誤。
鑒于上述的結(jié)構(gòu)和功能的特性,可以被實(shí)現(xiàn)的方法將參考圖7得以更好的理解。用于解釋的簡化,圖7的方法被示出和描述為連續(xù)執(zhí)行的,應(yīng)當(dāng)理解和領(lǐng)會(huì)這種方法并不被示出的順序所局限,因?yàn)樵谄渌纠囊恍┓矫婵梢砸圆煌捻樞蚝?或與本文所公開的其它方面同時(shí)進(jìn)行。更多地,并不要求所有示出的特性都用于實(shí)現(xiàn)方法。例如,方法或部分可以作為指令被儲(chǔ)存在非暫態(tài)的機(jī)器可讀的介質(zhì)中,并且由計(jì)算機(jī)設(shè)備的處理器來執(zhí)行。
圖7示出了可以被實(shí)現(xiàn)以輔助媒體流的同步的方法200的流程圖。在202處,方法包括在給定節(jié)點(diǎn)(例如節(jié)點(diǎn)12或52)的輸入處接收來自媒體源的輸入媒體的連續(xù)的流。如本文所公開的,輸入媒體的流可以包括一系列視頻(例如圖像)塊,可以包括活動(dòng)的視頻部分和附屬數(shù)據(jù)。塊可以根據(jù)用于提供輸入媒體的接口協(xié)議對應(yīng)于幀或字段。
在204處,ID值可以作為在由給定節(jié)點(diǎn)所接收的輸入媒體的一系列的連續(xù)流的多個(gè)數(shù)據(jù)塊的每一個(gè)的內(nèi)容的函數(shù)而被(例如由ID生成器20或58)計(jì)算。例如,ID值可以作為基于每個(gè)對應(yīng)的塊的內(nèi)容針對每個(gè)塊的CRC值或哈希秘鑰而計(jì)算。ID值可以被儲(chǔ)存在存儲(chǔ)器中,例如在媒體塊的預(yù)先設(shè)定的號碼的ID數(shù)據(jù)的窗中。
在206處,給定節(jié)點(diǎn)(例如節(jié)點(diǎn)52)可以例如通過節(jié)點(diǎn)間通信接口接收來自其它節(jié)點(diǎn)(例如節(jié)點(diǎn)54)的ID值。此外,所接收的ID值可以針對由其它節(jié)點(diǎn)所接收的連續(xù)流中的一系列多個(gè)數(shù)據(jù)塊而計(jì)算。在208處,方法200可以包括將來自另一節(jié)點(diǎn)的所接收的ID值的集合相對于對給定節(jié)點(diǎn)所計(jì)算的值的集合進(jìn)行相關(guān)。例如,接收到的ID值的集合可以是針對媒體塊的子集所計(jì)算的ID數(shù)據(jù)的有限窗。在數(shù)量上,有限窗中的媒體塊的子集可以少于或等于窗中所計(jì)算的ID值被針對其儲(chǔ)存的媒體塊的集合。如本文所公開的,對于每個(gè)所接收的ID值相對于在不同補(bǔ)償值的區(qū)域內(nèi)對等的集合所計(jì)算的ID值的相關(guān)可以被實(shí)現(xiàn),因而所接收的ID數(shù)據(jù)的系列的ID值可以被與不同系列的所計(jì)算的ID值以在208處執(zhí)行的每個(gè)相關(guān)(例如CRC)而進(jìn)行對齊。關(guān)于每個(gè)相關(guān)的值可以作為被相關(guān)的每對ID值的相關(guān)結(jié)果而儲(chǔ)存。相關(guān)結(jié)果的聚合可以是對于給定補(bǔ)償值的每個(gè)ID值對的相關(guān)的總和。
在210處,執(zhí)行對應(yīng)每個(gè)相關(guān)的聚合結(jié)果的分析,以確定所接收的ID值的有限窗與由給定節(jié)點(diǎn)所計(jì)算的ID值的集合是否進(jìn)行相關(guān)。例如,分析可以對于在208處的相關(guān)所采用的每個(gè)補(bǔ)償值的聚合的相關(guān)結(jié)果進(jìn)行比較。如果在210的分析表明所接收的值是相關(guān)的,則方法可以推進(jìn)到212處以推導(dǎo)用于節(jié)點(diǎn)對之間的同步的補(bǔ)償。如本文所公開的,給定節(jié)點(diǎn)處的導(dǎo)出補(bǔ)償是能夠提供聚合相關(guān)的最大量的補(bǔ)償,在一些示例中,可能超過所規(guī)定的相關(guān)閾值。另外地或替代地,導(dǎo)出補(bǔ)償可以對應(yīng)提供ID值的對應(yīng)集合之中的相關(guān)的最大量的補(bǔ)償量。
如果被比較的ID值不相關(guān)或如果附屬的有序的集合保持用于比較,則方法可以從210推進(jìn)到214。在214處,給定節(jié)點(diǎn)的所計(jì)算的ID值的下一集合可以被(諸如由控制器74)選擇,并且方法可以轉(zhuǎn)到208以執(zhí)行對于給定節(jié)點(diǎn)所計(jì)算的ID值的下一個(gè)選定的集合與對于其它節(jié)點(diǎn)的(在206處)接收到的有限的集合進(jìn)行相關(guān)。如上所述,補(bǔ)償可以基于在210處確定的ID值而在212處被導(dǎo)出用于進(jìn)行相關(guān)。
對于被導(dǎo)出的補(bǔ)償?shù)倪M(jìn)一步分析可以在216處被實(shí)現(xiàn),響應(yīng)于接收由其它節(jié)點(diǎn)(在206處ID值從同樣的該節(jié)點(diǎn)接收)計(jì)算的補(bǔ)償。所接收的補(bǔ)償值因而可以以類似于202-212處示出的過程而在這種其它的節(jié)點(diǎn)處計(jì)算,并被送到給定節(jié)點(diǎn)用于在216處接收。在218處,對于給定節(jié)點(diǎn)(在212處)的推導(dǎo)的補(bǔ)償可以與在216處接收到的補(bǔ)償進(jìn)行比較,以確保推導(dǎo)出的補(bǔ)償?shù)木_性。例如,如果在這對節(jié)點(diǎn)之間所推導(dǎo)的與所計(jì)算的補(bǔ)償?shù)慕^對值之差是相同的,那么給定節(jié)點(diǎn)可以驗(yàn)證所推導(dǎo)的補(bǔ)償。如本文所公開的,所推導(dǎo)的補(bǔ)償可以在給定節(jié)點(diǎn)處被儲(chǔ)存在存儲(chǔ)器中,使得輸入此節(jié)點(diǎn)的媒體內(nèi)容相對于輸入其它節(jié)點(diǎn)的共同的媒體內(nèi)容能夠?qū)崿F(xiàn)同步。如果所導(dǎo)出的補(bǔ)償值未在218處被驗(yàn)證,方法可以轉(zhuǎn)到202處以重復(fù)針對不同的ID值的步驟。
以上描述只是示例。當(dāng)然,將每個(gè)能被聯(lián)想到的組件或方法的組合描述出來是不可能的,但本領(lǐng)域普通技術(shù)人員將認(rèn)識到許多進(jìn)一步的結(jié)合與置換是可能的。相應(yīng)地,本發(fā)明意在包含落在本申請的范圍內(nèi)的所有的這種變更、修改以及變化,包括所附的權(quán)利要求。
本公開或權(quán)利要求書中所列舉的“一個(gè)”“一”或“另一”組件,或等價(jià)的詞組,應(yīng)該被說明為包括一個(gè)或多個(gè)于一個(gè)的這種組件,并不要求或排除兩個(gè)或多個(gè)這種組件。如本文所采用的,術(shù)語“包括”是指包括而不局限,術(shù)語“包括著”是指包括而不局限。術(shù)語“基于”是指至少部分地基于。