TS合成中PTS間隔超過700ms的解決方案

2021-07-24 20:24:21 字數 1173 閱讀 1312

例:子午書簡

h264+mp2.ts

2mbps

的位元速率打包,就會出現這樣的問題。 第

80434296

位元組位置,描述

-pts

間隔超過

700ms, 

發生在pts_pid 

為0x281. 第

140870468

位元組位置,描述

-pts

間隔超過

700ms, 

發生在pts_pid 

為0x281. 第

141520196

位元組位置,描述

-pts

間隔超過

700ms, 

發生在pts_pid 

為0x281.

仔細分析: 第

80434296

位元組,即第

0x4cb5478

位元組開始傳送

no. 8053 

p幀),而前一幀

no. 8052 

i幀,大小

75393

位元組)在第

0x4c81990

位元組開始傳送,兩者之間相差時間為 (

0x4cb5478 - 0x4c81990 )/

(2×1000000/8

)= 846.7 ms > 700 ms

vbv buffer= 2mbps 

×0.7s = 175000

位元組經過對多個檔案的統計分析,發現此問題出現的特點是:

1. 基本上都出現在h264檔案中。出問題幀的前一幀為i幀,此i幀資料量較大,通常達到vbv buffer大小的40%。

2. vbv buffer在此時幾乎為全滿。

大i幀出現了,而vbvbuffer則幾乎全滿,沒有地方放資料,所以會傳送很多空包,從而導致超時。

方法1. 減小i幀大小,這通常不可能;

方法2. 增大vbvbuffer,也較難,此buffer大小,dvb有標準規定;

方法3. 充分利用700ms,把i幀和i幀前一幀之間的間隔時間拉長,為i幀的放入騰出空間,增大buffer的空閒空間,這樣就可以使得時間間隔都小於700ms。而且從實際觀察來看,兩幀間時間間隔雖然大於700ms,但是不會大很多,把此過長的時間分一些給上乙個間隔就能保證兩個間隔都不超時。

結果,在本機上測試方法3,通過。

**

ts定義陣列型別 ts中型別

1 vscode配置自動編譯 1.第一步 tsc inti 生成tsconfig.json 改 outdir js 2 第二步 任務 執行任務 監視tsconfig.json 2 typescript中的資料型別 typescript中為了使編寫的 更規範,更有利於維護,增加了型別校驗,在types...

TS中的介面

介面也是定義標準,他比抽象類更加全面 1.屬性介面function printlabel labelinfo void printlabel aaa 錯誤寫法 printlabel 傳入引數必須是以label為屬性名的物件對批量方法進行約束 可選屬性介面firstname?string 定義標準 i...

TS中的pcr dts pts問題

對於pts dts flags的重設 這是因為忽略了乙個問題,在pts語法中,前4個bit要求與 pts dts flags 取值相同。因此,在修改 pts dts flags 的之後,pts語法前4bit也要做相應的修改。這樣目前已知的解碼器就可以正常工作 h264碼流生成快進檔案關鍵技術 抽幀只...