Russian Qt Forum
Ноябрь 23, 2024, 02:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы со звуком (phonon) в линуксе  (Прочитано 4431 раз)
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... Или совершенно не имеет значения, какая используется звуковая система, главное чтобы программа нашла этот бэкэнд?

Спасибо!

Спасибо
Записан
Rcus
Гость
« Ответ #1 : Март 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";
Но без поясняющих сообщений это больше похоже на то что ни одного плагина найдено не было
Записан
crossly
Гость
« Ответ #2 : Март 27, 2010, 12:18 »

стоило бы взглянуть на зависимости бэкэнда и фонона с помощью ldd .... тогда станет ясно чего ему не хватает....
Записан
Eugene_123
Гость
« Ответ #3 : Апрель 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 тож спасибо, буду разбираться
Записан
Rcus
Гость
« Ответ #4 : Апрель 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, например Ксин.
Записан
Eugene_123
Гость
« Ответ #5 : Апрель 09, 2010, 08:57 »

Ага, понятно, спасибо!

Цитировать
Можно попробовать другой backend, например Ксин.
Да, уже думал ксайн использовать, но остановился на gstreamer-e. Потом, как времени больше будет буду с ним разбираться.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.082 секунд. Запросов: 21.