如何從TS流中找到OC資料

2021-06-22 17:36:21 字數 1590 閱讀 9765

如何從ts流中找到oc資料    

oc(dsm-cc object carousel):是將「物件結構」從廣播伺服器傳輸到客戶端的一種傳輸機制。

oc object主要包括:

1、directory objects(資料夾) 

2、file objects(檔案)

3、stream objects.(流檔案[不常用])

oc伺服器將檔案按mpeg-2生成ts流,通過廣播網路傳輸到客戶端。

1.如何從ts流中找到oc資料

pat中包含有多個program,每乙個program即我們所說的乙個應用 通過pat可以找到對應的pmt,每乙個pmt包含有乙個program,在乙個program中含有多個es資料,每個es資料都有標示其型別的資訊欄位stream-type, 當這個欄位為0x0b的時候,表示其為乙個含有oc資料的es資料。

即:通過它的elementary-pid可以找到這個oc資料的packets。

oc資料都至少含有dsi,dii,ddb的資訊,他們都是協議中提到的message。

在上表中,當table_id為0x3b時,表示該section為dsi或者dii的乙個section 當table_id為0x3c的時,表示該section為ddb的乙個section 在last_section_number之後除crc的資料之外,就是我們需要的message資料片斷。

每個message都有乙個header。

dsi,dii的header為dsmcc message header。

ddb的header為dsmcc downloaddate header。

兩個header的格式基本相同。

dsi(downloadserverinitiate message):其包含乙個servicegatewayinfo, 它會提供乙個物件的參考給servicegateway object。

dii(downloadinfoindication message)

dii中儲存著所有module的相關資訊,如module id,module size,module version,module info等。

ddb(downloaddateblock message)

ddb為module資料的乙個片斷單位。多個ddb資料組成乙個module。 module中儲存著oc資料的內容,它是由多個ddb組成的module中儲存的資料型別為我們前面所說的oc資料的object,

即directory object、file object、stream object

這些object 都是由滿足biop的規範message資料段封裝,其包括

biop directory message

biop file message

biop stream message 

乙個module中,可以儲存乙個或者多個message。

目前我們將乙個module的大小定為64kb;當遇到特大檔案,module最大為256kb。 對於特大的檔案,我們將會把它生成兩個message,放入兩個module中,message之間會用big file descriptor進行描述 。這時乙個module只能儲存乙個message。

從10G個數中找到中數

在乙個檔案中有 10g 個整數,亂序排列,要求找出中位數。記憶體限制為 2g。不妨假設10g個整數是64bit的。2g記憶體可以存放256m個64bit整數。我們可以將64bit的整數空間平均分成256m個取值範圍,用2g的記憶體對每個取值範圍內出現整數個數進行統計。這樣遍歷一邊10g整數後,我們便...

PHP從陣列中找到指定元素的位置

群裡有人問,有個陣列五個元素 分為1到5 現在要求 迴圈找出3元素的索引,怎麼做效能才是最高。我不知道哪個效能最高,但是我想提出可以用多種方式進行查詢,然後進行比較選擇。我想,最簡單最基礎的 應該是迴圈,迴圈到它,那就是它。當然也可以用php提供的陣列查詢 array search。這都是能想得到的...

如何在學習中找到樂趣?怎樣才能找到學習的樂趣

我們可以把學習比作談戀愛。把她當成你的戀人,這樣你就對她產生了興趣,然後你就會千方百計的想去了解她,在這追求之中會有很多的樂趣。學習也是一樣,只有不斷深入的學習,你就會發現很多有趣的東西。無論做什麼事情,上乘的境界是樂在其中。只有樂在其中,做事才能又快又好。很多作家,伏案耕耘,通宵不眠,渾然不知疲倦...