我需要将 wav 文件分割成多个 10 秒长的 wav 文件,但是每个生成的 wav 文件必须长度正好是 10 秒,如果需要添加静音 - 因此,如果 wav 文件的持续时间(以秒为单位)不是 10 的倍数,则最后一个 wav 文件应该用静音填充。
我看过一些答案(1,2,3)其中展示了如何使用 sox 和 ffmpeg 将文件分割成相等长度的块:
$ ffmpeg -i file.wav -f segment -segment_time 10 -c copy out%03d.wav
$ sox file.wav output-.wav trim 0 10 : newfile : restart
但这些命令生成的最后一个文件通常长度不到 10 秒。有没有办法在同一个命令中分割 wav 文件,并根据需要填充最后一个文件?
答案1
拆分文件,检查生成的文件 ( for i in *wav
)、if (length < 10 seconds)
填充它们。
要获取波形文件长度:
sox --info -D file.wav
填充波形文件:https://superuser.com/questions/579008/add-1-second-of-silence-to-audio-through-ffmpeg
也许做一些计算:-)