выберите звук выхода звука при использовании QSoundEffect

я использую QSoundEffect играть в петли .wav файлы. Этот класс стал для меня решением, потому что он позволяет нам воспроизводить звуки с низкой задержкой.

Все было хорошо, но теперь мне нужно выбрать устройство вывода, но я не нашел способ сделать это с QSoundEffect, Я знаю что используя QAudioDeviceInfo Я могу получить список доступных устройств и использовать одно из них в конструкторе QAudioOutput объект для воспроизведения файла WAV, но QAudioOutput не позволяет нам делать петли с низкой задержкой.

Дело в том, что мне нужна функциональность выбора устройства вывода звука, которое QAudioOutput а также QAudioDeviceInfo но способность играть играть в петли с низкой задержкой, которые QSoundEffect предложения.

Другими словами, у меня есть все части моего желаемого решения, но я не знаю, как их соединить.

5

Решение

Поскольку Qt5.7 плагин alsa qt (libqtaudio_alsa.so) использует устройство «по умолчанию», это можно настроить в /etc/asound.cfg или ~ / .asoundrc
В приведенном ниже примере я выбираю плагин dmix в качестве устройства по умолчанию:

pcm.dmixed {
type dmix
ipc_key 1024
ipc_key_add_uid 0
slave.pcm "hw:0,0"}
pcm.dsnooped {
type dsnoop
ipc_key 1025
slave.pcm "hw:0,0"}

pcm.duplex {
type asym
playback.pcm "dmixed"capture.pcm "dsnooped"}

pcm.!default {
type plug
slave.pcm "duplex"}

ctl.!default {
type hw
card 0
}
1

Другие решения

Я решил эту проблему некоторое время назад с помощью QT 5.1.1 следующим образом:

 QByteArray audio_data;
inputFile.seek(44); // skip wav header
audio_data = inputFile.readAll();
for(int i=0;i<4;i++){
audio_data.append(audio_data);
}
QBuffer* audio_buffer = new QBuffer(&audio_data);
audio_buffer->open(QIODevice::ReadOnly);
audioOutput->start(audio_buffer);//start test playback
connect(audioOutput,SIGNAL(stateChanged(QAudio::State)),this,SLOT(finishedPlaying(QAudio::State)));
while(audioOutput->state() == QAudio::ActiveState){
qeloop.exec();
}
audio_data.clear();
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector