Помогите разобраться с Phonon и переносом с Linux на Windows



  • Пытаюсь оформить аудиоплеер на 2-х деках (то есть, с использованием 2-х графов MediaObject-Path-AudioOutput MediaObject2-Path2-AudioOutput2), рассчитанный на 2 аудиокарты.

    Работаю с Qt из центра приложений Ubuntu 12.10 со стандартной библиотекой Phonon, идущей вместе с дистрибутивом Qt (не vlc и т.д.).

    Собственно, под Linux Ubuntu 12.10 всё прекрасно работает, можно воспроизводить 2 трека одновременно, делать кроссфэйд, и прочие вкусности управления громкостью, т.е. программа удалась.

    Что касается винды - я уже устал искать решения. Сначала собирал .exe из-под Linux, используя костыль в виде MinGw и подправленного qmake.conf. При переносе на windows Программа запускается, но QComboBox не отображает доступные аудиовыходы, т.е. Phonon не видит ни одной аудиокарты. При попытке собрать проект на windows qt-opensource-mingw, попытка запуска приложения рушится с возвратом кода (код завершения приложения напишу позже) и стандартным сообщением Microsoft об ошибке с ругательством в адрес phonon_ds94.dll(т.е. backend), dependancy walker говорит, что всё в порядке, но должно же оно запускаться, в коде не может быть проблем - на родном Linuxe всё пашет.

    В чём может быть дело, есть идеи?

    Да, кстати, если убрать из кода Path = createPath(MediaObject,AudioOutput), то программа не рушится, аудиовыходы показывает, вот только уже играть ничего точно не будет.



  • Чтобы фонон работал под окнами, нужно этот самый плагин phonon_ds94 пересобрать. По умолчанию под Win32 фонон использует DirectShow бэкенд, но (видимо из-за бинарной несовместимости) стоковый плагин в поставке Qt почти всегда не работает. Нужно скачать Platform SDK (если нет), и собрать проект ./QtSrc/plugins/phonon/ds9/ds9.pro, возможно потребуется подкрутить там пути к библиотекам в файле проекта/спецификациях сборки.

    Но насколько я помню, реализация фонон под окнами не очень полная, и не работает "один в один" с Linux-версией. Например, видеоплеер не проигрывает отдельные картинки (jpg/png), хотя по linux он спокойно ест все форматы. Тут можно посоветовать только использовать gstreamer вместо DirectShow, но для этого придется еще правильную сборку gstreamer под win32 искать, и собирать плагин ./QtSrc/plugins/phonon/gstreamer/gstreamer.pro

    P.S. естественно, чтобы все работало через плагин DirectShow придется собирать под MSVC, а не minGW


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.