2013-01-12 15 views
5

Ben Qt5'te ses nasıl oynanır (Qt4 geçişi)? Qt4 yılında

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

kullanmak için kullanılır ve tüm iyi çalıştı. Ama şimdi Phonon is not supported in Qt 5. Bu yüzden merak ediyorum - Qt5'te ses gibi medya dosyalarını nasıl çalabilirim?

WebKit'i Kullanma? (Bu tamamen mümkündür, ancak birçok bakış açısından kötü görünüyor)

+0

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

"Ayrıntılı Açıklaması" altında their documentation içinde listelenen gibi

, bir ses dosyası çalmaya şuna benzer – Mat

cevap

5

Qt geliştiricileri, Qt4'ün sonraki sürümlerinde, daha sonra Qt Multimedia ve Qt Mobility modüllerine odaklanarak Fonon entegrasyonu konusundaki çabalarını azaltmaya başladılar. Yine de Phonon'u desteklediler.

Dediğiniz gibi, Qt5'ten itibaren, Fonon artık desteklenmemektedir. Yani Qt Multimedia yerine, özellikle QAudioOutput'a bakın.

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); 
İlgili konular