FS#11070 - Phonon does not recognizes gstreamer backend
Attached to Project:
Arch Linux
Opened by Hugo Doria (hdoria) - Thursday, 31 July 2008, 01:30 GMT
Last edited by Pierre Schmitz (Pierre) - Sunday, 14 September 2008, 13:15 GMT
Opened by Hugo Doria (hdoria) - Thursday, 31 July 2008, 01:30 GMT
Last edited by Pierre Schmitz (Pierre) - Sunday, 14 September 2008, 13:15 GMT
|
Details
Description:
Any application that uses sound output through Phonon, such as KDE applications, does not work. It seems that the problem is that it is looking for the backends in Qt directory, when in reality they are into KDE directory. The solution a user (thotypous) found was to make a symbolic link: ln-s / usr/lib/kde4/plugins/phonon_backend / usr / lib / qt / plugins Additional info: phonon-4.20 NOTE: Phonon PKGBUILD does not work too. The source url is wrong and it is missing "automoc4" in makedepends. |
This task depends upon
Closed by Pierre Schmitz (Pierre)
Sunday, 14 September 2008, 13:15 GMT
Reason for closing: Works for me
Sunday, 14 September 2008, 13:15 GMT
Reason for closing: Works for me
The problem occurs when you try to use a pure Qt application (i.e. a Qt application that does not use kdelibs). As you can see, Phonon was included since Qt 4.4 as a part of the official Qt distribution, independent from KDE.
But Arch's Qt is packaged without phonon. Nothing more fair from that, as there is a "phonon" package in our repositories. The problem is that pure Qt applications will look for phonon at /usr/lib/qt/plugins, as Qt's phonon is to be installed there. In the order side, KDE applications will look at /usr/lib/kde4/plugins. The solution was to link phonon_backend, as Hugo said.
Patching qt to look for phonon at /usr/lib/kde4/plugins seems to be complicated and awkward, so the best solution I see is to make this symbolic link here at the phonon package.
About the PKGBUILD, the phonon sources can be found at ftp://ftp.kde.org/pub/kde/stable/phonon/4.2.0/phonon-4.2.0.tar.bz2. The md5sum in the PKGBUILD is incorrect, too.
As Hugo said, "automoc4" is missing from makedepends.
Do you know of any app which does not work with phonon? ATM I just cannot reproduce this problem. (Phonon with KDE apss like Dragon player or Juk work fine)
I'm testing Phonon with the example applications that come with Qt - ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-4.4.0.tar.gz
The applications are located at examples/phonon/capabilities and examples/phonon/musicplayer. You can compile them by calling qmake && make inside each directory.
This is a small 6kb file. Only download, unpack, and compile phonon/capabilities and phonon/musicplayer running qmake && make in each directory.
Well, the Qt phonon is actually the same phonon as the KDE one, but a "frozen" version of it. KDE phonon is actually 100% compatible with Qt phonon, except that the path it looks for the backends is a different directory.
> I couldn't make sure gstreamer is really used here
The xine backend isn't included in the "phonon" package. Note that /usr/share/kde4/services/phononbackends/xine.desktop and /usr/lib/kde4/phonon_xine.so are owned by the "kdebase-runtime" package. The "phonon" package only includes the gstreamer backend. The gstreamer backend is the only backend that would be included by the internal Qt phonon, too.
> Those examples are working fine here
Had you done any additional configurations in your phonon to get it working?
NOTE: I'm not running KDE. Maybe it has something to do with that. Did you tried to run the applications inside another window manager?
Here I'm using the latest phonon and qt from extra (phonon 4.2.0-1 and qt 4.4.0-7), and if I do NOT make the symlink, I get the following output from the examples:
$ ./capabilities
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
$ ./musicplayer
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
Phonon::createPath: Cannot connect Phonon::MediaObject(no objectName) to Phonon::AudioOutput(no objectName).
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
The windows open, but the sound doesn't work, as it does not find the backend. Things only work correctly when creating the symlink, as below:
ln -s /usr/lib/kde4/plugins/phonon_backend /usr/lib/qt/plugins
But setting it here outside KDE messed up my Qt theme, and some text inside the Qt applications became unreadable.
Screenshot follows: http://i35.tinypic.com/308fy0y.png
So the symlink is still the best solution I found by now.
I build the qt/e in the /mnt/nfs/qte6, and under the/mnt/nfs/qte6/plugins/phonon_backend there is a file named libphonon_gstreamer.so.
when I run the demos,
$ ./capabilities
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
$ ./musicplayer
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
Phonon::createPath: Cannot connect Phonon::MediaObject(no objectName) to Phonon::AudioOutput(no objectName).
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
What can i do ?