Russian Qt Forum
Ноябрь 22, 2024, 12:34
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Мультимедиа
>
проблема с QAudioOutput
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: проблема с QAudioOutput (Прочитано 14399 раз)
elijah_olejnik
Гость
Re: проблема с QAudioOutput
«
Ответ #15 :
Сентябрь 28, 2014, 20:35 »
Большое спасибо, не хотелось бы перестраиваться, но о QAudio действительно очень много негатива везде. Ссылки полезные, даже что-то про ASIO увидел. Вопрос такой, меня помимо воспроизведения интересуют функции автоматического управления громкостью, т.е. fadein, fadeout, crossfade. В QAudioOutput очень неудобно реализовано, поскольку метод отвечающий за громкость QAudioOutput::setVolume(qreal volume) обращается напрямую к драйверу звуковой карты, регулируя громкость виртуального микшера. Мне необходимо делать это внутри программы, не затрагивая системную громкость. Я не успею сейчас, конечно, прочитать документацию по приведённым вами ссылкам, если вы работали с этими библиотеками - вы наверняка знаете, как обстоит дело с контрольными функциями этих библиотек?
Документацию обязательно почитаю, попробую перевести свой проект на одну из этих библиотек, хотя бы, в качестве эксперимента. Спасибо.
Записан
elijah_olejnik
Гость
Re: проблема с QAudioOutput
«
Ответ #16 :
Сентябрь 28, 2014, 23:08 »
Кстати, успешно поместил каждый QAudioOutput в отдельный QThread, не помогло. Артефакт остался. Более того, посмотрел через отладчик - QAudioOutput::start(QIODevice *device) формирует собственный поток, но к сожалению, по какой-то причине, остановка этого, и любого другого потока влияет на аудиокарту, вызывая чёртов щелчок. Этот щелчок проявляется при вызовах stop, suspend, reset. И ещё: щелчкок пропадает, если вызван фейдаут, т.е., если громкость аудиовыхода 0, но только на том аудиовыходе, где убрана громкость. А на параллельно воспроизводящемся треке на другом аудиовыходе щелчёк остаётся. По-видимому, нельзя создавать более одного объекта QAudioOutput. Можно ли решить проблему унаследовавшись от данного класса? Бред, наврное...
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: проблема с QAudioOutput
«
Ответ #17 :
Сентябрь 29, 2014, 08:31 »
Цитата: elijah_olejnik от Сентябрь 28, 2014, 20:35
Ссылки полезные, даже что-то про ASIO увидел.
Обе библиотеки умеют работать со звуком через ASIO, но для этого при их сборке нужно сделать соответствующие define и скачать ASIO SDK.
Цитата: elijah_olejnik от Сентябрь 28, 2014, 20:35
меня помимо воспроизведения интересуют функции автоматического управления громкостью, т.е. fadein, fadeout, crossfade. В QAudioOutput очень неудобно реализовано, поскольку метод отвечающий за громкость QAudioOutput::setVolume(qreal volume) обращается напрямую к драйверу звуковой карты, регулируя громкость виртуального микшера. Мне необходимо делать это внутри программы, не затрагивая системную громкость.
Вообще говоря, функции управления громкостью звука без использования системного микшера не являются частью этих библиотек. Сделать это на уровне приложения совсем несложно - просто увеличивать/уменьшать значения семплов перед отправкой их на звуковую плату (правда, я не знаю что такое crossfade).
Цитата: elijah_olejnik от Сентябрь 28, 2014, 20:35
Документацию обязательно почитаю, попробую перевести свой проект на одну из этих библиотек, хотя бы, в качестве эксперимента.
Там всё достаточно просто - смотрите примеры, из них всё понятно. Рекомендую для начала посмотреть на RtAudo там вроде бы попроще концепция, хотя и в portaudio не сильно сложнее.
«
Последнее редактирование: Сентябрь 29, 2014, 09:12 от xokc
»
Записан
elijah_olejnik
Гость
Re: проблема с QAudioOutput
«
Ответ #18 :
Октябрь 07, 2014, 05:36 »
Проблема решилась. Суть в том, что для корректного использования функций этого класса, класс, использующий экземпляр QAudioOutput необходимо запускать в потоке с помощью класса-контроллера, с которым фактически и придётся работать. Всё соединяется через сигналы и слоты. Тогда работа QAudioOutput не будет конфликтовать с другими процессами, в том числе с другим потоком воспроизведения.
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...