GNOME Bugzilla – Bug 566428
[playbin] Wrong error message if all possible sources fail to change state
Last modified: 2013-07-18 07:03:12 UTC
Version: 2.24.3 Totem doesn't read libgstdvb.so. This library is installed, but when i run totem for play dvb channel it doesn't work. It try to find a dvb plugins, but it's just installed (gstreamer-plugins-bad-0.10.9-1.fc10). Distribution: Fedora release 10 (Cambridge) Gnome Release: 2.24.2 2008-11-25 (Red Hat, Inc) BugBuddy Version: 2.24.2 Output of custom script "/usr/libexec/totem/totem-bugreport.py": gst-typefind-0.10 version 0.10.21 GStreamer 0.10.21 http://download.fedora.redhat.com/fedora
Does Totem give an error message when you try to play a DVB channel? If you run `totem --debug` from the terminal, is any output printed there?
This is the output to `totem --debug`: ** (totem:3622): DEBUG: Init of Python module ** (totem:3622): DEBUG: Registering Python plugin instance: YouTube+TotemPythonPlugin ** (totem:3622): DEBUG: Creating object of type YouTube+TotemPythonPlugin ** (totem:3622): DEBUG: Creating Python plugin instance ** Message: Error: Per riprodurre questo stream è richiesto un plugin Sorgente protocollo DVB, che però non risulta installato. gstplaybasebin.c(1673): gen_source_element (): /GstPlayBin:play: No URI handler for dvb ** Message: Missing plugin: gstreamer|0.10|totem|Sorgente protocollo DVB|urisource-dvb (Sorgente protocollo DVB) ** Message: PackageKit: xid = 62914563 ** Message: PackageKit: Codec nice name: Sorgente protocollo DVB ** Message: PackageKit: non-structure: gstreamer0.10(urisource-dvb)()(64bit) ** Message: PackageKit: Did not install codec: Method failed: failed to find: gstreamer0.10(urisource-dvb)()(64bit) ** Message: No installation candidate for missing plugins found. ** Message: Error: Per riprodurre questo stream è richiesto un plugin Sorgente protocollo DVB, che però non risulta installato. gstplaybasebin.c(1673): gen_source_element (): /GstPlayBin:play: No URI handler for dvb ** Message: Missing plugin: gstreamer|0.10|totem|Sorgente protocollo DVB|urisource-dvb (ignoring) ** Message: All missing plugins are blacklisted, doing nothing ** (totem:3622): DEBUG: Finalizing Python plugin instance P.S.: I wrote to redhat bugzilla too, and Bastien Nocera work for this.
(In reply to comment #2) <snip> > P.S.: I wrote to redhat bugzilla too, and Bastien Nocera work for this. Don't do that. One bug is more than enough.
Excuse me it's my error.
What's the output of `gst-inspect dvb`?
The output is this: Plugin Details: Name: dvb Description: DVB elements Filename: /usr/lib64/gstreamer-0.10/libgstdvb.so Version: 0.10.9 License: LGPL Source module: gst-plugins-bad Binary package: gst-plugins-bad rpmfusion rpm Origin URL: http://rpmfusion.org/ dvbbasebin: DVB bin dvbsrc: DVB Source 2 features: +-- 2 elements
Tim, any ideas?
Seeing the same thing on my system. I'm at loss. $ gst-launch-0.10 playbin uri=dvb://ITV1 Setting pipeline to PAUSED ... ERROR: Pipeline doesn't want to pause. ERROR: from element /GstPlayBin:playbin0: A DVB protocol source plugin is required to play this stream, but not installed. Additional debug info: gstplaybasebin.c(1673): gen_source_element (): /GstPlayBin:playbin0: No URI handler for dvb Setting pipeline to NULL ... FREEING pipeline ...
check the library list for /usr/lib64/gstreamer-0.10/libgstdvb.so is being resolved: ldd - /usr/lib64/gstreamer-0.10/libgstdvb.so It could be it's not pulling in a library that it needs to, which gst-inspect-0.10 happens to provide. Can't think what though.
$ ldd -r /usr/lib64/gstreamer-0.10/libgstdvb.so linux-vdso.so.1 => (0x00007fffc3dff000) libgstbase-0.10.so.0 => /usr/lib64/libgstbase-0.10.so.0 (0x0000000000324000) libgstreamer-0.10.so.0 => /usr/lib64/libgstreamer-0.10.so.0 (0x0000000000559000) libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x0000000000825000) libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x0000000000a6a000) libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x0000000000c6d000) librt.so.1 => /lib64/librt.so.1 (0x0000000000e71000) libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00000000eb0c3000) libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x000000000107a000) libpthread.so.0 => /lib64/libpthread.so.0 (0x000000000135c000) libc.so.6 => /lib64/libc.so.6 (0x0000000001578000) libdl.so.2 => /lib64/libdl.so.2 (0x00000000018ea000) /lib64/ld-linux-x86-64.so.2 (0x0000003433200000) libz.so.1 => /lib64/libz.so.1 (0x0000000001aee000) libm.so.6 => /lib64/libm.so.6 (0x0000000001d03000) There's a full debug output at: https://bugzilla.redhat.com/attachment.cgi?id=328109
the ldd output is fine. In the debug log you linked to, I can see that it *is* successfully loading the dvb plugin and attempting to start it, including creating an mpegtsparse and linking stuff.... the it stops, unlinks things and errors out without printing any debug (at least not in that log file). Because the only element that's offering dvb:// as a uri fails to change state successfully, playbin then posts the 'no element provides dvb://' error message. I don't know if you're seeing a bug that might be fixed in gst-plugins-bad 0.10.10 already.
*** Bug 589179 has been marked as a duplicate of this bug. ***
> Because the only element that's offering dvb:// as a uri fails to change state > successfully, playbin then posts the 'no element provides dvb://' error > message. So in essence this is a bug in playbin(2), right? It should report that there has been an error, not that there are not elements handling the URI protocol in question.
Please change the bug status from UNCONFIRMED to CONFIRMED or similar. Since my bug (Bug 589179 - "Totem can't play digital tv: A DVB protocol source plugin is required") has been resolved as a duplicate of this one, I'd like to copy here a thing that I mentioned there, and that may give some clue to solve the problem: -------------------- I've updated Fedora, run Totem, clicked on Movie > Watch TV on 'DVB Adapter 0', and then a PackageKit window is opened, asking to search for a "DVB protocol source" complement. After clicking on "Search" button, another PackageKit window is opened, asking to install this packet: GStreamer streaming media framework "bad" plug-ins gstreamer-plugins-bad-0.10.11-4.fc11 (i586) It is asking for an old packet (0.10.11-4), since the following packet (0.10.13-3) is already installed: gstreamer-plugins-bad-0.10.13-3.fc11.i586 Maybe something is wrong with rpmfusion packets? Do I open a bug at bugzilla.rpmfusion.org? -------------------- rpmfusion bug opened: https://bugzilla.rpmfusion.org/show_bug.cgi?id=735 -------------------- Please, can some Gstreamer developer (Jan Schmidt?) investigate the error in playbin (a library function?) pointed out by Tim-Philipp Müller in the previous comment?
The problem with fixing this (yes, It's still valid with playbin2) is, that gst_element_make_from_uri() returns NULL if no element factories for that URI scheme are available but also if the URI couldn't be set on any of the possible element factories. There's no way to distinguish here. Any suggestions how to fix this cleanly without copying that code to uridecodebin? A GstElementMakeFromUriReturn gst_element_make_from_uri_full (const GstURIType type, const gchar * uri, const gchar * elementname, GstElement **element) seems to be too much :)
(In reply to comment #15) > The problem with fixing this (yes, It's still valid with playbin2) is, that > gst_element_make_from_uri() returns NULL if no element factories for that URI > scheme are available but also if the URI couldn't be set on any of the possible > element factories. There's no way to distinguish here. I guess that it's the latter that's causing problems on the F11 install then. Any hints as to why it would fail then?
Well, it will fail if the URI is not dvb://channel where channel must be something that can be mapped to a valid channel (dvbsrc looks in some config files and does some magic).
We now provide proper error messages from dvbbasebin when setting a uri fails.