2009-04-15 10 views
2

Je travaille avec un appareil photo hcm280a Panasonic qui peut être contrôlé par mon logiciel, Il génère un flux de fichiers JPEG qui sont énormes et je veux convertir ce flux en un flux FLV de préférence avec un bonne ration de compressionConversion de flux de fichiers jpg en flux FLV

FFMpeg fait-il cela? Je suis fondamentalement à la recherche d'un logiciel ouvert open source (ou logiciel commercial) qui peut générer ce média en streaming pour moi. Encore une fois, mon entrée est un flux de fichiers jpg qui proviennent du serveur de la caméra.

Toute idée ou commentaire serait grandement apprécié Merci

+0

celui-ci fait l'affaire: http: // sourceforge.net/projects/mjpg-streamer/ –

Répondre

1

Ce n'est pas spécifiquement une réponse à votre question, mais www.doom9.org est une excellente source de vidéo d'information connexe, la peine de vérifier les téléchargements et les guides

+0

Merci beaucoup semble très intéressant – Mark

3

Réponses à this question confirment que FFmpeg est capable de construire une vidéo à partir d'une séquence d'images. Cependant, aucun détail n'est donné ici.

Dans FFmpeg FAQ vous pouvez trouver:

3.2 How do I encode single pictures into movies?

Tout d'abord, renommer vos images à suivre une séquence numérique. Par exemple, img1.jpg, img2.jpg, img3.jpg, ... Ensuite, vous pouvez exécuter:

ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg 

Notez que %d est remplacé par le numéro d'image.

img%03d.jpg signifie que la séquence img001.jpg, img002.jpg, etc ...

La même logique est utilisé pour tous les formats d'image qui lit ffmpeg.

+0

Mais j'ai des flux d'images, je n'ai pas beaucoup d'images et d'images quand je cours ma webcam, je veux quelque chose qui fonctionne en continu sur le serveur et qui code les images dans le flux ils arrivent – Mark

+0

Désolé, j'ai été dérouté par l'expression "fichiers jpeg". – mouviciel

+0

Ensuite, vous devrez compiler un programme qui utilise directement les bibliothèques ffmpeg (libavcodec/libavformat). Les outils de ligne de commande ne peuvent pas réellement être diffusés, bien que vous puissiez les truquer en regroupant une certaine quantité de fichiers JPEG en tant que fichiers dans de courts flux lus de bout en bout. – bobince

1

Pour le faire avec ffmpeg. Je suppose que votre cadre sont des noms comme frame0000.jpg, frame0001.jpg ...

ffmpeg -f image2 -r 1 -i frame%04d.jpg -s 320x240 -y -an -r 24 out.flv 

-r 1 dit que flux d'entrée est une image par seconde (une image par seconde), choisissez celui que vous aimez -s 320x240 échelles tous les cadres -y -an pour remplacer le fichier de sortie et pour désactiver l'enregistrement audio -r 24 avoir 24 images par seconde dans le flux de sortie

Vous pouvez également envisager de mettre -sameq au milieu de préserver la qualité autant que possible.

Pour renommer toutes vos images correctement, vous pouvez utiliser cette bash une doublure:

i=0 ; for f in *.jpg ; do mv "$f" $(printf "frame%04d.jpg" $i) ; i=$((i+1)) ; done 
+0

Pas sûr si nous sommes sur une même page, je suppose que votre méthode génère des FLV à partir d'un tas de jpgs déjà stockés sur le disque dur est-ce exact? Mes jpeg arrivent alors que ma webcam est en cours d'exécution, donc je ne peux pas supposer qu'ils existent tous déjà – Mark

+0

Oui. Cela signifie-t-il que votre caméra génère un flux MJPEG? http://en.wikipedia.org/wiki/Motion_JPEG. Si c'est le cas, vous pouvez également convertir ce flux. Probablement quelque chose comme -f mjpeg i streamfile fera l'affaire. Ou est-ce un appareil V4L/V4L2? Ensuite, vous pouvez aussi saisir le flux, comme -f mjpeg -vd/dev/video0 – sastanin

+0

Ou votre caméra écrit-elle un JPEG supplémentaire de temps en temps? Dans ce cas, je ne connais pas de solution. – sastanin