Exportar comprimento total de arquivos mp3 em uma pasta?

2

Eu tenho muitas pastas de arquivos mp3, e gostaria de ter uma lista da duração combinada de todos os mp3s em cada pasta. Essa seria a solução ideal, mas alguns meios de fazer uma impressão de diretório anexando a duração do mp3 individual também seriam bons. Qualquer ajuda seria muito apreciada. Estou executando o Windows 7 Home Premium, mas tenho acesso a vários outros sistemas operacionais Windows / Mac.

Edit - Eu realmente encontrei uma solução usando a função de exportação no programa freeware Tagscanner.

    
por Anastasia 11.01.2011 / 22:24

4 respostas

5

Se você estiver trabalhando no Mac OS ou em qualquer sistema Unix, poderá instalar o ffmpeg e usar o comando a seguir para extrair a duração de um único arquivo:

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

Por exemplo, retorne "00: 08: 17.4".

Você pode usar isso em um shell script, é claro, então, por exemplo, isso listaria todos os arquivos mp3 em uma pasta e a duração deles para a direita.

#!/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
    
por 11.01.2011 / 22:50
4

Você pode obtê-lo facilmente com o oneliner:

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

Explicando:

  • mp3info : obtém o tamanho do mp3 individual em segundos
  • colar : mescla o resultado da coluna com + como separador
  • sed : coloque () em torno da soma e divida por 60 (minutos
  • bc : executa operações aritméticas
por 30.07.2015 / 00:43
2

Você pode adicionar uma coluna à lista de arquivos no Windows Explorer. Adicione a coluna de propriedade "Comprimento" à pasta. Em seguida, selecione todos os arquivos mp3 na pasta. Você pode ver o comprimento total no painel de resumo inferior de win.exp ...

(Não a solução completa para a sua pergunta, mas você disse "qualquer ajuda seria apreciada: D)

    
por 11.01.2011 / 22:41
1

Um pouco no final do dia (década!), mas eu queria fazer exatamente a mesma coisa. Graças ao Windows Powershell , aqui está um pequeno script que escrevi hoje.

$path = '~\MS Subbulakshmi. 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"

A saída seria algo assim

Total Duration of ~\MS Subbulakshmi. Toronto 1977\ is 01:52:28

    
por 04.04.2015 / 12:14