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


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"

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.