【问题标题】:ffmpeg wrong audio file after conversion in AAC在AAC中转换后ffmpeg错误的音频文件
【发布时间】:2017-07-13 14:57:31
【问题描述】:

我在使用 FFmpeg 进行 acc 编码时遇到问题。 我有带有 aac 音频的 au mp4 文件。我试图用 ffmpeg 复制音频。 在源 mp4 文件中,第一个音频噪声出现在 0.30 秒。 使用ffmpeg -i inputfile.mp4 -c:a copy outputfile.aac转换后,生成的文件是错误的,第一个音频噪音出现在0.32秒。 文件的时长也不一样。

当我强制编码器使用 libfaac 时,它可以工作,但文件太大。

那么为什么使用默认编码器时它不起作用(aac,libfdk_aac)? 请注意,当我从 audacity 转换时会出现同样的情况。

非常感谢

【问题讨论】:

    标签: audio ffmpeg aac


    【解决方案1】:

    音频流中有一个填充帧,解码器需要它来解码第一帧。这是 AAC 等 MDCT 音频编解码器的技术要求。在像 MP4/MKV 这样的定时样本容器中,第一帧的呈现时间戳为负。在原始 AAC 比特流中,第一帧被天真地解码。每帧有 1024 个样本,因此持续时间为 21-23 毫秒。您的时间差异是由于该偏移量。重新包装到 M4A 之类的容器中以避免这种情况。

    背景,来自Apple

    AAC 需要源 PCM 音频样本之外的数据,以便 由于音频的性质,正确编码和解码音频样本 编码算法。 AAC 编码使用连续变换 2048 个音频样本集,每 1024 个音频样本应用一次 (重叠)。要解码正确的音频,对于任何 需要 1024 个音频样本的周期。出于这个原因,编码器添加 在第一个“真实”音频样本之前至少有 1024 个静音样本, 并且经常添加更多。这被称为不同的“启动”,“启动 样本”或“编码器延迟”。

    编码器延迟和余数缺乏明确的表示 样本不是 AAC 编码独有的问题。使用 MPEG-4 和 ADTS/MPEG-2 比特流和文件容器,仍然没有 编码器延迟或编码器延迟的令人满意的明确表示 剩余样本。 MP3 也有这些数据依赖和延迟 它的比特流,以及 AC-3 等专有编解码器。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2021-04-20
    • 2013-09-19
    相关资源
    最近更新 更多