Converta arquivos de áudio em massa para uma taxa de bits especificada, mas somente se a taxa de bits for maior que a taxa de bits usando ffmpeg

1

Eu tenho um monte de arquivos de áudio em um diretório, alguns são 128Kbps, alguns são maiores.

Eu quero converter aqueles com uma taxa de bits maior que 128Kbps para 128Kbps para economizar espaço. Eu tentei escrever um script de shell para fazer isso:

#!/bin/bash

FILES="*.mp3"

for F in $FILES

do
newname='basename "$F" -smaller.mp3'
ffmpeg -i "$F" -acodec libmp3lame -ac 2 -ab 128k -ar 44100 "$newname.mp3"

done

Mas também converte arquivos que já são 128Kbps e, portanto, levaria muito mais tempo para ser concluído.

Como eu posso verificar se a taxa de bits de um arquivo é maior que 128Kbps e convertê-lo para 128Kbps somente se for.

    
por IronPig 03.06.2018 / 16:22

1 resposta

1

Usando ffprobe

#!/bin/bash

for file in *.mp3
do
    brate=$(ffprobe "$file" |& grep -Eo 'bitrate: [0-9]+' | cut -d' ' -f2)
    if [[ "$brate" -gt 128 ]]
    then
        newname=$(basename "$file" -smaller.mp3)
        ffmpeg -i "$file" -acodec libmp3lame -ac 2 -ab 128k -ar 44100 "${newname}.mp3"
    fi
done
    
por 03.06.2018 / 16:47