2010-06-14 18 views
7

Esto funciona:¿Por qué se bloquea este gstreamer pipeline?

gst-launch-0.10 \ 
videotestsrc ! ffmpegcolorspace ! 'video/x-raw-yuv' ! mux. \ 
audiotestsrc ! audioconvert ! 'audio/x-raw-int,rate=44100,channels=1' ! mux. \ 
avimux name=mux ! filesink location=gst.avi 

puedo dejar correr el agua durante un tiempo, lo mata, y luego totem gst.avi muestra una tarjeta de prueba con buen tono.

Sin embargo, tratando de hacer algo más útil como

gst-launch-0.10 \ 
filesrc location=MVI_2034.AVI ! decodebin name=dec \ 
dec. ! ffmpegcolorspace ! 'video/x-raw-yuv' ! mux. \ 
dec. ! audioconvert ! 'audio/x-raw-int,rate=44100,channels=1' ! mux. \ 
avimux name=mux ! filesink location=gst.avi 

sólo muestra

Setting pipeline to PAUSED ... 
Pipeline is PREROLLING ... 

y luego puestos indefinidamente.

¿Cuál es el truco para obtener la versión con decodebin rodando?

Respuesta

3

Aha ... esto hace lo que yo quiero:

gst-launch-0.10 \ 
filesrc location=MVI_2034.AVI ! decodebin name=dec \ 
dec. ! queue ! ffmpegcolorspace ! 'video/x-raw-yuv' ! queue ! mux. \ 
dec. ! queue ! audioconvert ! 'audio/x-raw-int,channels=1' ! audioresample ! 'audio/x-raw-int,rate=44100' ! queue ! mux. \ 
avimux name=mux ! filesink location=gst.avi 

Los elementos de la cola (tanto iniciales y finales) no parecen ser cruciales.

Otros experimentos añadiendo cosas como videoflip o

videorate ! 'video/x-raw-yuv,framerate=25/1' 

en la parte de vídeo de la tubería de todo el trabajo como se esperaba.

+2

Cuando se produce muxing o demuxing, se requieren búferes. Ahí es donde entran los elementos de cola. Puede ajustarlo más especificando el número de almacenamientos intermedios en la cola. –

+0

Gracias por la sugerencia. Resulta que mientras la tubería de arriba funciona para un video de 640x480, tuve que aumentar los bytes de tamaño máximo de la cola de video para lograr que no se bloqueara con el contenido de 1280x720. – timday

0

su canalización parece ser correcta. sin embargo, gst-launch es una herramienta limitada; sugiero que se codifique el pipeline en python o ruby ​​para una mejor depuración.

Cuestiones relacionadas