1. 程式人生 > >vlc使用udp組播方式傳送ts流的特殊規則

vlc使用udp組播方式傳送ts流的特殊規則

當你寫程式去接收vlc傳送的ts流時,你會發現解析出來的一幀視訊幀有時候解碼會失敗,追究其原因,是因為前4個位元組不是0,0,0,1。

那為什麼會這樣呢?

這是因為vlc在處理大於65535位元組的視訊幀時,沒有按照ISO標準來。

ISO標準的做法是將PES_packet_length置為0,如果要獲取這幀真實的長度,得藉助於payload_unit_start_indicator欄位,因為它控制著一幀的開始。

而VLC的做法是把該幀分割成很多個65500再加上不滿65500的部分。這些pes包的PES_packet_length分別設為65500和不滿65500的長度,並且payload_unit_start_indicator都設為1。這樣我們解析的時候,明明只有1幀資料,硬生生解析成了N幀。這樣後面的“幀”前四位元組自然不是0,0,0,1了,所以解碼失敗。