用C ++和Qt 5播放声音文件

时间:2017-07-31 23:50:59

标签: c++ qt audio

如何使用Qt 5和C ++播放声音文件?我已经尝试QSound但我被告知它在Ubuntu(我当前的操作系统)中不起作用,我听说过Phonon但是我的Qt包中似乎没有可用的库。

2 个答案:

答案 0 :(得分:5)

<强> QT5

QFile inputFile;
QAudioOutput* audio;
inputFile.setFileName("/tmp/test.raw");
inputFile.open(QIODevice::ReadOnly);

QAudioFormat format;
// Set up the format, eg.
format.setFrequency(7600);
format.setChannels(1);
format.setSampleSize(6);
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);

<强> C ++

使用BOOL PlaySound(LPCTSTR pszSound, HMODULE hmod, DWORD fdwSound);

#pragma comment (lib, "winmm.lib")
...
PlaySound(TEXT("recycle.wav"), NULL, SND_ASYNC);

SND_选项设为SND_ASYNC

PlaySound reference : MSDN

无论如何,你可以听音频。

答案 1 :(得分:1)

安装包含实用程序sox的程序包play。或者您可以使用mplayer或任何控制台媒体播放器。然后使用QProcess开始播放声音文件。

#include <QProcess>

.......

QProcess qprocess;
qprocess.startDetached("play",QStringList()<<"wav/alarm-clock-01.wav");

.......