Официальный форум СВД Встраиваемые Системы
20 Апрель, 2024, 09:17:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Воспроизведение звука средствами Qt в QNX 6.5.0  (Прочитано 3246 раз)
Эдуард
Интересующийся

Сообщений: 9


« : 25 Май, 2016, 14:34:55 »

Имеется виртуальная машина 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)?
« Последнее редактирование: 25 Май, 2016, 14:53:00 от Эдуард » Записан
Игорь Рондарев
Сотрудник СВД ВС
Опытный пользователь

Сообщений: 282

Сотрудник СВД ВС


WWW
« Ответ #1 : 26 Май, 2016, 16:16:15 »

Для воспроизведения звука средствами Qt 4.8.7 необходимо дополнительно установить runtime-библиотеки платформы GStreamer 1.6.0. Они доступны в виде архива на нашем FTP-сервере в разделе Qt (ftp://qt@kpda.ru/gstreamer160_nto650_x86_20160526.tar.gz).
После его распаковки на целевой системе необходимо установить следующие переменные окружения:
Код:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gstreamer/x86/lib

В том случае, если будут использоваться нестандартные пути, дополнительно необходима установка переменной GST_PLUGIN_SYSTEM_PATH:
Код:
GST_PLUGIN_SYSTEM_PATH=/путь/к/папке/lib/gstreamer-1.0

Также при использовании GStreamer в QNX 6.5 SP1 необходимо для разрабатываемого приложения установить значение переменной окружения MALLOC_BAND_CONFIG_STR:
Код:
MALLOC_BAND_CONFIG_STR="8:16,32,0:24,32,0:32,32,0:48,24,0:64,24,0:80,24,0:96,16,0:128,8,0"

Использование класса QSound в настоящий момент не поддерживается.

Относительно проблем с воспроизведением звука в Qt5: уточните, пожалуйста, какую сборку Qt 5.5 Вы используете?
Записан

Эдуард
Интересующийся

Сообщений: 9


« Ответ #2 : 02 Июнь, 2016, 12:06:11 »

Спасибо за ответ.
Что касается Qt5 - использую вашу же сборку, 20151109
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 12 Март, 2024, 05:08:16