1
我有一个包含数百个wav
文件的文件夹。我想分别获取最短的wav文件和最大长度的最小长度(以毫秒为单位)。我也想得到所有文件的总长度。获取wav文件的最小值,最大值和总长度
我知道我可以使用sox
和sed
得到一个wav文件的长度,这样
sox some_file.wav -n stat 2>&1 | sed -n 's#^Length (seconds):[^0-9]*\([0-9.]*\)$#\1#p'
我能想到的最简单的方法是使用Python
脚本,循环槽我的所有文件,因为它们都具有通用的连续文件名({001-800} .wav),并调用上面的代码。不过,我不知道该怎么做。我知道subprocess
应该是使用的模块,但我不知道如何管道。
目前我坚持用沿着这条线的东西:
import subprocess
import shlex
min = 1000
max = 0
total = 0
for i in range(1,801):
cmd = "sox %03d.wav -n stat 2>&1 | sed -n 's#^Length (seconds):[^0-9]*\([0-9.]*\)$#\1#p" % i
subprocess.call(shlex.split(cmd))
# here is where I would catch the output and do the calculations with min, max, and total
相关:[检索subprocess.call()]的输出(http://stackoverflow.com/q/1996518/4279) – jfs
如果你在linux下(如果你使用sox命令,我认为是这种情况),你可以简单地使用一个shell脚本。 – Holt