Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Пантер от Февраль 27, 2013, 10:05



Название: [Qt 4.8.x] Phonon + MinGW
Отправлено: Пантер от Февраль 27, 2013, 10:05
Понадобилось по работе проигрывать медиафайлы, то есть, нужно собирать фонон. Гугл намекает на то, чо фонон под мингвом собрать без шаманства не получится, но посты, в основном, старые и многие ссылки битые. Кто собирает? Можете решение описать? Потом оформим и прикрепим на форуме.


Название: Re: Phonon + MinGW
Отправлено: Bepec от Февраль 27, 2013, 10:14
Ещё б написать под какую версию Qt собирать, я тогда на досуге попытаюсь.



Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: Пантер от Февраль 27, 2013, 10:19
Ещё б написать под какую версию Qt собирать, я тогда на досуге попытаюсь.
Поправил заголовок.


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: xokc от Февраль 27, 2013, 11:05
Если задача просто воспроизвести файл я бы с Phonon не заморачивался вообще - есть множество более "легких" способов это сделать. Если не только воспроизвести - тем более (слишком возможности у него слабенькие на фоне проблем с его сборкой).


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: Пантер от Февраль 27, 2013, 11:05
Если задача просто воспроизвести файл я бы с Phonon не заморачивался вообще - есть множество более "легких" способов это сделать. Если не только воспроизвести - тем более (слишком возможности у него слабенькие на фоне проблем с его сборкой).
Можно подробнее про способы?


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: Alex Custov от Февраль 27, 2013, 13:35
Я бы посмотрел на libvlc


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: Пантер от Февраль 27, 2013, 13:43
А проще нет? Мне и нужно-то - проигрывать файл и рубить проигрывание, когда нужно. Все.


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: ecspertiza от Февраль 27, 2013, 13:47
фонон собрать достаточно просто, буквально недавно на 4.8.2 это проделывал как раз на MinGW. Делал следующее

1. отредактировал файл src\plugins\phonon\ds9\ds9.pro

следующим образом

Код:
DESTDIR = $$QT_BUILD_TREE/plugins/phonon_backend
QT += phonon
win32:!wince*:contains(QT_CONFIG,opengl):LIBS += -lopengl32
win32:!wince*:LIBS += -lgdi32
win32-msvc2005:DEFINES += _CRT_SECURE_NO_WARNINGS
LIBS += -lstrmiids -ldmoguids -luuid -lmsdmo -lole32 -loleaut32
TARGET = phonon_ds9
INCLUDEPATH += "E:/Perl___/c/x86_64-w64-mingw32/include/"

DEFINES += PHONON_MAKE_QT_ONLY_BACKEND
PHONON_DS9_DIR = $$QT_SOURCE_TREE/src/3rdparty/phonon/ds9

# Input
HEADERS += \
           $$PHONON_DS9_DIR/abstractvideorenderer.h \
           $$PHONON_DS9_DIR/audiooutput.h \
           $$PHONON_DS9_DIR/backend.h \
           $$PHONON_DS9_DIR/backendnode.h \
           $$PHONON_DS9_DIR/effect.h \
           $$PHONON_DS9_DIR/fakesource.h \
           $$PHONON_DS9_DIR/iodevicereader.h \
           $$PHONON_DS9_DIR/mediagraph.h \
           $$PHONON_DS9_DIR/mediaobject.h \
           $$PHONON_DS9_DIR/videowidget.h \
           $$PHONON_DS9_DIR/videorenderer_soft.h \
           $$PHONON_DS9_DIR/volumeeffect.h \
           $$PHONON_DS9_DIR/qbasefilter.h \
           $$PHONON_DS9_DIR/qpin.h \
           $$PHONON_DS9_DIR/qasyncreader.h \
           $$PHONON_DS9_DIR/qaudiocdreader.h \
           $$PHONON_DS9_DIR/qmeminputpin.h \
           $$PHONON_DS9_DIR/compointer.h \
           $$PHONON_DS9_DIR/phononds9_namespace.h


SOURCES += \
           $$PHONON_DS9_DIR/abstractvideorenderer.cpp \
           $$PHONON_DS9_DIR/audiooutput.cpp \
           $$PHONON_DS9_DIR/backend.cpp \
           $$PHONON_DS9_DIR/backendnode.cpp \
           $$PHONON_DS9_DIR/effect.cpp \
           $$PHONON_DS9_DIR/fakesource.cpp \
           $$PHONON_DS9_DIR/iodevicereader.cpp \
           $$PHONON_DS9_DIR/mediagraph.cpp \
           $$PHONON_DS9_DIR/mediaobject.cpp \
           $$PHONON_DS9_DIR/videowidget.cpp \
           $$PHONON_DS9_DIR/videorenderer_soft.cpp \
           $$PHONON_DS9_DIR/volumeeffect.cpp \
           $$PHONON_DS9_DIR/qbasefilter.cpp \
           $$PHONON_DS9_DIR/qpin.cpp \
           $$PHONON_DS9_DIR/qasyncreader.cpp \
           $$PHONON_DS9_DIR/qaudiocdreader.cpp \
           $$PHONON_DS9_DIR/qmeminputpin.cpp

#the EVR renderer (only available on desktop)
!wince*:SOURCES += $$PHONON_DS9_DIR/videorenderer_evr.cpp \
                   $$PHONON_DS9_DIR/videorenderer_vmr9.cpp
!wince*:HEADERS += $$PHONON_DS9_DIR/qevr9.h \
                   $$PHONON_DS9_DIR/videorenderer_evr.h \
                   $$PHONON_DS9_DIR/videorenderer_vmr9.h
wince*:SOURCES  += $$PHONON_DS9_DIR/videorenderer_default.cpp
wince*:HEADERS  += $$PHONON_DS9_DIR/videorenderer_default.h

target.path = $$[QT_INSTALL_PLUGINS]/phonon_backend
INSTALLS += target

include(../../qpluginbase.pri)

2. в INCLUDEPATH рекомендуют указать путь к dsound.h который лежит в DirectX SDK, но у меня с ним было связанно много проблем, phonon начал требовать какие то еще заголовки которые приходилось собирать по всей системе. В итоге плюнул и указал путь к dsound.h который идет вместе с perl.
3. configure бла бла && make
4. профит


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: ecspertiza от Февраль 27, 2013, 13:48
Кстати есть еще способ для проигрывания звуков, вот прям из проекта

Код:
QSound::play(QDesktopServices::storageLocation(QDesktopServices::TempLocation) + QDir::separator() + "zatvor.wav");


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: xokc от Февраль 27, 2013, 13:48
А проще нет? Мне и нужно-то - проигрывать файл и рубить проигрывание, когда нужно. Все.
А что тут под медиафайлами понимается - звук или видео?


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: Alex Custov от Февраль 27, 2013, 13:48
А проще нет? Мне и нужно-то - проигрывать файл и рубить проигрывание, когда нужно. Все.

сам понимаешь, что проигрывание не бывает такое простое. Либо простой API со сложным бэкендом, который хрен соберёшь, или API посложнее, но прямое, как libvlc. Посмотри ещё на QMediaPlayer из Qt Mobility, но там наверняка тоже бэкенд нужен.


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: Пантер от Февраль 27, 2013, 13:53
А проще нет? Мне и нужно-то - проигрывать файл и рубить проигрывание, когда нужно. Все.
А что тут под медиафайлами понимается - звук или видео?

А любой, формат можно подобрать. Сейчас mp3 в наличии, но могу сконвертить в какой угодно.


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: Пантер от Февраль 27, 2013, 14:01
Кстати есть еще способ для проигрывания звуков, вот прям из проекта

Код:
QSound::play(QDesktopServices::storageLocation(QDesktopServices::TempLocation) + QDir::separator() + "zatvor.wav");
Работает. Есть какие-нибудь проблемы с этим способом?


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: ecspertiza от Февраль 27, 2013, 14:05
Работает. Есть какие-нибудь проблемы с этим способом?

Особо не замечал. Знаю точно ,что хорошо воспроизводит wav и не работает с ресурсами.


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: Alex Custov от Февраль 27, 2013, 14:26
Работает. Есть какие-нибудь проблемы с этим способом?

Ты же здесь не сможешь остановить проигрывание.


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: ecspertiza от Февраль 27, 2013, 14:28
там есть QSound::stop()  :)


Название: Re: [Qt 4.8.x] Phonon + MinGW
Отправлено: alexis031182 от Февраль 27, 2013, 14:32
Может DirectShow (если конечно только виндовс) тогда лучше? Примеров (http://cppmp3player.codeplex.com/documentation) много в сети. А в Qt5 всё хозяйство с мультимедиа уже встроено (с видеозахватом пока не очень дела обстоят, а воспроизведение - норм). Делал аудио плейер на пятом. Отлично работает.