RTP AAC 时间戳问题

Posted

技术标签:

【中文标题】RTP AAC 时间戳问题【英文标题】:RTP AAC timestamps issue 【发布时间】:2013-06-19 15:25:24 【问题描述】:

我正在尝试通过 RTP 将 AAC 音频流式传输到 Wowza 服务器。我设法让它工作,但我交替听到声音非常快,然后是 1s 空白。采样率为 22050,每包帧数为 1024。

目前我的时间戳是这样生成的:

long _timestamp;

//--- called each time I have to send a new AAC packet ---//
-(void) updateTimestamp
    if(! _timestamp)
        _timestamp = random();
    else
        _timestamp += 1024;
    rtptime = big_endian(_timestamp);

正确吗?我不知道为什么输出会很奇怪,任何帮助都会受到赞赏:)

【问题讨论】:

我不确定我是否真的理解代码的用途,但 if (!_timestamp) 块不太可能被命中,因为 _timestamp 未初始化为 0 嗯,它适用于 objecive-c++ 但您可以将其替换为“if (_timestamp == 0)” 【参考方案1】:

是的,逻辑是正确的,但不是long,而是使用unsigned long,这样当unsigned long达到最大值时它会负责舍入。

【讨论】:

以上是关于RTP AAC 时间戳问题的主要内容,如果未能解决你的问题,请参考以下文章

比较应该是相同的 AAC 音频文件 - 时间戳?

aac 和 h264等的时间戳

使用rtcp实现音视频同步

vlc-解码一个RTP数据包函数分析

vlc源码分析 流媒体的音视频同步

rtmp和rtsp的区别和适用范围