用QSound播放.wav(Qt)没有声音存在

时间:2011-08-31 04:29:50

标签: c++ qt audio

我尝试使用QSound::play

在Qt中播放.wav文件

我试过这段代码:

QSound::play("airplane.wav");

构建时没有错误但运行时没有声音?!

2 个答案:

答案 0 :(得分:1)

这对我来说是响铃,所以我找到了用来处理声音的代码。我们的平台是Windows,所以这对我们有用。我把所有这些都包含在一个播放器类中。我对自己的笔记说,QSound想要平台格式的绝对路径(通过检查QSound代码找到)。所以尝试通过类似的东西获取文件路径

// (note the "sSoundPath" variable is set to where we store our sound files).
static const QString sSoundPath("./resources/sounds/");

...别处

//  QSound wants absolute paths, in platform format

QFileInfo fileInfo(soundFile);

if (fileInfo.isRelative())
{
    //  we assume one of our own sound files in a relative path
    fileInfo.setFile(sSoundPath + soundFile);
    fileInfo.makeAbsolute();
}

if (!fileInfo.exists())
{
    return false;
}

mSoundFile = QDir::toNativeSeparators(fileInfo.filePath());

现在你可以继续尝试播放声音文件了。

答案 1 :(得分:0)

我在类似的问题上度过了无数天。基本上,我发现QSound不支持44100 Hz采样率的波形文件。在QT5 QSound does not play all wave files

查看我的发现

附注,QSound不支持QT资源,以防您使用QT资源。解决方法是将资源复制到文件中,然后使用QSound从硬盘驱动器播放该文件。希望这些信息有所帮助。