我目前正在使用RTP传输音频(8kHz的AAC-HBR)和视频(H264)。两个Feed都可以单独运行,但是当它们放在一起时它们会非常快速地失去同步(少于15秒)。
我不知道如何增加音频RTP头上的时间戳,我认为应该是两个RTP数据包之间的时间差(大约127ms)或1/8000(0.125 ms)的恒定增量。但是没有奏效,相反我设法找到了一个最佳点。当我为每个数据包增加935的时间戳它保持同步约一分钟。
答案 0 :(得分:1)
AAC帧大小为1024个样本。尝试增加(1/8000)* 1024 = 128 ms。如果您的数据包有多个AAC帧,则为其倍数。
这有帮助吗?
答案 1 :(得分:0)
答案 2 :(得分:0)
有点晚了,但是想到了提出我的答案。
音频RTP数据包上的时间戳== RTP数据包中包含的音频样本数。
对于AAC,每个帧包含1024个样本,因此RTP数据包上的时间戳应增加1024。
2个RTP数据包的时钟时间之间的差异=(1/8000)* 1024 = 128ms,即发送方应发送相差128 ms的rtp数据包。
从其他采样率中获取更多信息:
现在,以44100hz采样的AAC表示1秒内有44100个信号采样。 因此1024个样本意味着(1000ms / 44100)* 1024 = 23.21995 ms 因此,两个RTP数据包之间的时间戳= 1024,但是 rtp会话中2个RTP数据包之间的时钟时间差应为23.21995ms。
尝试与其他示例关联:
例如对于G711系列(PCM,PCMU,PCMA),采样频率= 8k。 因此20ms数据包应具有== 8000/50 == 160的样本。 因此,RTP时间戳增加了160。 两个RTP数据包之间的时钟时间差应为20ms。