這里主要關注的rtp包的時間戳,在rtsp中,播放器的1S鍾的定義是和媒體的采樣率有關的。
例如視頻的采樣率是90K,那么最小時間粒度(單位)是1/90000秒,再轉換成ms就是 1/90毫秒,這個就是rtsp中的最小時間單位。
所以設備端采集的視頻的時間要經過一個轉換,標准的播放器才能播放
還是以90K的視頻為例,設備采集到的單位是按時間tv_sec,tv_usec存儲。
/* timestamp convert
t(rtsp時間戳,單位ms) = t(采集時間戳,單位秒)*90000
*/
unsigned int tv_sec, tv_usec, pts;
tv_sec = ts / 1000;
tv_usec = (ts % 1000) * 1000;
pts = tv_sec * 90000 + tv_usec *9 / 100;
對應的如果是8K采樣率的音頻,則轉化公式是:
/* timestamp convert
t(rtsp時間戳,單位ms) = t(采集時間戳,單位秒)*8000
*/
tv_sec = ts / 1000;
tv_usec = (ts % 1000) * 1000;
pts = tv_sec * 8000 + tv_usec *8/1000;