2009-09-29 5 views
3

Mon application Delphi a créé une séquence appelée frame_001.png à frame_100.png.Utilisation de Delphi ou de FFMpeg pour créer un film à partir d'une séquence d'images

J'ai besoin que cela soit compilé dans un clip. Je pense que peut-être le plus simple est d'appeler ffmpeg de la ligne de commande, en fonction de leur documentation:

For creating a video from many images:

ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi

The syntax foo-%03d.jpeg specifies to use a decimal number composed of three digits padded with zeroes to express the sequence number. It is the same syntax supported by the C printf function, but only formats accepting a normal integer are suitable.

De: http://ffmpeg.org/ffmpeg-doc.html#SEC5

Cependant mes fichiers sont (sans perte) le format .png, donc je dois convertir à l'aide ImageMagick premier.

Ma ligne de commande est maintenant:

ffmpeg.exe -f image2 -i c:\temp\wentelreader\frame_%05d.jpg -r 12 foo.avi

Mais je reçois l'erreur:

[image2 @ 0x133a7d0]Could not find codec parameters (Video: mjpeg) c:\temp\wentelreader\Frame_C:\VID2EVA\Tools\Mencoder\wentel.bat5d.jpg: could not find codec parameters

Qu'est-ce que je fais mal?

Sinon, cela peut-il être fait facilement avec Delphi?

Répondre

2

Examinez le nom du fichier dans le message d'erreur. Cela ne peut probablement pas être juste. Le signe de pourcentage doit aller jusqu'au programme que vous exécutez, mais il est développé par le fichier de commandes à la place, où %0 développe le nom complet et le chemin d'accès du fichier. Doublez le signe pour cent dans le fichier batch:

ffmpeg.exe -f image2 -i c:\temp\wentelreader\frame_%%05d.jpg -r 12 foo.avi

Aussi, pourquoi voulez-vous cinq chiffres lorsque vous avez déjà dit que vos fichiers sont nommés comme frame_001.png, qui n'a que trois chiffres?

+0

Merci Rob! Évident maintenant rétrospectivement ... je reçois maintenant l'erreur suivante, il a essayé hors du fichier batch ainsi: c: \ temp \ wentelreader \ FRAME_% 05d.jpg: erreur d'E/S est survenue Habituellement, cela signifie ce fichier d'entrée est tronqué et/ou corrompu. Le cadre_001.png était juste un échantillon, j'ai décidé de citer mon code plus tard. Les vrais noms de fichiers sont Frame_00000.jpg - Frame_03961.jpg. –

+0

Ok mise à jour - en utilisant le png d'origine, il semble fonctionner maintenant. Je pense que j'ai eu le mauvais chemin pour les jpegs. Merci encore! –

2

ffmpeg peut créer un film à partir d'images png, pourquoi pensez-vous que vous devez les convertir en JPEG?

+1

J'ai eu une erreur antérieure qui m'a fait supposer que et il n'y a aucune mention de .png dans le manuel (rares!). Merci, bon à savoir. Maintenant, si je peux juste comprendre la ligne de commande :) –

+0

Même ligne de commande que jpeg. –

+0

png ou jpeg n'est pas le problème - Je n'arrive pas à faire fonctionner la ligne de commande car elle remplace le paramètre% 0d par le nom du fichier de commandes que je l'appelle. –

2

Les utilisateurs de DelphiFFMpeg ont produit un wrapper de composant pour FFMpeg. C'est très cher mais ça vaut le coup de le tester. Cependant, ce que vous voulez faire est très simple et la ligne de commande est plus que suffisante pour vous.

+0

Merci, semble très puissant, gardera à l'esprit. –

Questions connexes