无法使用 sox 将 mp3 采样率设置为 44.1k

无法使用 sox 将 mp3 采样率设置为 44.1k

我正在尝试覆盖两个文件(将它们合并为一个,以便它们同时放置)。

选项包括sox --combine序列、连接、混合、混合幂、合并和乘法。我看过文档这里我应该使用哪个并不完全明显。当序列和连接具有不同的采样率时,它们确实可以工作,但不会覆盖它们。

我正在尝试使用 mix,但它不允许我将采样率设置为 41k(根据我的理解,这是 mp3 的正确采样率):

为了防止不同的采样率,我循环输入文件并将所有采样率设置为 41k。我有以下代码来执行此操作:

sox -r 44.1k input1.mp3 output1.mp3
sox -r 44.1k input2.mp3 output2.mp3

我明白了(文件之间有所不同)

sox WARN formats: can't set sample rate 44100; using 24000
sox WARN formats: can't set sample rate 44100; using 48000

然后当我尝试使用以下命令覆盖它们时:

sox --combine mix output1.mp3 output2.mp3 output3.mp3 

我看到这个:

sox FAIL sox: Input files must have the same sample-rate

我使用的是 Ubuntu 16.04。

作为解决方法,我使用此处显示的 ffmpeg 命令:https://stackoverflow.com/questions/14498539/how-to-overlay-two-audio-files-using-ffmpeg

这实际上对我来说很好,并且可以完成工作,尽管我很想知道为什么袜子不起作用。

答案1

要使用 更改采样率sox,您需要使用rate效果重新采样(这会稍微降低质量)。-r如果文件格式不可用,或者有多种可能的速率(例如设备),则仅指定速率。

MP3 没有“正确”的采样率,如果两个输入 MP3 具有相同的采样率,并且只要保持该采样率,您将获得最佳结果。如果一种速率是另一种速率的倍数(例如 48000 和 24000),请使用较大的速率 (48000)。

有许多工具可以查询采样率,例如mediainfo

相关内容