Conversion par lots de fichiers * .avi à l'aide de ffmpeg

13

J'essaie de convertir plus de 20 fichiers .avi dans un lot à l'aide de ffmpeg.

J'ai le suivant

@echo off.

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

dans mon fichier .bat mais cela ne fonctionne pas. Comment puis-je le faire fonctionner sous Windows OS. Oh, et oui tous les fichiers sont dans le même dossier.

Le message d'erreur que j'obtiens:

Le fichier était inattendu à ce moment

Darius
la source
Et qu'est-ce qui ne fonctionne pas exactement?
slhck
Si vous pouvez m'indiquer comment obtenir le message d'erreur car la cmd disparaît très rapidement, je serai en mesure de vous dire avec quoi j'ai un problème.
Darius
Vous devriez pouvoir simplement ouvrir une fenêtre de commande avant ( Démarrer »Exécuter…»cmd ) puis exécuter le fichier de commandes en utilisant son chemin complet à partir de là. Que voulez-vous réellement faire avec les vidéos? De quel genre de vidéos s'agit-il? Avez-vous juste besoin de les déplacer vers un conteneur MPG? Ou avez-vous besoin de les redimensionner? Ou avez-vous spécifiquement besoin du msmpeg4v2codec?
slhck
Les fichiers sont extraits d'un DVR et comportent plus de 1 Go de clips de 5 minutes. Oui, le logiciel DVR est pathétique à la compression. Le codec fonctionne car il prend des fichiers de 1 Go à environ 7 Mo de fichiers qui sont plus faciles à gérer. Et lorsque j'essaie d'exécuter ce lot, j'obtiens le message "Le fichier était inattendu à ce moment".
Darius
Je vois. Si vous ne vous souciez pas du codec vidéo et du conteneur résultants, je suggère d'utiliser x264 comme encodeur à la place, ce qui donne une bien meilleure qualité que MPEG-4. La commande serait quelque chose comme ffmpeg -i input.avi -c:v libx264 -crf 23 -s 640x480 output.mp4où la valeur CRF définit la qualité (moins c'est mieux, plus c'est pire, des valeurs sensées de 19 à 24). Voir aussi: Convertir d'anciennes vidéos pour avoir des tailles plus petites et Quels paramètres dois-je rechercher pour réduire la taille d'un fichier .MOV?
slhck

Réponses:

26

Votre fichier de commandes n'est pas au format correct pour un script de chauve-souris Windows. Au lieu de cela, votre script semble être destiné à Linux. Vous devrez modifier le script pour utiliser une boucle for prise en charge par le shell Windows.

Vous trouverez ci-dessous un exemple de la façon d'accomplir cette tâche en utilisant une boucle Windows pour. Mettez simplement la ligne ci-dessous dans votre fichier batch et déplacez le script dans le même répertoire que les fichiers avi, puis exécutez-le.

for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"
Brett
la source
Avec cela, je reçois[NULL @ 000000000037e360] Unable to find a suitable output format for 'outputfile.avi.mpg;' outputfile.avi.mpg:: Invalid argument
Darius
1
Besoin de supprimer ce point-virgule de la fin de la ligne
Brett