web-dev-qa-db-ja.com

フォルダ内のmp3ファイルの全長をエクスポートしますか?

Mp3ファイルのフォルダがたくさんありますが、各フォルダにあるすべてのmp3の合計期間のリストが必要です。それは理想的な解決策ですが、個々のmp3期間を添付してディレクトリ印刷を行ういくつかの手段も良いでしょう。どんな助けでも大歓迎です。 Windows 7 Home Premiumを実行していますが、他の多くのWindows/MacOSにアクセスできます。

編集-私は実際にフリーウェアプログラムTagscannerのエクスポート機能を使用して解決策を見つけました。

2
Anastasia

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
5
slhck

あなたはonelinerでそれを簡単に得ることができます:

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

説明:

  • mp3info:個々のmp3の長さを秒単位で取得します
  • 貼り付け:列の結果を+を区切り文字としてマージします
  • sed:合計の周りに()を置き、60(分)で除算します
  • bc:算術演算を実行します
4
albfan

WİndowsExplorerのファイルリストに列を追加できます。 「長さ」プロパティ列をフォルダに追加します。次に、フォルダ内のmp3ファイルからすべてを選択します。 win.exp ...の下部の要約ペインで全長を確認できます。

(あなたの質問に対する完全な解決策ではありませんが、あなたは「どんな助けもいただければ幸いです:D)

2
spinodal

その日の少し遅い時間(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です

1
Rahul Purush