Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] QtMultimedia не видит девайсов


Автор: CompWorm 6.4.2010, 02:20
Доброго времени!
решил изучить нововведение нокии - QtMultimedia , которая, как я понял, является надстройкой над Phonon .
я начал с изучения примеров, поставляемых с QT и тут же обломался. все три примера под Linux (ubuntu 9.10) не работают. тогда я решил провести простой тест, http://doc.qt.nokia.com/4.6-snapshot/qaudiodeviceinfo.html:
Код

#include <QtMultimedia>
#include <QtDebug>

...

    qDebug() << "Devices:";
    qDebug() << "========================================";
    foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
        qDebug() << "Device name: " << deviceInfo.deviceName();
    qDebug() << "========================================";

никаких девайсов не нашлось... 
я так же проверил фонон
Код

// phonon
    QList<Phonon::AudioOutputDevice> audioOutputDevices =
            Phonon::BackendCapabilities::availableAudioOutputDevices();
    for (int i=0; i < audioOutputDevices.count(); i++)
            qDebug() << audioOutputDevices[i].name();

//QtMultimedia
    QList<QAudioDeviceInfo> audioOutputDevicesM =
            QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);
    for (int i=0; i < audioOutputDevicesM.count(); i++)
            qDebug() << audioOutputDevicesM[i].deviceName();

у фонона есть девайс под названием "default"
какие есть идеи, почему у QtMultimedia нет устройств, а у Phonon есть?


Автор: borisbn 6.4.2010, 06:07
Есть возможность проверить на windows?

Автор: CompWorm 6.4.2010, 07:53
пока нет. второй операционкой виндовс7 и на нем нет Qt... есть вероятность что и не установится. щас инет гавёный, но если появится возможность - скачаю, поставлю и проверю, как на винде.

а у вас где-нибудь работает этот класс? можите проверить на своей машине этот код?

Автор: borisbn 6.4.2010, 11:00
проверил. у меня windows 7 + Qt 4.6.2 + msvc2008
выводит:
Код

Devices: 
======================================== 
Device name:  "Iaooieee (Ono?ienoai n iiaaa??e" 
Device name:  "Aeiaieee (Ono?ienoai n iiaaa??e" 
Device name:  "Oeo?iaia aoaei (S/PDIF) (Ono?ie" 
Device name:  "Oeo?iaia aoaei (S/PDIF) (Ono?ie" 
Device name:  "default" 
======================================== 

причём эти кракозябры не из-за переноса из студии в браузер, а я и там их вижу в этом виде :(

Автор: just_geek 6.4.2010, 11:04
Примеры audiodevices, audioinput, audiooutput из папки \examples\multimedia\ замечательно работают smile

p.s. Qt 4.6.2 компилятор MSVC++ 2008, Windows Vista

Автор: borisbn 6.4.2010, 12:56
just_geek, а вы пробовали код, написанный CompWorm ?
У меня одного вместо имени устройства - абракадабра ?

Автор: CompWorm 6.4.2010, 19:57
borisbn, спасибо за радостные известия о том что Qt работает в win7 =) и за участие в проверке кода.

just_geek, 
Цитата(just_geek @  6.4.2010,  11:04 Найти цитируемый пост)
Примеры audiodevices, audioinput, audiooutput из папки \examples\multimedia\ 

спасибо за проверку.

вопрос ко всем: 

1)не могли бы вы сравнить вывод фонона и мультимедии в линуксе и виндусе? они у вас одинаковые кракозябловые устройства выдают все 4 раза?

2) очевидно что проблема в линуксе, раз у вас у всех всё работает. остаётся загадкой только почему у фонона есть дефолт, а у мультимедии вообще ничего нет. давайте плясать от печки. фонону и мультимедии нужен в линуксе ALSA или OSS или они как-то сами собой работают без дров? посколько в убунту вечно всяких новшиств любят напихать, то сразу и второй вопрос - каких версий должны быть эти драйвера? возможно тут несовместимость... 


ЗЫ инета пока нет, тест с виновс пока не ставил.

Автор: CompWorm 6.4.2010, 22:34
наконец дали инет и я поставил кратора на виндос 7

код 
Код

    QList<Phonon::AudioOutputDevice> audioOutputDevices =
            Phonon::BackendCapabilities::availableAudioOutputDevices();
    QList<QAudioDeviceInfo> audioOutputDevicesM =
            QAudioDeviceInfo::availableDevices(QAudio::AudioOutput);

    qDebug() << "Devices:";
    qDebug() << "phonon========================================";


    for (int i=0; i < audioOutputDevices.count(); i++)
            qDebug() << audioOutputDevices[i].name();
    qDebug() << "multimedia========================================";
    for (int i=0; i < audioOutputDevicesM.count(); i++)
            qDebug() << audioOutputDevicesM[i].deviceName();

    qDebug() << "multimedia2========================================";
    foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
        qDebug() << "Device name: " << deviceInfo.deviceName();
    qDebug() << "========================================";


вывод
Цитата

Devices: 
phonon======================================== 
"Default DirectSound Device" 
"DirectSound: Realtek Digital Output (Realtek High Definition Audio)" 
"DirectSound: Динамики (Realtek High Definition Audio)" 
"Динамики (Realtek High Definiti" 
"Default WaveOut Device" 
"Realtek Digital Output (Realtek" 
multimedia======================================== 
"Aeiaieee (Realtek High Definiti" 
"Realtek Digital Output (Realtek" 
"default" 
multimedia2======================================== 
Device name:  "Aeiaieee (Realtek High Definiti" 
Device name:  "Realtek Digital Output (Realtek" 
Device name:  "default" 
======================================== 


заметки:
1) как видим, проблема явно в линуксе.
2) в фонон есть поддержка DirectSound, а мультимедия нервно курит в сторонке
3) русские буквы видны в фонон и крокозяблы в multimedia
4) устройство под названием "default" в виндосе есть только у мультимедии, а у фонона это "Default WaveOut Device" (+"Default DirectSound Device" )
5) в линуксе только первый вариант кода для мультимедии работает, в виндусе - оба выводят одно и то же.

какие есть идее по реанимации кода в линукс ?
кто может протестить под своим линуксом этот код?
почему строчки не полностью пропечатаны?

Автор: borisbn 7.4.2010, 06:09
CompWorm, напиши всё это троллям в http://bugreports.qt.nokia.com/secure/Dashboard.jspa
unfortunatly only in english smile

Автор: CompWorm 7.4.2010, 08:32
fortunatly i know Enглиш  smile 
я написал на убунтовый сайт всё без зазрения совести жду когда какой-нибудь эксперт напишет, что мол, всё труба  smile  тогдя я отпишусь троллям

Автор: CompWorm 7.4.2010, 23:10
мммда, я не одинок во вселенной!
http://bugreports.qt.nokia.com/browse/QTBUG-6866
любопытно, что в 4.6.1 это должно было быть решено, но ведать во время выхода 4.6.2 погода на марсе поменялась.
http://bugreports.qt.nokia.com/browse/QTBUG-8509
короче нужен финт ушами с рекомпиляцией самой Qt и впаиванием в неё поддержки ALSA
тема остаётся открытой  smile 
по возможности голосуем за вторую, чтоб проблему поживее решали smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)