2013-01-12 19 views
5

In Qt4 Ho usato per usareCome riprodurre l'audio in Qt5 (migrazione 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(); 

e tutto ha funzionato bene. Ma ora Phonon is not supported in Qt 5. Quindi mi chiedo: come posso riprodurre file multimediali come l'audio in Qt5?

Utilizzo di WebKit? (È del tutto possibile ma sembra male da molti punti di vista)

+0

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

risposta

5

Gli sviluppatori di Qt hanno iniziato a ridurre i loro sforzi sull'integrazione con Phonon già durante le ultime versioni di Qt4, concentrandosi invece sui moduli Qt Multimedia e Qt Mobility. Anche se hanno ancora supportato Phonon.

Come dici tu, a partire da Qt5, Phonon non è più supportato. Quindi cerca in Qt Multimedia invece, in particolare QAudioOutput.

come elencato nel their documentation nella sezione "Descrizione dettagliata", la riproduzione di un file audio sembra qualcosa di simile:

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