Precisa escrever um script bash que irá pegar cada arquivo de vídeo em uma pasta e aplicar uma operação ffmpeg a eles

1

Essencialmente, uma aplicação em lote do seguinte comando:

ffmpeg -i "01.mkv" -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy "test.mkv"

Minha esperança seria simplesmente executar isso em um diretório e ter todos os arquivos recém-corrigidos com os nomes de arquivos antigos e os arquivos antigos anexados com "old_" ou algo similar. Eu não sei quase nada sobre o bash, mas tenho alguma experiência com c ++ e java, então a terminologia não é um problema, eu apenas nunca olhei bash antes. Obrigado!

EDIT: Para ser claro, gostaria que o novo arquivo fosse "01.mkv" e o arquivo antigo fosse renomeado para "old_01.mkv". Minha pesquisa me disse que isso provavelmente vai exigir gawk, mas eu sei ainda menos sobre isso do que eu faço bash.

EDIT2: Eu percebi que deveria ter fornecido o que eu tinha conseguido juntar até agora sozinho.

#!/bin/bash
    for i in $( ls ); do
        ffmpeg -i $i -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy $i
    done
    
por Jason Murray 03.12.2017 / 00:13

1 resposta

4

Ok, depois de brincar com isso por algumas horas depois de obter um resultado de busca do Google que eu não tinha visto antes, finalmente percebi isso. Esta é a resposta, no caso de alguém aparecer e precisar fazer algo assim.

#!/bin/bash
for file in *.mkv;
    do
        oldFile=old_"$file"
        mv "$file" "$oldFile"
        ffmpeg -i "$oldFile" -map 0:a? -map 0:s? -map 0:v -c:v copy -c:a ac3 -c:s copy "$file"
    done
    
por 03.12.2017 / 01:42

Tags