Pipe à cru OpenCV images de FFmpeg

Ici est assez simple exemple de la lecture d'une web-cam à l'aide d'OpenCV est bindings python:

'''capture.py'''
import cv, sys
cap = cv.CaptureFromCAM(0)                    # 0 is for /dev/video0
while True :
    if not cv.GrabFrame(cap) : break
    frame = cv.RetrieveFrame(cap)
    sys.stdout.write( frame.tostring() )

Maintenant, je veux rediriger la sortie vers ffmpeg comme dans:

$ python capture.py | ffmpeg -f image2pipe -pix_fmt bgr8 -i - -s 640 x 480 foo.avi

Malheureusement, je ne peux pas obtenir le ffmpeg incantation magique tout à fait raison et il ne fonctionne pas avec

 libavutil 50.15. 1 /50.15. 1 
libavcodec 52.72. 2 /52.72. 2 
démultiplexeur 52.64. 2 /52.64. 2 
libavdevice 52. 2. 0 /52. 2. 0 
libavfilter 1.19. 0 /1.19. 0 
libswscale 0.11. 0 /0.11. 0 
libpostproc 51. 2. 0 /51. 2. 0 
Sortie de #0, avi, de 'out.avi: 
Stream #0.0: Vidéo: flv, yuv420p, 640 x 480, q=2-31, 19660 kb/s, 90k d'alcalinité, de 30 à confirmer 
[image2pipe @ 0x1508640]max_analyze_duration atteint 
[image2pipe @ 0x1508640]l'Estimation de la durée de débit, cela peut être inexacte 
Entrée #0, image2pipe, de la pipe:': 
Durée: N/A, bitrate: N/A 
Stream #0.0: Vidéo: 0x0000, bgr8, 25 fps, 25 tbr, 25 tbn, 25 tbc 
swScaler: 0 x 0 -> 640 x 480 est pas valide mise à l'échelle de la dimension 
  • Les images capturées sont certainement 640x480.
  • Je suis sûr que l'ordre des pixels de l'image OpenCV type (IplImage) est GBR, un octet par canal. Au moins, c'est ce qui semble provenir de l'appareil.

Je ne suis pas ffmpeg gourou. Quelqu'un a fait cela avec succès?

  • Oh man! L'idée de la tuyauterie de sortie de ffmpeg est très intelligent!
InformationsquelleAutor BrianTheLion | 2011-04-28