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

2021-08-09 14:10:05 字數 300 閱讀 1680

那為什麼會這樣呢?

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了,所以解碼失敗。

udp組播示例 傳送 接收

原因不多說,目錄結構扁平,data.h如下 pragma once include include include define multicast ip 234.0.0.1 define multicast port 28928 pragma pack 1 typedef struct price...

QT之UDP和組播的使用

先簡單說下udp,因為組播也是udp的,用udp的比較方便的一種面向無連線的方式,只要繫結本地埠,跟伺服器發個信令通知告訴ip和埠,就可以接收伺服器端的資料了,但是存在最多的問題就是丟包和亂序,先看下簡單udp的連線。qudpsocket revwbudp revwbudp new qudpsock...

QT之UDP和組播的使用

先簡單說下udp,因為組播也是udp的,用udp的比較方便的一種面向無連線的方式,只要繫結本地埠,跟伺服器發個信令通知告訴ip和埠,就可以接收伺服器端的資料了,但是存在最多的問題就是丟包和亂序,先看下簡單udp的連線。qudpsocket revwbudp revwbudp new qudpsock...