Russian Qt Forum
Ноябрь 22, 2024, 22:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QAudioOutput  (Прочитано 10146 раз)
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« : Декабрь 19, 2009, 11:09 »

Не выводится звук через QAudioOutput, при этом выводится ворнинг

using null output device, none available

Соответственно код

Код
C++ (Qt)
foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
qDebug() << "Device name: " << deviceInfo.deviceName();

Не выводит вообще ничего

Ubuntu Linux 8.04 - все остальные звуковые приложения работают, alsa вроде в норме,

нашел в баг трекере ссылку

http://bugreports.qt.nokia.com/browse/QTBUG-6866

там есть патч на эту тему

Код:
— a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
@@ -403,6 +403,7 @@ void QAudioDeviceInfoInternal::updateLists()

QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
{
+ QList<QByteArray> allDevices;
QList<QByteArray> devices;
QByteArray filter;

@@ -430,6 +431,7 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
if((name != NULL) && (descr != NULL) && ((io == NULL) || (io == filter))) { QString deviceName = QLatin1String(name); QString deviceDescription = QLatin1String(descr); + allDevices.append(deviceName.toLocal8Bit().constData()); if(deviceDescription.contains(QLatin1String("Default Audio Device"))) devices.append(deviceName.toLocal8Bit().constData()); }
@@ -457,6 +459,9 @@ QList<QByteArray> QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode)
if (idx > 0)
devices.append("default");
#endif
+ if (devices.size() == 0 && allDevices.size() > 0)
+ return allDevices;
+
return devices;
}

Не могу этот патч применить никак - пробовал разные варианты - ругается то на отсутствие заголовка то на отдельные строки - ключ -u для указания формата использовал - может кто-нибудь подсказать как его применить или другие идеи на счет отсутствия устройств вывода?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Декабрь 19, 2009, 14:29 »

Выкачал из git - вроде последнюю версию Qt - собрал оттуда QtMultimedia - не работает!
Кто нибудь пробовал под линуксом этот модуль?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Декабрь 19, 2009, 18:27 »

Приминить патч удалось - нихрена не работает все равно - прошу проверить кого нибудь, компилируемый пример вкладываю, особенно интересно под ubuntu linux...

Если у кого то еще не заработает буду писать в баг репорт - в исходниках возможно прийдется изменить полный путь к файлу - файл также в архиве...

Жду ваших тестов!
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #3 : Декабрь 20, 2009, 13:52 »

Проверит кто нибудь или нет?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Декабрь 20, 2009, 16:25 »

Код
C++ (Qt)
#include <QFile>
#include <QAudioFormat>
#include <QAudioOutput>
#include <QDebug>
#include <QSound>
 
int main(int argc, char *argv[])
{
 QCoreApplication a(argc, argv);
 foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
   qDebug() << "Device name: " << deviceInfo.deviceName();
 
 
 QFile inputFile;
 inputFile.setFileName("main_compressor_work.wav");
 inputFile.open(QIODevice::ReadOnly);
 
 QAudioFormat format;
 // Set up the format, eg.
 format.setFrequency(8000);
 format.setChannels(1);
 format.setSampleSize(8);
 format.setCodec("audio/pcm");
 format.setByteOrder(QAudioFormat::LittleEndian);
 format.setSampleType(QAudioFormat::UnSignedInt);
 
 QAudioOutput *audio = new QAudioOutput( format, 0);
 //connect(audio,SIGNAL(stateChanged(QAudio::State)),SLOT(finishedPlaying(QAudio::State)));
 audio->start(&inputFile);
 
 return a.exec();
}
 

Вот так жуткое шипение выдает. Улыбающийся
ОС: Gentoo.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #5 : Декабрь 22, 2009, 21:09 »

Цитировать
Вот так жуткое шипение выдает.
спасибо.
Шипение все правильно - просто формат звука и заднный в коде не совпадал (чатота, размер семпла)
В последней версии из Git проблеима решена все работает.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.114 секунд. Запросов: 22.