В Qt4 я использовал
QT += multimedia phonon
//...
#include <Phonon>
//...
Phonon::MediaObject *mediaObject = Phonon::createPlayer(Phonon::NoCategory, Phonon::MediaSource(QUrl("./assets/audio/window_appear.wav")));
// "\"" + Qdir().absolutePath() + "/audio/click.wav" + "\""mediaObject->play();
и все работало нормально. Но сейчас Phonon не поддерживается в Qt 5. Поэтому мне интересно — как я могу воспроизводить мультимедийные файлы, такие как звук, в Qt5?
Использование WebKit? (Это вполне возможно, но выглядит довольно плохо с многих точек зрения)
Разработчики Qt начали сокращать свои усилия по интеграции Phonon уже во время более поздних версий Qt4, сосредоточившись вместо этого на модулях Qt Multimedia и Qt Mobility. Хотя они все еще поддерживают Phonon.
Как вы говорите, с Qt5 Phonon больше не поддерживается. Так что смотрите в Qt Multimedia вместо этого, особенно QAudioOutput.
Как указано в их документация в разделе «Подробное описание» воспроизведение аудиофайла выглядит примерно так:
QFile inputFile; // class member.
QAudioOutput* audio; // class member.
inputFile.setFileName("/tmp/test.raw");
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);
QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
if (!info.isFormatSupported(format)) {
qWarning()<<"raw audio format not supported by backend, cannot play audio.";
return;
}
audio = new QAudioOutput(format, this);
connect(audio,SIGNAL(stateChanged(QAudio::State)),SLOT(finishedPlaying(QAudio::State)));
audio->start(&inputFile);
Других решений пока нет …