Експортувати загальну довжину файлів mp3 у папку?


2

У мене є багато папок з mp3-файлами, і я хотів би мати список сукупної тривалості всіх mp3-файлів у кожній папці. Це було б ідеальним рішенням, але деякі засоби для друку папок, що додають індивідуальну тривалість mp3, також були б хорошими. Будь-яка допомога буде дуже цінується. Я використовую Windows 7 Home Premium, але маю доступ до ряду інших ОС Windows / Mac.

Редагувати - я дійсно знайшов рішення, використовуючи функцію експорту в безкоштовній програмі тегів.


У мене є програма WPF, яку я написав, що буде робити це (серед інших речей), але я ще не завантажив його ніде - все ще дійсно для внутрішнього використання. Однак, якщо нічого іншого не придумати, я можу дати вам копію.
ChrisF

Відповіді:


5

Якщо ви працюєте на 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

4

Ви можете отримати його з одним лайнером:

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

Пояснюючи:

  • mp3info : отримує індивідуальну довжину mp3 в секундах
  • пасти : результат злиття стовпця з + як роздільник
  • sed : put () навколо суми і ділиться на 60 (хвилини
  • до н.е. : виконувати арифметичні операції

2

Ви можете додати стовпець до списку файлів у Wİndows Explorer. Додайте властивість "Довжина" colum до папки. Потім виділіть всі файли mp3 у папці. Ви можете побачити загальну довжину в нижній панелі резюме win.exp ...

(Не все рішення вашого питання, але ви сказали "будь-яка допомога буде оцінено: D)


Спасибі, це дуже те, що я роблю зараз. Проблема полягає в тому, що ці файли розташовані на багатьох жорстких дисках, тому я хочу експортувати цю інформацію для використання в електронних таблицях і тому подібне, не роблячи цього вручну.
Anastasia

1

Трохи пізно вдень (десятиліття!), Але я хотів зробити точно те ж саме. Завдяки 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"

Вихід буде таким, як це

Загальна тривалість - ~ Субулакшмі \ t Торонто 1977 р. 01:52:28

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.