Tenho 228 arquivos mp4 (2,6 GB) e gostaria de extrair áudio deles (mp3 ou ogg). Quero extraí-los em lote - de preferência com o bash. Não tenho certeza se todos os arquivos usam o mesmo codec de áudio gravado em anos diferentes, variando de 2006 a 2012.
Eu quero percorrer todos eles, escolher o nome do arquivo, detectar o codec de áudio e usar ffmpeg para extrair o áudio.
É possível?
Respostas:
Você diz que deseja "extrair áudio deles (mp3 ou ogg)". Mas e se o áudio no arquivo mp4 não for um desses? você teria que transcodificar de qualquer maneira. Então, por que não deixar a detecção do formato de áudio em ffmpeg?
Para converter um arquivo:
Para converter muitos arquivos:
Obviamente, você pode selecionar qualquer parâmetro ffmpeg para a codificação de áudio que desejar, para definir coisas como taxa de bits e assim por diante.
Use
-acodec libmp3lame
e altere a extensão de.ogg
para.mp3
para codificação mp3.Se o que você deseja é realmente extrair o áudio, você pode simplesmente "copiar" a faixa de áudio para um arquivo usando
-acodec copy
. Obviamente, a principal diferença é que a transcodificação é lenta e exige muita CPU, enquanto a cópia é realmente rápida, pois você está apenas movendo bytes de um arquivo para outro. Veja como copiar apenas a faixa de áudio (supondo que esteja no formato mp3):Observe que, nesse caso, o formato do audiofile deve ser consistente com o que o contêiner possui (por exemplo, se o áudio for no formato AAC, é preciso dizer
audiofile.aac
). Você pode usar offprobe
comando para ver qual codec você possui, isso pode fornecer algumas informações:Uma maneira possível de analisar automaticamente o codec de áudio e nomear o arquivo de áudio adequadamente seria:
Notas: os arquivos de saída são criados no subdiretório criado no
output
início (se necessário). Para outros codecs que não o mp3 e o vorbis, ele converte o áudio em ogg. O Ubuntu 14.04 não possui ffmpeg nos repositórios padrão, mas você pode adicionar o repositório ppa: mc3man / trusty-media e instalar o pacote ffmpeg para obter o software necessário. Veja aqui para detalhes.fonte
ffprobe "$file" 2>&1 |sed -rn 's/.*Audio: (...), .*/\1/p'
; done Corrige isso.This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
ffmpeg
ouffprobe
não está disponível para o Ubuntu 14.04 ou posterior.ffmpeg
retornou ao Ubuntu em 15.04 , e parece com o joio do Libavavconv
eavprobe
foi removido em 15.10 .Como Nicolas Raoul afirmou, isso precisa ser atualizado. Aqui está a mesma linha que roadmr deu, mas usando avconv:
for vid in *.mp4; do avconv -i "$vid" "${vid%.mp4}.mp3"; done
fonte