Mp3ファイルのフォルダがたくさんありますが、各フォルダにあるすべてのmp3の合計期間のリストが必要です。それは理想的な解決策ですが、個々のmp3期間を添付してディレクトリ印刷を行ういくつかの手段も良いでしょう。どんな助けでも大歓迎です。 Windows 7 Home Premiumを実行していますが、他の多くのWindows/MacOSにアクセスできます。
編集-私は実際にフリーウェアプログラムTagscannerのエクスポート機能を使用して解決策を見つけました。
Mac OSまたは任意のUnixシステムで作業している場合は、 ffmpeg をインストールし、次のコマンドを使用して単一ファイルの期間を抽出できます。
ffmpeg -i filename.mp3 2>&1 | egrep "Duration" | cut -d ' ' -f 4 | sed s/,//
たとえば、「00:08:17.4」が返されます。
もちろん、これはシェルスクリプトで使用できます。たとえば、これにより、フォルダー内のすべての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
あなたはonelinerでそれを簡単に得ることができます:
$ for file in *.mp3; do mp3info -p "%S\n" "$file"; done | paste -sd+ | sed 's+\(.*\)+(\1)/60+' | bc
説明:
+
を区切り文字としてマージします()
を置き、60(分)で除算しますWİndowsExplorerのファイルリストに列を追加できます。 「長さ」プロパティ列をフォルダに追加します。次に、フォルダ内のmp3ファイルからすべてを選択します。 win.exp ...の下部の要約ペインで全長を確認できます。
(あなたの質問に対する完全な解決策ではありませんが、あなたは「どんな助けもいただければ幸いです:D)
その日の少し遅い時間(10年!)ですが、私はまったく同じことをしたかったのです。 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の合計期間。トロント1977 \は01:52:28です