流媒体开发相对比较久的同学,可能经常一抓包或者一看数据就会对fps25、Timestamp间隔40、RTP时间戳增长3600非常熟悉,但是这个40、3600是怎么得来的还不是非常清楚,尤其是这个时间戳的间隔,并不知道是怎么计算来的,今天我们就分别对音视频时间戳中的时间间隔来做一个了解:
在live555中fDurationInMicroseconds表示单个视频或者音频帧所占用的时间间隔,也就是秒,也表示在fDurationInMicroseconds微秒时间后再次向Source进行getNextFrame操作,
以视频为例,可以这样计算:
视频帧率fFrameRate=25,那么我们每一次在doGetNextFrame中赋值fDurationInMicroseconds = 1000000(1秒)/fFrameRate = 40000(40ms);
以音频为例,可以这样计算:
假如音频的采样率为fSamplingFrequency=8000,那么我们每一次在doGetNextFrame中赋值fDurationInMicroseconds = 1000000/fSamplingFrequency = 125;
那RTP时间戳是怎么来的呢,因为音频和视频都有采样率这么一说,比如视频经常是90000 RTP/AVP,那么也就是说将1s分成90000份采样(即1ms就是9个采样),那么上面视频里面的一帧时间间隔是40ms,也就是40*90=3600,RTP里面的3600就是这么得来的;音频同理;
我们专注于开源流媒体技术:EasyDarwin、live555、ffmpeg,关注我们!