關於RTP中的時間戳問題

2021-07-04 02:02:33 字數 501 閱讀 2360

在使用jrtplib的傳送資料的時候需要設定時間戳單位(timestamp)和時間戳增量(timestamp increment)。看了網上一些文章,細細想來現在才想通這個問題。   

rfc3550對時間戳的描述是:

如果rtp包是週期性產生的,那麼將使用由取樣時鐘決定的名義上的取樣時刻,而不是讀取系統時間。例如,對乙個固定速率的音訊,取樣時鐘(時間戳時鐘)將在每個週期內增加1。如果乙個音訊從輸入裝置中讀取含有160個取樣週期的塊,那麼對每個塊,時間戳的值增加160,而不考慮該塊是否用乙個包傳遞或是被丟棄。

根據一些文章我自己推敲了一下幾個概念如下:   

時間戳單位:時間戳計算的單位不為秒之類的單位,而是由取樣頻率所代替的單位,這樣做的目的就是為了是時間戳單位更為精準。比如說乙個音訊的取樣頻率為8000hz,那麼我們可以把時間戳單位設為1/8000。

時間戳增量:相鄰兩個rtp包之間的時間差(以時間戳單位為基準)。

如何設定時間戳之間的增量呢?

網上大多數列舉的乙個例子是:

RTP中時間戳的作用

1 調整語序 時間戳字段是rtp首部中說明資料報時間的同步資訊,是資料能以正確的時間順序恢復的關鍵。時間戳的值給出了分組中資料的第乙個位元組的取樣 時間 sampling instant 要求傳送方時間戳的時鐘是連續 單調增長的,即使在沒有資料輸入或傳送資料時也是如此。在靜默時,傳送方不必傳送資料,...

RTP傳輸中的負載型別和時間戳

最近被rtp的負載型別和時間戳搞鬱悶了,乙個問題除錯了近一周,終於圓滿解決,回頭看看,發現其實主要原因還是自己沒有真正地搞清楚rtp協議中負載型別和時間戳的含義。雖然做rtp傳輸,有著jrtplib和ortp這兩個強大的庫支援,乙個是c 介面,乙個是c語言介面,各有各的特點,各有各的應用環境,但是僅...

談談RTP傳輸中的負載型別和時間戳

最近被rtp的負載型別和時間戳搞鬱悶了,乙個問題除錯了近一周,終於圓滿解決,回頭看看,發現其實主要原因還是自己沒有真正地搞清楚rtp協議中負載型別和時間戳的含義。雖然做rtp傳輸,有著 jrtplib和 ortp這兩個強大的庫支援,乙個是c 介面,乙個是c語言介面,各有各的特點,各有各的應用環境,但...