将音频文件循环到给定的长度

Tom*_*tus 6 audio mp3 ffmpeg command-line sox

我目前面临一个问题,我需要获取一些 mp3 文件并制作另一个 mp3 文件,其中第一个正在播放给定的时间,如果需要则循环播放。最好我正在寻找命令行解决方案。尝试了 ffmpeg 和 sox,但找不到解决方案。所以现在我正在寻找一些选择。

进一步解释:假设我有一个文件 foo.mp3,我需要创建具有给定长度的 bar.mp3 文件,比如说 30 秒并且包含 foo.mp3 文件,如果 foo.mp3 小于 30秒它被循环了很多次,以至于它填满了整个 30 秒。我希望现在很清楚我的要求。

Eug*_*eck 11

ffmpeg 可以为您做到这一点,但您可能需要两个步骤

可选步骤 1:查找原始文件的长度

ffmpeg -i '/path/to/original.mp3' 2>&1 | grep 'Duration :'
Run Code Online (Sandbox Code Playgroud)

现在您可以计算所需的重复次数。作为替代方案,您可以只使用“安全”的重复次数,因为重复次数太多也无济于事。

第 2 步:循环文件并将其剪成所需的长度

使用此内容创建“concat.txt”

file '/path/to/original.mp3'
file '/path/to/original.mp3'
...
file '/path/to/original.mp3'
file '/path/to/original.mp3'
file '/path/to/original.mp3'
Run Code Online (Sandbox Code Playgroud)

它必须至少有必要的重复行数,但是,再一次,更多不会伤害,所以你可以使用安全(太高)的行数

并运行 ffmpeg(假设您想要 123.456 秒):

ffmpeg -t 123.456 -f concat -i concat.txt -c copy -t 123.456 output.mp3
Run Code Online (Sandbox Code Playgroud)


小智 6

这可以通过使用(附加)以下命令来实现:

-stream_loop -1 -i D:\music\mp4.mp3
Run Code Online (Sandbox Code Playgroud)

这意味着 D:\music\mp4.mp3 文件应该无限循环,直到视频结束。

https://ffmpeg.org/ffmpeg.html