QT5 QSound不播放所有wave文件

时间:2013-01-04 21:54:06

标签: qt qt5

我正在将基于QT4.X的应用迁移到QT5。 QT5中已删除了声子支持,因此我更改了播放wave文件的代码以使用QSound。

变化非常简单。我只需要使用QSound,它现在位于多媒体库中。这是代码:

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

对于我的大多数wave文件,这很好用;但是,对于我的波形文件(采样率为44100Hz),它不起作用。

可以找到官方QT错误here

更新:此错误已在qt 5.1中修复

2 个答案:

答案 0 :(得分:2)

事实证明,一些wave文件混淆了QSound。仍然不确定究竟是什么导致了这个问题。当我在Audacity中加载我的wave文件,然后将其导出回不同的wave文件而没有任何更改(相同的采样率......)。 QSound播放文件很好。

在MacOSX中,当我在有问题的波形文件上单击“获取信息”时,波形文件中的常规波形信息记录不可用;所以也许QSound无法从中获取采样率信息;并且因为它不知道波形文件的样本速率是多少?

有趣的是,iTunes播放原始文件很好,并且它以某种方式具有正确的采样率。 Phonon也常常播放原始文件。

无论如何,希望这对一些有QSound :: play()方法问题的人有所帮助。

更新:由于QSound :: play()在mac上非常错误,我选择使用本机NSSound从mac上的QT应用程序播放我的wave文件。这是代码:

void play_sound( const char* file)
{
    NSSound *sound = [[NSSound alloc] initWithContentsOfFile:[NSString stringWithUTF8String:file] byReference:NO];
    [sound play];
    [sound release];
}

答案 1 :(得分:0)

另请注意,Qt有几种不同的声音播放API。对于延迟较低的小文件播放,我发现这要快得多: http://doc.qt.io/qt-5/qsoundeffect.html#details

此外: http://doc.qt.io/qt-5/qmediaplayer.html