我正在尝试覆盖两个文件(将它们合并为一个,以便它们同时放置)。
选项包括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
。