How to know that playbin2 can't play video format?

Jim Norton jimnorton at jimnorton.org
Thu May 9 09:19:32 PDT 2013


> On Wed, 2013-05-08 at 20:32 -0400, Jim Norton wrote:
>> Greetings,
>>
>> I have a small GTK gstreamer application based on tutorials and sample
>> code that works using playbin2. However, if I set the playbin2 uri to
>> a file that contains a video and audio stream in which a gstreamer
>> plugin exists only to play the audio I end up with an empty video
>> window that displays no video while the sound is playing. How do I
>> detect at runtime in C code that a either the audio or video portion
>> of a stream is unable to be played?
>
> You shouldn't end up with a video window if there's no suitable video
> decoder (not one created by GStreamer anyway).
>
> Does this also happen with gst-launch-0.10 ?
>
> Cheers
>  -Tim


Thanks Tim,

I am creating a Gtk drawable window and using GstXOverlay to provide a  
place for Gstreamer to render the video.

However, using gst-launch-0.10 I'm getting a window created that is  
solid green with no video and the audio is being played. The output is  
shown below. Is any of those messages available to the application on  
the GstBus?


[jrn at localhost gtkStreamer]$ gst-launch-0.10 -v playbin  
uri=file:///home/jrn/Projects/gtkStreamer/running-emus.theora.ogv
Setting pipeline to PAUSED ...
/playbin0/decodebin0/typefind.src: caps = application/x-annodex
Pipeline is PREROLLING ...
** Message: don't know how to handle application/x-ogg-skeleton,  
parsed=(boolean)false
/playbin0/selector_audio_src1: active-pad = NULL
/playbin0/selector_video_src0: active-pad = NULL
/playbin0/decodebin0/queue0.sink: caps = video/x-theora
/playbin0/decodebin0/queue2.sink: caps = audio/x-vorbis
/playbin0/decodebin0/queue0.src: caps = video/x-theora
/playbin0/decodebin0/theoradec1.sink: caps = video/x-theora
/playbin0/decodebin0/theoradec1.src: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/decodebin0/theoradec1.src: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/decodebin0/theoradec1.src: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/decodebin0/queue0: max-size-bytes = 21612
/playbin0/selector_video_src0.sink0: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/decodebin0.src0: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/decodebin0.src0.proxypad1: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/selector_video_src0.src: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/preroll_video_src0.sink: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/preroll_video_src0.src: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/selector_audio_src1.sink0: caps = audio/x-raw-float,  
rate=(int)32000, channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/decodebin0.src1: caps = audio/x-raw-float, rate=(int)32000,  
channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/decodebin0.src1.proxypad2: caps = audio/x-raw-float,  
rate=(int)32000, channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/selector_audio_src1.src: caps = audio/x-raw-float,  
rate=(int)32000, channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/preroll_audio_src1.sink: caps = audio/x-raw-float,  
rate=(int)32000, channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/preroll_audio_src1.src: caps = audio/x-raw-float,  
rate=(int)32000, channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/decodebin0/queue0: max-size-bytes = 54584
/playbin0/decodebin0/queue0: max-size-bytes = 113244

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size

** (gst-launch-0.10:2022): WARNING **: id: could not get in_size
/playbin0/vbin/id.src: caps = video/x-raw-yuv, format=(fourcc)I420,  
framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1,  
width=(int)480, height=(int)360
/playbin0/vbin/id.sink: caps = video/x-raw-yuv, format=(fourcc)I420,  
framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1,  
width=(int)480, height=(int)360
/playbin0/vbin.sink: caps = video/x-raw-yuv, format=(fourcc)I420,  
framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1,  
width=(int)480, height=(int)360
/playbin0/vbin.sink: caps = video/x-raw-yuv, format=(fourcc)I420,  
framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1,  
width=(int)480, height=(int)360
/playbin0/vbin.sink.proxypad6: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/decodebin0/queue2: max-size-bytes = 16814
/playbin0/vbin/vconv.src: caps = video/x-raw-rgb, bpp=(int)32,  
depth=(int)24, endianness=(int)4321, red_mask=(int)65280,  
green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)480,  
height=(int)360, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1
/playbin0/vbin/vconv.sink: caps = video/x-raw-yuv,  
format=(fourcc)I420, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1, width=(int)480, height=(int)360
/playbin0/vbin/vscale.src: caps = video/x-raw-rgb, bpp=(int)32,  
depth=(int)24, endianness=(int)4321, red_mask=(int)65280,  
green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)480,  
height=(int)360, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1
/playbin0/vbin/vscale.sink: caps = video/x-raw-rgb, bpp=(int)32,  
depth=(int)24, endianness=(int)4321, red_mask=(int)65280,  
green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)480,  
height=(int)360, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1
/playbin0/vbin/videosink/videosink-actual-sink-ximage.sink: caps =  
video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321,  
red_mask=(int)65280, green_mask=(int)16711680,  
blue_mask=(int)-16777216, width=(int)480, height=(int)360,  
framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1
/playbin0/vbin/videosink.sink: caps = video/x-raw-rgb, bpp=(int)32,  
depth=(int)24, endianness=(int)4321, red_mask=(int)65280,  
green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)480,  
height=(int)360, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1
/playbin0/vbin/videosink.sink: caps = video/x-raw-rgb, bpp=(int)32,  
depth=(int)24, endianness=(int)4321, red_mask=(int)65280,  
green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)480,  
height=(int)360, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1
/playbin0/vbin/videosink.sink.proxypad5: caps = video/x-raw-rgb,  
bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280,  
green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)480,  
height=(int)360, framerate=(fraction)25/1,  
pixel-aspect-ratio=(fraction)1/1
/playbin0/abin/aconv.src: caps = audio/x-raw-int,  
endianness=(int)1234, signed=(boolean)true, width=(int)32,  
depth=(int)32, rate=(int)32000, channels=(int)1
/playbin0/abin/aconv.sink: caps = audio/x-raw-float, rate=(int)32000,  
channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/abin.sink: caps = audio/x-raw-float, rate=(int)32000,  
channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/abin.sink: caps = audio/x-raw-float, rate=(int)32000,  
channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/abin.sink.proxypad4: caps = audio/x-raw-float,  
rate=(int)32000, channels=(int)1, endianness=(int)1234, width=(int)32
/playbin0/abin/aresample.src: caps = audio/x-raw-int,  
endianness=(int)1234, signed=(boolean)true, width=(int)32,  
depth=(int)32, rate=(int)32000, channels=(int)1
/playbin0/abin/aresample.sink: caps = audio/x-raw-int,  
endianness=(int)1234, signed=(boolean)true, width=(int)32,  
depth=(int)32, rate=(int)32000, channels=(int)1
/playbin0/abin/volume.src: caps = audio/x-raw-int,  
endianness=(int)1234, signed=(boolean)true, width=(int)32,  
depth=(int)32, rate=(int)32000, channels=(int)1
/playbin0/abin/volume.sink: caps = audio/x-raw-int,  
endianness=(int)1234, signed=(boolean)true, width=(int)32,  
depth=(int)32, rate=(int)32000, channels=(int)1
/playbin0/abin/audiosink/audiosink-actual-sink-alsa.sink: caps =  
audio/x-raw-int, endianness=(int)1234, signed=(boolean)true,  
width=(int)32, depth=(int)32, rate=(int)32000, channels=(int)1
/playbin0/abin/audiosink.sink: caps = audio/x-raw-int,  
endianness=(int)1234, signed=(boolean)true, width=(int)32,  
depth=(int)32, rate=(int)32000, channels=(int)1
/playbin0/abin/audiosink.sink: caps = audio/x-raw-int,  
endianness=(int)1234, signed=(boolean)true, width=(int)32,  
depth=(int)32, rate=(int)32000, channels=(int)1
/playbin0/abin/audiosink.sink.proxypad3: caps = audio/x-raw-int,  
endianness=(int)1234, signed=(boolean)true, width=(int)32,  
depth=(int)32, rate=(int)32000, channels=(int)1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
/playbin0/decodebin0/queue0: max-size-bytes = 242644
/playbin0/decodebin0/queue0: max-size-bytes = 512158







More information about the gstreamer-devel mailing list