【问题标题】:mpeg2-ts aac PTSmpeg2-ts aac PTS
【发布时间】:2013-11-28 03:42:46
【问题描述】:

我有一个 IP 摄像机,它发送 8000hz 采样率配置的音频和 H264 视频。 我制作了一个从这个 IP 摄像机生成 TS 文件的程序,它在 VLC、Android 媒体播放器(除了 iPhone、Mac OSX Safari 之外)上运行良好。 (该程序适用于我制作的 HLS Server。)

在 Iphone 中播放视频,Safari 很好,但音频不是。 (我能听到声音,但播放不流畅)

我了解 TS 数据包中的音频 PTS 应基于 MPEG2 系统 PCR 时钟 (90000hz)。 IP 摄像头发送的时间戳值是基于采样率的(8000hz),所以当我在 TS 文件中写入音频的 PTS 时,我将 90000/8000 乘以时间戳以使 PTS 成为 MPEG2 PCR 时钟。

将 90000/8000 乘以音频 PTS 的方法是否错误? 任何帮助将不胜感激。

【问题讨论】:

    标签: audio aac mpeg2-ts pts


    【解决方案1】:

    您很可能会遇到舍入错误。 TS 中的 PTS 必须完美,否则许多播放器会尝试与参考时钟重新同步播放,这通常会显示为丢失样本或插入静音。

    通过计数样本并转换为 90khz 来确保您的起始 PTS 准确无误。在除法之前做你的乘法,例如(sampleCount * 90000) / sampleRate(不是 sampleCount * ( 90000 / sampleRate ),并确保使用 64 位整数以避免整数溢出。或者更好的是,使用 libavutil 中的 av_rescale。

    【讨论】:

    • 感谢@szatmary。我只是想知道,RTP 标头中的时间戳可以用作 TS 文件中的 PTS 值。我将 PTS 值作为来自 RTP 标头的时间戳放在视频数据的 TS 文件中。如果可能是错误的,我应该如何计算 PTS 值?
    • 对于视频来说,这并不重要。只需将源时基转换为 90khz。如果您的帧显示早或晚几微秒,没有人会注意到。但是,您确实会注意到声音。
    猜你喜欢
    • 2014-10-28
    • 1970-01-01
    • 2023-04-08
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多