如何重新编码音频以匹配另一个音频,以避免重新编码整个音频

问题描述 投票:0回答:1

我在浏览器中有一个使用 ffmpeg (WebAssembly) 的音频编辑器,我想将新音频插入到现有音频中,而不必重新编码所有内容。重新编码所有内容需要很长时间,尤其是在浏览器中,因此我只想重新编码插入的文件,将其与原始文件匹配并使用

copy
命令将它们连接起来。

在 ffmpeg 连接 docs 上它说:

所有文件必须具有相同的流(相同的编解码器、相同的时基等)

但是不清楚时基是什么意思。到目前为止,我观察到我需要匹配:

  • 编解码器
  • 比特率
  • 采样率
  • 通道(单声道、立体声)

是否还有其他需要匹配的内容,以便连接时生成的音频不会损坏/损坏?

我观察过 mp3,例如它有 VBR、CBR 和 ABR。如果原始音频的比特率为 128 kb/s,我假设它是 CBR,所以我将其与:

ffmpeg -i original.mp3
# > Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s

ffmpeg -i input.mp3 -b:a 128k -ar 44100 -ac 2 re_encoded.mp3

# then merge
# concat_list.txt contains the original audio and the re_encoded.mp3

ffmpeg -f concat -i concat_list.txt -safe 0 -c copy merged.mp3

这对于 CBR 来说效果很好,例如 8、16、24、32、40、48、64、80、96、112、128、160、192、224、256 或 320(docs),只要我测试过。

问题在于原始 .mp3 具有 VBR(可变比特率)或 ABR,例如 150 kb/s。

如果我尝试像下面这样匹配它:

ffmpeg -i input.mp3 -b:a 150k -ar 44100 -ac 2 re_encoded.mp3
ffmpeg -i re_encoded.mp3
# Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 160 kb/s

生成的比特率四舍五入到最接近的 CBR,即 160。

我可以使用

-abr 1
:

用 mp3 解决这个问题
ffmpeg -i input.mp3 -abr 1 -b:a 150k -ar 44100 -ac 2 re_encoded.mp3
ffmpeg -i re_encoded.mp3
# Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 150 kb/s

现在比特率与原始音频匹配,但是我不确定这是否正确,因为我正在将新音频修改为 ABR 并将其与 VBR 连接?我什至不确定如何使用 ffmpeg 检查音频是 VBR、CBR 还是 ABR,或者在连接时是否很重要。

aac 文件也会出现另一个问题。当我尝试匹配原始音频比特率时,我做不到。

ffmpeg -i input.mp3 -b:a 128k -ar 44100 -ac 2 re_encoded.aac
ffmpeg -i re_encoded.aac
# Stream #0:0: Audio: aac (LC), 44100 Hz, stereo, fltp, 135 kb/s

生成的比特率似乎总是可变的(在本例中为 135),因此我无法将其与原始比特率相匹配。

所以我的问题是,将音频与不同的流连接时需要满足什么条件,以及如何实现仅重新编码一个音频以匹配另一个音频。或者如果有一些包可以做到这一点,那就会有很大的帮助。

audio ffmpeg encoding mp3 aac
1个回答
0
投票

您需要匹配编解码器、通道数和采样率。您不需要匹配比特率。解码器将以不同的比特率工作,就像任何其他 VBR 流一样。每个框架都可以指示其大小。对于 CBR,所有帧的大小恰好相同。 但实际上,您不会想为此烦恼。您将需要将所有内容解码为原始 PCM 并重新编码。虽然这确实会导致一代人的损失,但好处是显而易见的:

样本精确计时需要以能够实际分割样本的格式进行拼接。您无法使用以块(即帧)工作的有损编解码器来做到这一点。
  • 混合不同编解码器的输入需要选择一个获胜者来输出,无论如何你都会有一代损失。
  • 您的用户将不可避免地希望引入不同采样率的源。重采样需要在时域完成,无论如何都需要另一代解码和编码。
  • 在编辑阶段转换为 PCM
  • 简单
  • 可靠。尝试使用压缩数据块进行编辑是困难有问题容易出错
© www.soinside.com 2019 - 2024. All rights reserved.