Задать вопрос
@Smosia

Как правильно проиграть wav файл в qt?

Пишу программу, которая будет проигрывать wav файлы. Первый опыт с QT.
Считываю побайтово заголовок wav файла, а затем данные о звуке считываю фрагментами в QByteArray, который затем пишу на QIODevice.
Проблема в том, что вместо музыки я слышу только первую ноту моего файла и воспроизведение прекращается.
QAudioOutput * m_audioOutput;
    QByteArray buffer;
    QIODevice * m_output;
    m_audioOutput = new QAudioOutput(m_fileFormat);
    m_output=m_audioOutput->start();
    buffer = wavFile.read(wavHeader.bytesPerSec);
    m_output->write(buffer.data(), buffer.size());
    QEventLoop loop;
    QObject::connect(m_output, SIGNAL(bytesWritten(qint64)), &loop, SLOT(quit()));
    loop.exec();


Мне кажется, что я неправильно работаю с сигналом. Подскажите, в чем может быть моя ошибка? Почему вместо музыки только эта одна нота? Заранее спасибо.
ps. Если нужно могу выложить весь остальной код.
  • Вопрос задан
  • 4764 просмотра
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
@DancingOnWater
Прочий код не помешал бы, но как минимум странным выглядит прерывание event-лупа. Я правильно понимаю, что после него программа завершается?
Если так, то все понятно: вы записали в микшер ОС данные и поставили их в очередь на воспроизведение, после этого высылаете сигнал, что данные записаны и после этого закрываете приложение.
Есесно, все что вы записали удаляется из микшера
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
EXL
@EXL
Энтузиаст
А phonon не рассматривали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы