Tenho cerca de 70 arquivos mp4 e quero extrair os arquivos de áudio diretamente sem transcodificar ainda mais. Todos os arquivos mp4 possuem arquivos de áudio aac.
Entendo que posso usar o seguinte comando para extrair o arquivo de áudio de um dos arquivos mp4:
avconv -i "INPUT FILE" -map 0:1 -c:a copy "OUTPUT FILE"
Como faço para extrair todos os arquivos de áudio de todos os 70 arquivos mp4, para acabar com 70 arquivos aac?
bash /path/to/the/script %F
- como aqui-map
ainda pode levar o vídeo a ser considerado quando você alterna para outro formato de saída (se esse formato puder conter áudio e vídeo). É mais seguro mantê-lo como está.A resposta de Xiao é geralmente a mais útil se você tiver todos os arquivos em um diretório; mas se houver arquivos MP4 espalhados em diretórios diferentes, você poderá usar este
find
comando para converter todos eles.Isso usa uma forma ligeiramente diferente de substituição de string do bash no final: "$ {0 /% mp4 / m4a}" diz ao bash para substituir mp4 por m4a, mas somente se o mp4 estiver no final da string.
fonte
%
, ele substituirá a primeira instância da string que encontrar; você também pode usar#
para substituir apenas a string se ela estiver no início de uma variável; então $ {0 / mp4 / m4a} substituiria a primeira instância do mp4 por m4a (o que poderia ser um problema se você tiver nomes de arquivos realmente estranhos); e $ {0 / # mp4 / m4a} substituirão mp4 por m4a, mas somente se o valor da string da variável começar com mp4 (não é necessário usar aqui, obviamente, mas pode ser útil em outros lugares).Para evitar que vários arquivos sejam processados ao mesmo tempo (que podem usar muitos recursos), use
parallel
. Por padrão, ele realiza apenas um trabalho por vez. Se você deseja usar vários núcleos de CPU em paralelo, tenteparallel -j 4 ...
4 trabalhos em paralelo. Também confiraman parallel
.Essa linha extrai
aac
arquivos de áudio dos vídeos selecionados e os coloca emm4a
contêineres.Ao trabalhar diretamente na CLI, substitua
%F
pela lista de seus arquivos de entrada. Por exemplo*.mp4
.Inspirado por esta resposta, por uma resposta anterior a esta pergunta e pelo comentário de evilsoup a esta (dizendo: 'os arquivos raw aac não podem conter metadados; se você deseja manter os metadados dos arquivos originais, use m4a (que é apenas outro nome para mp4, mas é amplamente reconhecido por players de áudio) em vez de aac como uma extensão de arquivo ' ).
Eu uso esses comandos nas ações personalizadas Thunar,
limitando o aplicativo a vídeos que contêm
aac
áudio.Para ter uma janela de terminal aberta durante o processamento, que fecha no final, o comando pode ser alterado como:
fonte
Estendi a resposta de Xiao-Long Chen, transformando-a em um script que ignora arquivos quando o arquivo de saída é mais recente:
fonte