导出文件夹中 mp3 文件的总长度?

导出文件夹中 mp3 文件的总长度?

我有许多 mp3 文件夹,我想列出每个文件夹中所有 mp3 的总时长。这将是理想的解决方案,但执行目录打印并附加单个 mp3 时长的方法也不错。任何帮助都将不胜感激。我运行的是 Windows 7 Home Premium,但可以访问许多其他 Windows/Mac OS。

编辑 - 我实际上找到了使用免费软件程序 Tagscanner 中的导出功能的解决方案。

答案1

如果你使用的是 Mac OS 或任何 Unix 系统,你可以安装ffmpeg并使用以下命令提取单个文件的时长:

ffmpeg -i filename.mp3 2>&1 | egrep "Duration" | cut -d ' ' -f 4 | sed s/,//

例如将返回“00:08:17.4”。

当然,您可以在 shell 脚本中使用它,例如,这将在右侧列出文件夹中的所有 mp3 文件及其持续时间。

#!/bin/bash
# call me with mp3length.sh directory
# e.g. ./mp3length . 
# or ./mp3length my-mp3-collection

for file in $1/*.mp3
do
    echo -ne $file "\t"
    ffmpeg -i "$file" 2>&1 | egrep "Duration"| cut -d ' ' -f 4 | sed s/,//
done

以下脚本返回全部的持续时间(小时):

#!/bin/bash
# call me with mp3length.sh directory
# e.g. ./mp3length .
# or ./mp3length my-mp3-collection


list-individual-times() {
    for file in $1/*.mp3
    do
        echo -ne $file "\t"
        ffmpeg -i "$file" 2>&1 | egrep "Duration"| cut -d ' ' -f 4 | sed s/,//
    done
}

TOTAL_HOURS=$(list-individual-times $1 | cut -f2 | xargs -I hhmmss date -u -d "jan 1 1970 hhmmss" +%s | awk '{s+=$1}END{print s/3600}')
echo "Total hours: ${TOTAL_HOURS}"

答案2

您可以使用一行代码轻松获得它:

$ for file in *.mp3; do mp3info -p "%S\n" "$file"; done | paste -sd+ | sed 's+\(.*\)+(\1)/60+' | bc

解释:

  • mp3信息:获取单个 mp3 的长度(以秒为单位)
  • 粘贴:合并列结果为+分隔符
  • sed:将()总和除以 60(分钟
  • 公元前:执行算术运算

答案3

您可以在 Windows 资源管理器的文件列表中添加一列。为文件夹添加“长度”属性列。然后选择文件夹中的所有 mp3 文件。您可以在 win.exp 的底部摘要窗格中看到总长度...

(这不是您问题的完整解决方案,但您说“如能提供任何帮助,我们将不胜感激:D)

答案4

虽然有点晚了(十年了!),但我也想做同样的事情。感谢Windows Powershell,这是我今天写的一个小脚本。

$path = '~\MS Subbulakshmi\1. Toronto 1977\'
$shell = New-Object -COMObject Shell.Application
$folder = $path
$shellfolder = $shell.Namespace($folder)
$total_duration = [timespan] 0
foreach($file in Get-ChildItem $folder)
{
    $shellfile = $shellfolder.ParseName($file.Name)
    $total_duration = $total_duration + [timespan]$shellfolder.GetDetailsOf($shellfile, 27);
}
Write-Host "Total Duration of $folder is $total_duration"

输出将是这样的

~\MS Subbulakshmi\1. Toronto 1977\ 的总时长为 01:52:28

相关内容