2013-01-12 23 views
5

W Qt4 Ja używałemJak odtwarzać dźwięk w Qt5 (migracja 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(); 

i wszystko działało w porządku. Ale teraz Phonon is not supported in Qt 5. Zastanawiam się - jak mogę odtwarzać pliki multimedialne, takie jak dźwięk w Qt5?

Korzystanie z WebKit? (Jest to całkowicie możliwe, ale wygląda na złą z wielu punktów widzenia).

+0

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

Odpowiedz

5

Programiści Qt zaczęli ograniczać swoje wysiłki w zakresie integracji Phonon już w późniejszych wersjach Qt4, skupiając się na modułach Qt Multimedia i Qt Mobility. Chociaż nadal wspierają Phonona.

Jak już mówisz, od Qt5 Phonon nie jest już obsługiwany. Więc spójrz na Qt Multimedia zamiast tego, zwłaszcza QAudioOutput.

Jak wymieniono w ciągu their documentation pod „Szczegółowym Opisie”, odtwarzanie plików audio i wygląda mniej więcej tak:

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