QT5 QSound的没有发挥所有的波形文件(QT5 QSound does not play al

2019-07-17 21:00发布

我在迁移基于QT4.X到QT5我们的应用程序之中。 声子的支持在QT5被删除,所以我改变了我的代码,可播放波形文件使用QSound的。

变化是非常简单的。 我不得不使用QSound的,这是现在位于多媒体库。 下面是代码:

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

对于大多数的我的波形文件,这工作就好了; 然而,我的波形文件(44100Hz采样率),这是行不通的。

官方QT的bug都可以找到这里 。

UPDATE:此bug已被固定在QT 5.1

Answer 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];
}


Answer 2:

还要注意的是Qt的有几个不同的声音播放的API。 对于具有更低的时延小文件的播放,我发现这是更快: http://doc.qt.io/qt-5/qsoundeffect.html#details

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



文章来源: QT5 QSound does not play all wave files
标签: qt qt5