Converti in batch i file * .avi usando ffmpeg


13

Sto cercando di convertire oltre 20 file .avi in ​​un batch usando ffmpeg.

Ho il seguente

@echo off.

for file in *.avi
do
   ffmpeg -i "$file" -s 640x480 -vcodec msmpeg4v2 "'basename "$file" .avi'.mpg';
done

nel mio file .bat ma non funziona. Come posso farlo funzionare con il sistema operativo Windows. Oh, e sì, tutti i file si trovano nella stessa cartella.

Il messaggio di errore che visualizzo:

Il file era imprevisto in questo momento


E cosa non funziona esattamente?
slhck,

Se puoi indicarmi come ottenere il messaggio di errore poiché il cmd scompare molto velocemente, sarò in grado di dirti con cosa sto avendo problemi.
Dario il

Dovresti essere in grado di aprire una finestra di comando prima ( Start »Esegui ...»cmd ) e quindi eseguire il file batch utilizzando il suo percorso completo da lì. Cosa vuoi veramente fare con i video? Che tipo di video sono questi? Hai solo bisogno di spostarli in un contenitore MPG? O devi ridimensionarli? O hai bisogno specificamente del msmpeg4v2codec?
slhck,

I file sono tolti da un DVR e sono clip da oltre 1 GB e 5 minuti. Sì, il software DVR è patetico alla compressione. Il codec funziona poiché richiede file da 1 GB a file di circa 7 MB che sono più gestibili. E quando provo ad eseguire quel batch ricevo il messaggio "Il file era inaspettato in questo momento".
Dario,

Vedo. Se non ti interessa il codec e il contenitore video risultanti, suggerirei di utilizzare x264 come codificatore, il che si traduce in una qualità molto migliore rispetto a MPEG-4. Il comando sarebbe qualcosa di simile al punto in ffmpeg -i input.avi -c:v libx264 -crf 23 -s 640x480 output.mp4cui il valore CRF imposta la qualità (meno è meglio, più è peggio, valori sani da 19 a 24). Vedi anche: Converti vecchi video per avere dimensioni più piccole e quali parametri dovrei guardare per ridurre le dimensioni di un file .MOV?
slhck,

Risposte:


26

Il file batch non è nel formato corretto per uno script bat Windows. Invece il tuo script sembra destinato a Linux. Sarà necessario modificare lo script per utilizzare un ciclo for supportato dalla shell di Windows.

Di seguito è riportato un esempio di come eseguire questa attività utilizzando un ciclo windows per. Basta inserire la riga seguente nel file batch e spostare lo script nella stessa directory dei file avi, quindi eseguirlo.

for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"

Con questo ottengo[NULL @ 000000000037e360] Unable to find a suitable output format for 'outputfile.avi.mpg;' outputfile.avi.mpg:: Invalid argument
Dario il

1
È necessario rimuovere quel punto e virgola dalla fine della linea
Brett
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.