2010-06-14 4 views
7

Cela fonctionne:Pourquoi cette canalisation gstreamer se bloque-t-elle?

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 

je peux le laisser fonctionner pendant un certain temps, tuez-le, puis totem gst.avi affiche une carte de test agréable avec le ton.

Cependant, en essayant de faire quelque chose de plus utile comme

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 

il affiche juste

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

puis stands indéfiniment.

Quel est le truc pour obtenir la version avec décodeur roulant?

Répondre

3

Aha ... cela fait ce que je veux:

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 

Les éléments de file d'attente (à la fois avant et arrière) ne semblent être cruciales.

D'autres expériences en ajoutant des choses comme videoflip ou

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

dans la partie vidéo du pipeline de travail tout comme prévu.

+2

Lors du multiplexage ou du démultiplexage, il est nécessaire d'avoir des tampons. C'est là qu'interviennent les éléments de la file d'attente. Vous pouvez affiner le réglage en spécifiant le nombre de tampons dans la file d'attente. –

+0

Merci pour le conseil. Il s'avère que, alors que le pipeline ci-dessus fonctionne pour certaines vidéos 640x480, j'ai dû augmenter la taille maximale de la queue de la vidéo pour que le contenu 1280x720 ne soit pas bloqué. – timday

0

votre pipeline semble être correct. Cependant, gst-launch est un outil limité - je suggère de coder le pipeline en python ou ruby ​​pour un meilleur débogage.