Processo em lote ffmpeg?

1

Dado um vídeo encapsulado em AVI com áudio WMA2 e vídeo MP4, como faço para passar o vídeo, converta o áudio para MP3; então reencapsule o arquivo inteiro em um AVI?

ffmpeg -i "foo bar.avi" -acodec libmp3lame "Converted\foo bar.avi"

Agora, como faço o mesmo comando para cada arquivo .avi nesse diretório?

(precisa de uma solução usando o bash ou o Windows CLI [ for ?])

    
por A T 04.12.2012 / 12:40

4 respostas

0

Solução Python

from sh import ffmpeg
from os import listdir
from os.path import split
from sys import argv

[ffmpeg("-i '{0}' -acodec libmp3lame 'Converted\{0}'".format(_file))
 for _file in sum([listdir(split(arg)[0]) for arg in argv], [])]
    
por 04.12.2012 / 12:40
3

Isso não funciona simplesmente?

for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame "Converted\$file";done

Editar :

Parece haver um problema de barra invertida ...

Tente isto:

for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame 'Converted\'"$file";done

ou isto:

for file in *.avi;do ffmpeg -i "$file" -acodec libmp3lame 'Converted\'"$file";done
    
por 04.12.2012 / 12:45
1

Em bash , o seguinte fará o que você deseja, se você executá-lo no diretório que possui os arquivos .avi :

#!/bin/bash
for file in *.avi; do
    ffmpeg -i "$file" -c:a libmp3lame "Converted\$file";
done;
    
por 04.12.2012 / 12:45
0

Após um teste & conversa de erro com os comandos envolvidos, descobri que isso funciona em um shell bash

for i in *.ts; do ffmpeg -i "$i" -threads 6 -f mpegts -vcodec libx264 -preset slow -bufsize 8000 -async 48000 -acodec ac3 -ab 384k -n subdir/"${i%}"; done

isso cria uma versão compactada de alta qualidade de arquivos .ts de entrada com o mesmo nome, mas em um subdiretório. Eu estou supondo que não vai escrever um subdir se ele não existir, então você teria que especificar um que substitui o que estou chamando de "subdir". Também usei -n para evitar que sobrescrevesse arquivos que eu processei individualmente antes de descobrir a sintaxe adequada para esse processo em lote (tenho um processador de 6 núcleos, então "-threads" devem ser ajustados também para o seu hardware)

    
por 21.03.2013 / 18:42