c++ 带有QML SoundEffect音频播放的WAV文件失真

juud5qan  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(147)

我第一次尝试将SoundEffect与QML一起使用时,我得到了混合的结果,但不清楚为什么。我可以在嵌入式C++设备的用户界面中成功地使用QML SoundEffect。我无法解决的问题是为什么有些WAV文件可以播放得非常清晰,而有些则不行。
我确信我的代码是正确的...它是关于如何解释音频的东西。我不能共享我正在使用的WAV文件...但下面是发生的事情:
我有两个WAV文件:
wav_file1_that_works.wav(该文件为83 kb)

wav_file2_that_does_not_work. wav(文件大小为110 kb)
这两个文件在VLC或媒体播放器或其他设备中播放都很好。但是当通过QML功能运行以作为设备上触摸的反馈播放时,第一个WAV文件播放得很好,而第二个没有。它似乎不是硬件问题,因为在虚拟环境中工作时出现的同样的问题完全相同。我我怀疑在QT/QML环境中使用WAV音频有什么限制?但是我在文档中找不到任何限制。我唯一怀疑的是文件大小,或者其他一些特定的声音文件要求。
首先声明文件的声音链接:

SoundEffect {
        id: playSound
        source: "qrc:/wav_file2_that_does_not work.wav"
    }

然后在UI事件上播放它(不是确切的代码,但事件的工作方式肯定是这样的:

MyUiItem {
     
        onMyUiTouched: {
         
            playSound.play();
        }
    }

文件1播放得很好,文件2播放得很好,但声音非常失真。
我可能对WAV文件编码的工作原理了解不够,但从表面上看,这两个文件似乎都编码正确。

rqcrx0a6

rqcrx0a61#

我通过重构应用程序在压缩WAV文件时的编译方式解决了这个问题。不幸的是,我发现如果我让我的企业部署系统做它的事情,它会压缩所有内容,包括所有多媒体,除非我应用某些参数不压缩。现在这个方法成功了。谢谢你的帮助。

相关问题