這里將有關時間戳的幾個概念介紹如下:
采樣頻率 是每秒鍾抽取聲波幅度樣本的次數: 8000
幀率 是每秒顯示幀數: 20
時間戳單位:時間戳計算的單位不為秒之類的單位,而是由采樣頻率所代替的單位,這樣做的目的就是為了是時間戳單位更為精准。比如說一個音頻的采樣頻率為8000HZ,那么我們可以把時間戳單位設為1/8000。
時間戳增量:相鄰兩個RTP包之間的時間差(以時間戳單位為基准)。
如何設定時間戳之間的增量呢?
按照剛才時間戳單位來看,1秒鍾按照時間戳單位就是8000,那么一秒鍾如果可以播放20幀,也就是發送20幀(幀率),那么可以求出相鄰兩幀之間的時間差,也就是時間戳增量,那么顯而易見是用8000/20,那么這個時間戳增量就為400。
音頻如果采用頻率是8000HZ 那么時間戳單位就是1/8000 ,時間戳單位就是1/8000 這個1 就是指1s,說白了就是每個聲波幅度樣本的時間間隔是 1/8000s。
幀率是 20那么時間戳增量就是 8000/20=400(現在每秒采樣的聲音樣本數是8000個,每秒播放20幀那么每幀包含的聲音樣本就是400個)時間戳增量就是400,如果換做系統時間 就是 400*(1/8000) 每幀間隔1/20s
網上大多數列舉的一個例子是:例如MPEG,每幀20ms,采樣頻率8000Hz,設定時間戳單位1/8000,而每個包之間就是160的增量
這里又該如何理解呢?可以輕易地看出增量是直接8000與20ms相乘的結果,我們可以知道這里兩幀之間的時間為20ms,也就是0.02s,這個單位是以秒來衡量的,那么我們要用時間戳單位來表示那么就是8000*0.02=160.所以時間戳增量為160。
還有一點為什么一般都用90000作為視頻采樣頻率呢?
90k是用於視頻同步的時間尺度(TimeScale),就是每秒90k個時鍾tick。為什么采用90k呢?目前視頻的幀速率主要有25fps、29.97fps、30fps等,而90k剛好是它們的倍數,所以就采用了90k。