这是对这个老问题的后续问题问题。这次我在一个文件夹中有一堆 mp3 和 smil 文件。两种文件类型的命名方式相同,并且 mp3 文件与同名的 smil 文件配对。例如,file-1.mp3 和 file-1.smil 是一对。我需要将 mp3 文件的持续时间以这种形式“00:00:00.000”写入其 smil 文件。例如,
clipEnd="0:01:15.123"
。
使用旧问题中的先前代码,通过 Powershell 可以实现这一点吗?
Set-Location "C:\htmlfiles"
# for each html file
gci *.html | % {
# select the number from the filename
$number = $_.BaseName -replace '\D+(\d+)','$1'
# prepare the new image file name
$newImageName = 'image' + $number + '.jpg'
# get the content of the html file and replace the old image name with the new name
(gc $_).Replace('image.jpg',$newImageName) | sc $_
}
答案1
除非有内置的 Windows 函数,否则 sox 应该可以让你相当轻松地提取此信息。
这是一个从波形中提取的示例,但它应该与 mp3 相同。
https://stackoverflow.com/questions/4534372/get-length-of-wav-from-sox-output
但我认为可能有更好的方法来做到这一点,但这将是一条支持大量文件格式而不仅仅是 mp3 的途径。