[gst-devel] gst-ffmpeg & decodebin
Tom Cooksey
thomas.cooksey at trolltech.com
Wed Feb 6 16:33:47 CET 2008
Hi,
Background: I am trying to get the new Qt/KDE Phonon library working on Qtopia
Core (Qt/Embedded). Linux/Qtopia Core uses the GStreamer backend for Phonon -
specifically the decodebin element.
I'm having problems getting decodebin (& playbin) to detect & use the ffmpeg
elements. E.g.
The following works fine:
gst-launch filesrc location=01_Neighborhood_1_Tunnels_.mp3 ! ffdemux_mp3 !
ffdec_mp3 ! alsasink
However, using decodebin I get:
$ gst-launch-0.10 filesrc location=01_Neighborhood_1_Tunnels_.mp3 !
decodebin ! audioconvert ! alsasink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /pipeline0/decodebin0: A ID3 tag demuxer plugin is
required to play this stream, but not installed.
Additional debug info:
gstdecodebin.c(792): close_pad_link (): /pipeline0/decodebin0:
No decoder to handle media type 'application/x-id3'
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
FREEING pipeline ...
I also have gst-plugin-ogg & gst-plugin-vorbis installed. When I use decodebin
with an ogg/vorbis file, it works fine:
$ gst-launch-0.10 filesrc location=Hydrate-Kenny_Beltrey.ogg ! decodebin !
audioconvert ! alsasink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstAudioSinkClock
I've checked my ~/.gstreamer-0.10/registry.x86_64.xml and found the following:
--snip--
<feature typename="GstElementFactory">
<name>ffdemux_mp3</name>
<longname>FFMPEG MPEG audio demuxer</longname>
<class>Codec/Demuxer</class>
<description>FFMPEG MPEG audio demuxer</description>
<author>Wim Taymans <wim at fluendo.com>, Ronald Bultje
<rbultje at ronald.bitfreak.net>, Edward Hervey
<bilboed at bilboed.com></author>
<padtemplate>
<nametemplate>video_%02d</nametemplate>
<direction>src</direction>
<presence>sometimes</presence>
<caps>ANY</caps>
</padtemplate>
<padtemplate>
<nametemplate>audio_%02d</nametemplate>
<direction>src</direction>
<presence>sometimes</presence>
<caps>ANY</caps>
</padtemplate>
<padtemplate>
<nametemplate>sink</nametemplate>
<direction>sink</direction>
<presence>always</presence>
<caps>application/x-id3</caps>
</padtemplate>
</feature>
...
<feature typename="GstTypeFindFactory">
<name>application/x-id3v1</name>
<rank>257</rank>
<caps>application/x-id3</caps>
<extension>mp3</extension>
<extension>mp2</extension>
<extension>mp1</extension>
<extension>mpga</extension>
<extension>ogg</extension>
<extension>flac</extension>
<extension>tta</extension>
</feature>
--snip--
So does this mean ffmpeg has registered an element for application/x-id3?
I have tried this on ARM (OpenEmbedded), amd64 (Gentoo - my main devel PC) &
x86 (Kubuntu). I have searched the mailing list archives and found someone
else posting what I beleive is the same problem on 2007-01-05 in
thread "using fffmpeg demuxers in playbin". I assume the problem is somewhere
in the gst-ffmpeg code, where it registers the various elements (as hinted at
in "using fffmpeg demuxers in playbin").
Questions:
1) Has this already been fixed? I'm using gst-ffmpeg 10.3.
2) If not, is it worth debuging this & sending in a patch? Would it ever be
accepted? I smell patent politics with this bug. Specifically, gstreamer
should prefer a patent-free plugin over a plugin which has a merky patent
status.
3) If it's worth me looking into this, any recomendations where to start
looking? (I looked at my first gst source file today :-) )
Cheers,
Tom
More information about the gstreamer-devel
mailing list