直播推流中 SDK 如何處理音視頻數據的 pts 和 dts

   直播行業因爲近期疫情的原因,進入了一波小風口,我們都知道 pts 和 dts 對於音視頻來說是一個什麼樣的概念,視頻如果沒有時間戳,出來的是一張張圖片,推流的時間戳要怎麼處理比較好呢,本章主要梳理一下在直播推流場景中,針對底層封裝數據內部的時間戳 pts 和 dts 的相關處理,以及部分需要注意的地方。

直播目前 pts 和 dts 個人已知的設置模式有以下幾種:

  1.  從 0 開始計算:從 0 開始計算,即只要開始推流,pts 和 dts 均是從 0 開始,不管後續同一個流是否在推,均從當前 start 開始計時,每次 stop 時結束計時。

  2. 針對基礎時間計算:類似針對當前推流對象的創建,記錄一個 base time, 從當前 start 開始推流時,根據生成的 base time 生成對應的時間偏移量賦給 pts 和 dts。

  3. 取絕對時間的某些值計算:直接設置 pts 和 dts 一個固定時間的某些值,然後後續推流時取當前固定時間的偏移量,不過要考慮數值溢出的情況。

上述三種方法,在直播場景中,各家有各家的選擇。不過一般如果有直播需求的,大部分都會有落存儲,看回放的業務需求,上述三種方法對於回放的影響就比較大了,如果需要生成對應時間段中直播的回放,但是實際上是由兩段直播合併而成的話,就會出現 dts 跳變的問題,導致播放回放時影響體驗  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章