Имеется виртуальная машина QNX 6.5.0 SP1 и Qt 4.8.7 билд 20160330. Так же имеется Qt 5.5.0.
Есть wav файл со звуком "биииип", длительностью ~300 мс, который лежит и на диске, и находится в ресурсах программы.
Требуется программно по наступлению определённого события воспроизвести некий звук.
Воспроизведение звука посредством запуска утилиты ОС:
QProcess player;
player.start("wave /var/beep-02.wav");
if (!player.waitForFinished(5000)) player.kill(); // Если за 5 секунд плеер не завершился мы его убиваем.
- звучит нормально звук "бииип", длительностью ~300 мс. Пользовательская программа на время воспроизведения тормозит.
Qt5: QSoundEffect beep;
beep.setSource(QUrl("qrc:/sound/beep-02.wav"));
beep.setVolume(1.0f);
beep.play();
QEventLoop loop;
loop.exec();
- воспроизводит ненормально, как "бип-бип", с паузой в середине.
//=========
QSound beep(":/sound/beep-02.wav");
beep.play();
- тоже воспроизводит как "бип-бип", с паузой в середине.
//=========
QMediaPlayer *player = new QMediaPlayer;
player->setMedia(QMediaContent(QUrl("qrc:/sound/beep-02.wav")));
player->setVolume(50);
player->play();
- звука нет, пишет в консоль ошибку:
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
Qt4:QSound beep(":/sound/beep-02.wav");
beep.play();
- звука нет, ошибка сборки. Похоже, что в библиотеке не реализованы класс и ф-ии QSound:
undefined reference to `QSound::~QSound()'
undefined reference to `QSound::QSound(QString const&, QObject*)'
undefined reference to `QSound::play()'
//=========
Phonon::MediaObject *media;
Phonon::AudioOutput *audio;
media = new Phonon::MediaObject(this);
QString fileName = ":/sound/beep-02.wav";
media->setCurrentSource(fileName);
audio = new Phonon::AudioOutput(Phonon::MusicCategory, this);
Phonon::createPath(media, audio);
media->play();
- Звука нет. Ошибка выполнения, лог консоли:
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
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: Phonon::createPath: Cannot connect Phonon::MediaObject ( no objectName ) to Phonon::AudioOutput ( no objectName ).
Плагин phonon'а лежит в
# ls -l /opt/qt487/x86/plugins/phonon_backend/
total 772
drwxr-xr-x 2 root root 1024 Mar 30 15:27 .
drwxr-xr-x 13 root root 1024 Mar 30 16:13 ..
-rwxr-xr-x 1 root root 392753 Mar 30 15:27 phonon_gstreamer.so
Программа возвращает следующую локацию:
qDebug()<<QLibraryInfo::location(QLibraryInfo::PluginsPath);
- "/opt/qt487/x86/plugins"
Библиотеки тестовой программки:
# ldd beep_wav_test
./beep_wav_test:
libphonon.so.4 => /opt/qt487/x86/lib/libphonon.so.4.8.2 (0xb8200000)
libQtMultimedia.so.4 => /opt/qt487/x86/lib/libQtMultimedia.so.4.8.7 (0xb8251000)
libQtGui.so.4 => /opt/qt487/x86/lib/libQtGui.so.4.8.7 (0xb8400000)
libQtNetwork.so.4 => /opt/qt487/x86/lib/libQtNetwork.so.4.8.7 (0xb8272000)
libQtCore.so.4 => /opt/qt487/x86/lib/libQtCore.so.4.8.7 (0xb8fd2000)
libstdc++.so.6 => /lib/libstdc++.so.6.0.13 (0xb937d000)
libm.so.2 => /lib/libm.so.2 (0xb9470000)
libc.so.3 => /usr/lib/ldqnx.so.2 (0xb0300000)
libsocket.so.3 => /lib/libsocket.so.3 (0xb94a3000)
libz.so.2 => /usr/lib/libz.so.2 (0xb83df000)
libssl.so.1 => /usr/lib/libssl.so.1 (0xb94d3000)
libcrypto.so.1 => /usr/lib/libcrypto.so.1 (0xb951a000)
# ldd /opt/qt487/x86/lib/libphonon.so.4.8.2
/opt/qt487/x86/lib/libphonon.so.4.8.2:
libphonon.so.4 => /opt/qt487/x86/lib/libphonon.so.4.8.2 (0xb8200000)
libQtCore.so.4 => /opt/qt487/x86/lib/libQtCore.so.4.8.7 (0xb8251000)
libQtGui.so.4 => /opt/qt487/x86/lib/libQtGui.so.4.8.7 (0xb8800000)
libstdc++.so.6 => /lib/libstdc++.so.6.0.13 (0xb85fc000)
libm.so.2 => /lib/libm.so.2 (0xb86ef000)
libz.so.2 => /usr/lib/libz.so.2 (0xb8722000)
libsocket.so.3 => /lib/libsocket.so.3 (0xb8733000)
# ldd /opt/qt487/x86/plugins/phonon_backend/phonon_gstreamer.so
/opt/qt487/x86/plugins/phonon_backend/phonon_gstreamer.so:
phonon_gstreamer.so => /opt/qt487/x86/plugins/phonon_backend/phonon_gstreamer.so (0xb8200000)
libQtCore.so.4 => /opt/qt487/x86/lib/libQtCore.so.4.8.7 (0xb8248000)
libQtGui.so.4 => /opt/qt487/x86/lib/libQtGui.so.4.8.7 (0xb8800000)
libphonon.so.4 => /opt/qt487/x86/lib/libphonon.so.4.8.2 (0xb85f3000)
ldd: Library cannot be found
Чего-то не хватает.
Вопрос - как в QNX 6.5.0 SP1 средствами Qt 4.8.7 воспроизвести звук (phonon'ом, QSound)?