Russian Qt Forum

Qt => Мультимедиа => Тема начата: Eugene_123 от Март 25, 2010, 19:26



Название: Проблемы со звуком (phonon) в линуксе
Отправлено: Eugene_123 от Март 25, 2010, 19:26
Всем доброго времени суток.

У меня такая проблема.. На компьютере, на котором компилил и ставил qt (динамическая сборка, версия 4.6.2) музыка проигрывается (в системе звук через oss)... Есть модуль и фонона, и бэкэнда - gstreamer-а. Потом взял программу, попробовал ее на другом компе запустить. Предварительно вообще всю папку /usr/local/Trolltech/4.6.2 переписал на этот компьютер. Программа запустилась, но звука нет. В консоль выдает Warning: phonon plugin could not be loaded - как-то так пишет. На этом компьютере звук через alsa выводится. А поддержки oss нет. Может быть, что музыка не проигрывается из-за этого (а при конфигурировании Qt выдалось, что alsa support...no)? Т.е. не может подгрузить бэкэнд не потому, что не найти его, а что зауковая система отличается? Просто, бэкэнд переписался вместе со всеми остальными библиотеками. Пути все те же (смотрел strace-ом). Тогда вероятно нужно перекомпилировать qt с поддержкой alsa... Или совершенно не имеет значения, какая используется звуковая система, главное чтобы программа нашла этот бэкэнд?

Спасибо!

Спасибо


Название: Re: Проблемы со звуком (phonon) в линуксе
Отправлено: Rcus от Март 25, 2010, 20:00
Если звук играется через ALSA значит есть libasound, но для сборки Qt с поддержкой ALSA нужны заголовочные файлы (наличие проверяется на этапе конфигурирования простым тестом из config.tests/unix/alsa). Впрочем это будет влиять только на поддержку QSound/QtMultimedia.
Что касается консольного сообщения... точно такого не нашел, есть только в src/3rdparty/phonon/phonon/factory.cpp
Код:
pWarning() << Q_FUNC_INFO << "phonon backend plugin could not be loaded";
Но без поясняющих сообщений это больше похоже на то что ни одного плагина найдено не было


Название: Re: Проблемы со звуком (phonon) в линуксе
Отправлено: crossly от Март 27, 2010, 12:18
стоило бы взглянуть на зависимости бэкэнда и фонона с помощью ldd .... тогда станет ясно чего ему не хватает....


Название: Re: Проблемы со звуком (phonon) в линуксе
Отправлено: Eugene_123 от Апрель 08, 2010, 16:22
Спасибо за ответы! До той машины, на которой не получилось проиграть музыку, мне к сожалению щас не добраться... Но я кое-чего дописал в программе (конкретно указал через setLibraryPaths где брать бэкэнд) и запустил просто на голой убунте. В принципе, все заработало. Только создал папку /usr/local/Trolltech/4.6.2 и туда переписал все используемые *.so. Единственное, чего я не понял: opengl в программе не используется... но если в /usr/local/Trolltech/4.6.2 нет модуля opengl, то опять вылезает этот ворнинг "Warning: phonon plugin could not be loaded". А если модуль есть - то все ок, музыка прогирывается... Почему фонон зависит от opengl я так и не понял.

Насчет ldd тож спасибо, буду разбираться


Название: Re: Проблемы со звуком (phonon) в линуксе
Отправлено: Rcus от Апрель 08, 2010, 17:05
В качестве профилактики objdump -C /usr/lib/qt4/plugins/phonon_backend/phonon_gstreamer.so -R | grep QGL
Да, использует, потому что может показывать видео через OpenGL (еще может в программном режиме или через gst:ximagesink
Код
C++ (Qt)
#ifndef QT_NO_PHONON_VIDEO
AbstractRenderer *DeviceManager::createVideoRenderer(VideoWidget *parent)
{
#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES)
   if (m_videoSinkWidget == "opengl") {
       return new GLRenderer(parent);
   } else
#endif
   if (m_videoSinkWidget == "software") {
       return new WidgetRenderer(parent);
   }
#ifndef Q_WS_QWS
   else if (m_videoSinkWidget == "xwindow") {
       return new X11Renderer(parent);
   } else {
       GstElementFactory *srcfactory = gst_element_factory_find("ximagesink");
       if (srcfactory) {
           return new X11Renderer(parent);
       }
   }
#endif
   return new WidgetRenderer(parent);
}
#endif //QT_NO_PHONON_VIDEO
Можно попробовать другой backend, например Ксин.


Название: Re: Проблемы со звуком (phonon) в линуксе
Отправлено: Eugene_123 от Апрель 09, 2010, 08:57
Ага, понятно, спасибо!

Цитировать
Можно попробовать другой backend, например Ксин.
Да, уже думал ксайн использовать, но остановился на gstreamer-e. Потом, как времени больше будет буду с ним разбираться.