读取 mp3 文件的时长并使用 Powershell 将其写入文本文件

读取 mp3 文件的时长并使用 Powershell 将其写入文本文件

这是对这个老问题的后续问题问题。这次我在一个文件夹中有一堆 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 应该可以让你相当轻松地提取此信息。

http://sox.sourceforge.net/

这是一个从波形中提取的示例,但它应该与 mp3 相同。

https://stackoverflow.com/questions/4534372/get-length-of-wav-from-sox-output

但我认为可能有更好的方法来做到这一点,但这将是一条支持大量文件格式而不仅仅是 mp3 的途径。

相关内容