2013-01-12 10 views
5

In Qt4 verwendete ichWie spielt man Sound in Qt5 (Qt4-Migration)?

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(); 

und alles funktionierte gut zu bedienen. Aber jetzt Phonon is not supported in Qt 5. Also frage ich mich - wie kann ich Mediendateien wie Sound in Qt5 abspielen?

Verwenden von WebKit? (Es ist durchaus möglich, sieht aber aus vielerlei Sicht schlecht aus)

+0

http://qt-project.org/doc/qt-5.0/qtmultimedia/multimediaoverview.html – Mat

Antwort

5

Die Qt-Entwickler begannen bereits in den späteren Versionen von Qt4, ihre Anstrengungen zur Phononintegration zu reduzieren und konzentrierten sich stattdessen auf die Module Qt Multimedia und Qt Mobility. Obwohl sie Phonon immer noch unterstützten.

Wie Sie sagen, wird Phonon ab Qt5 nicht mehr unterstützt. Schauen Sie sich stattdessen Qt Multimedia an, insbesondere QAudioOutput.

Wie aufgelistet in their documentation unter „Detaillierte Beschreibung“, sieht eine Audiodatei etwas wie folgt aus:

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);