Recursivamente converter mkv para mp4 com avconv

3

Eu preciso criar um script que possa converter todos os arquivos .mkv para .mp4 em um diretório inicial e todos os subdiretórios abaixo dele.

Eu consegui converter arquivos um de cada vez usando:

avconv -i input.mkv -codec copy output.mp4

e converter todos os arquivos no diretório atual não seria muito difícil. Mas depois de horas de pesquisa, não consigo encontrar uma maneira de fazer isso de forma recursiva.

Acredito que preciso usar o comando find, mas sou relativamente novo no Linux e me perco completamente na combinação de find e avconv para realizar o que preciso.

    
por Brandon Hood 27.10.2014 / 07:35

1 resposta

4

Você precisa ativar a globalização recursiva no Bash:

shopt -s globstar

Em seguida, um loop simples, substituindo o nome do arquivo de saída:

for f in **/*.mkv; do avconv -i "$f" -c copy "${f%.mkv}.mp4"; done

Observe que isso pode falhar em vídeos que contenham codecs que os contêineres MP4 não podem manipular. O MP4 é mais restritivo que o MKV, que basicamente pode incluir todos os codecs.

    
por 27.10.2014 / 07:51