我在迁移基于QT4.X到QT5我们的应用程序之中。 声子的支持在QT5被删除,所以我改变了我的代码,可播放波形文件使用QSound的。
变化是非常简单的。 我不得不使用QSound的,这是现在位于多媒体库。 下面是代码:
QSound::play("small_wave_file.wav");
对于大多数的我的波形文件,这工作就好了; 然而,我的波形文件(44100Hz采样率),这是行不通的。
官方QT的bug都可以找到这里 。
UPDATE:此bug已被固定在QT 5.1
我在迁移基于QT4.X到QT5我们的应用程序之中。 声子的支持在QT5被删除,所以我改变了我的代码,可播放波形文件使用QSound的。
变化是非常简单的。 我不得不使用QSound的,这是现在位于多媒体库。 下面是代码:
QSound::play("small_wave_file.wav");
对于大多数的我的波形文件,这工作就好了; 然而,我的波形文件(44100Hz采样率),这是行不通的。
官方QT的bug都可以找到这里 。
UPDATE:此bug已被固定在QT 5.1
事实证明,一些波形文件混淆QSound的。 还是不知道到底是什么原因导致的问题。 当我装在我的无畏的波形文件,然后出口回一个不同的波形文件没有任何变化(相同的采样率......)。 QSound的播放文件就好了。
在MacOSX上,当我点击“获取信息”上有问题的波形文件,从波形文件一般的波动信息记录不可用; 因此,或许QSound的无法从获得采样率的信息; 因为它不知道从波形文件,以期待其采样率是多少?
有趣的是,iTunes中播放的原始文件蛮好的,它在某种程度上有正确的采样率。 此外声子用于播放原始文件以及就好了。
总之,希望这可以帮助一些人说有问题与QSound的:: play()方法。
更新:由于QSound的发挥::()是在MAC非常错误,我选择使用本地NSSound从在mac上QT应用发挥出自己的波形文件。 下面是代码:
void play_sound( const char* file)
{
NSSound *sound = [[NSSound alloc] initWithContentsOfFile:[NSString stringWithUTF8String:file] byReference:NO];
[sound play];
[sound release];
}
还要注意的是Qt的有几个不同的声音播放的API。 对于具有更低的时延小文件的播放,我发现这是更快: http://doc.qt.io/qt-5/qsoundeffect.html#details
另外: http://doc.qt.io/qt-5/qmediaplayer.html