Converta recursivamente mkv para mp4 com avconv

Converta recursivamente mkv para mp4 com avconv

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

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 recursivamente.

Descobri que preciso usar o comando find, mas sou relativamente novo no Linux e fico completamente perdido ao combinar find e avconv para realizar o que preciso.

Responder1

Você precisa habilitar o globbing recursivo no Bash:

shopt -s globstar

Então, 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 contêm codecs que os contêineres MP4 não suportam. MP4 é mais restritivo que MKV, que pode incluir basicamente todos os codecs.

informação relacionada