Как воспроизвести звук в Qt5 (миграция Qt4)?

В 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?

Используете вебкит? (Это вполне возможно, но выглядит плохо со многих точек зрения)


person myWallJSON    schedule 12.01.2013    source источник
comment
qt-project.org/doc/qt-5.0/qtmultimedia/multimediaoverview. html   -  person Mat    schedule 12.01.2013


Ответы (1)


Разработчики 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);
person Bart    schedule 12.01.2013