时间戳是音视频都具有的属性,我们的音视频都是通过时间戳来同步的,首先,先看看音视频的时间戳计算方法。
1. 视频时间戳
这个值主要是依赖于帧率;1000/fps为帧间间隔;相当于一个个间隔时间加上去了。可见这个计算是以帧为单位来计算的。pts = inc++ *(1000/fps); 其中inc是一个静态的,初始值为0,每次打完时间戳inc加1.
在ffmpeg,中的代码为
pkt.pts= m_nVideoTimeStamp++ * (m_VCtx->time_base.num * 1000 / m_VCtx->time_base.den);
2. 音频时间戳
依赖于音频的sample rate来计算,(1000 / sample_rate)是每个采样多长时间,(frame_size * 1000 / sample_rate)计算出来framesize长度一个音频帧的时间长。这个值计算是以音频帧单位来计算的。
pts = inc++ * (frame_size * 1000 / sample_rate)
在ffmpeg中的代码为
pkt.pts= m_nAudioTimeStamp++ * (m_ACtx->frame_size * 1000 / m_ACtx->sample_