Eu tenho um monte de arquivos mp3 com vários tamanhos. Quero reduzi-lo para 50% -60% de comprimento. Diz, de 1 minuto a 30 segundos. Deve ser trivial usando ffmpeg. Mas não sei como determinar o tamanho original como base para o processamento usando o ffmpeg.
Alguém tem uma ideia?
\n
para imprimir uma nova linha também.> mp3info -p "%S\n" sample.mp3
// tempo total em segundosffmpeg
imprimirá tudo o que sabe sobre o arquivo se você não fornecer outros argumentos. Usegrep
para remover tudo, exceto a "Duração":Você também pode usar
mplayer
. Grep para a linha "ID_LENGTH =":fonte
TOTLENGTH=0; for f in *.mp3; do LENGTH=$(mplayer -ao null -identify -frames 0 "$f" 2>&1 | awk -F= '/ID_LENGTH/ {print $2}' | awk -F. '{print $1}'); TOTLENGTH=$(($TOTLENGTH + $LENGTH)); done; echo $TOTLENGTH
imprimir a duração total do áudio em todos os arquivos, em segundos. Provavelmente, isso pode ser feito com mais eficiência, mas, como o escrevi como único, foi bom o suficiente para minhas necessidades. (A segunda chamada awk retira decimais, de modo que o resultado não é 100% exato, mas, novamente, bom o suficiente para minhas necessidades.)Estimating duration from bitrate, this may be inaccurate
. Eu acho que essa resposta é válida apenas com o MP3 de taxa de bits constante .Curiosamente, o aplicativo EXIFTool fornece a duração do MP3 como a última linha!
fonte
Apenas outra maneira de obter a duração apenas usando
ffmpeg
egrep
:fonte
As soluções usando
ffmpeg
me parecem um pouco frágeis, pois estão analisando uma saída que não é totalmente projetada como uma interface. Dito isto, eles provavelmente continuarão a trabalhar por vários anos, independentemente.ffmpeg
vem com uma ferramentaffprobe
para obter informações sobre arquivos de áudio (vários formatos, incluindo mp3) e pode produzir saída legível por máquina. O comando a seguir obtém a duração da música.fonte
ffprobe -show_entries stream=duration -of compact=p=0:nk=1 -v fatal song.mp3
Pessoalmente, uso o Mplayer para extrair as informações, principalmente porque já as tenho instaladas e não posso me incomodar em instalar novos softwares desnecessariamente. A vantagem disso é que ele não se limita aos arquivos mp3 em particular e deve funcionar com qualquer arquivo de mídia que o Mplayer possa manipular. A seguinte linha retornará a duração da faixa em segundos.
fonte
Você pode usar o ffmpeg para obter a duração do arquivo. Apenas use:
fonte
Eu tive o mesmo problema e descobri que o comando mplayer (goldPseudo) funcionou bem, mas descobri que, se você abrir um álbum no RhythmBox, verá que sua linha de status fornece o número de faixas, o tempo total de reprodução e o tamanho do disco.
fonte
Aqui está o meu simples usando a referência acima.
Envio esse valor para a variável mp3_full_length
Obrigado acima das pessoas! Eu uso suas idéias e conhecimentos Obrigado pela leitura, tenha um bom dia! ;)
fonte