• 8657阅读
  • 8回复

[提问]ARM板子上QSound 可以播放哪种wav格式的声音? [复制链接]

上一主题 下一主题
离线wayne
 

只看楼主 倒序阅读 楼主  发表于: 2013-11-29
很是奇怪。 我接手到一个小项目,原代码里有播放wav的代码,交叉编译放在板子上,能正常播放声音。
但我仅仅将其中的一行代码偷梁换柱,换成 自己录的wav格式 却不能播放。

                QSound::play("./wav/login_successful.wav");
//              QSound::play("./wav/please_swipe_card.wav");
看来是wav的参数不对,于是我用wave shop软件比对了一下这两个文件的参数,结果我彻底无语了,这两个文件都是:

channel:    2
sample rate:    22050 Hz
sample size:    16 Bits
Frame size :    4 bytes



莫非wav 还有其他隐性的参数??




离线wayne

只看该作者 1楼 发表于: 2013-11-29
http://www1.icsi.berkeley.edu/Speech/faq/wavfile-fmts.html
OK,解决了。

wav格式 有两种,一种是 NIST/Sphere 的,一种是 Microsoft WAVE
离线XChinux

只看该作者 2楼 发表于: 2013-11-30
换其他音频文件格式看看。
加精,此问题我在qtcn头次见到。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线wayne

只看该作者 3楼 发表于: 2013-11-30
QSound只能播放wav格式,mp3啥的是不能播放的

前面提及的两种wav格式 在windows下貌似都能播放成功.
但在 友善之臂 FriendlyARM 6410 Linux 下,只能成功播放Microsoft 的 WAVE,NIST/Sphere 的 不能
离线wayne

只看该作者 4楼 发表于: 2013-12-01
回 1楼(wayne) 的帖子
我现在在我的ArchLinux下 无法播放wav格式的文件. 查了文档,说在Linux下QSound是 用/dev/dsp设备播放的,但我的Linux没有该设备.莫非是我的Linux太新了?


也许我在1楼的总结有问题.
因为stackoverflow 上有人说他最开始也播放不了wav,后来用Audacity 导入该音频文件,然后再导出成另一个名字的wav,而不做任何参数的改动,却能成功播放:
http://stackoverflow.com/questions/14165608/qt5-qsound-does-not-play-all-wave-files
离线wayne

只看该作者 5楼 发表于: 2013-12-01
我在论坛里搜到 一种解决方案,就是把 wav文件 换成 绝对路径, 这个试了 不行.

后来我稍微一想,笑了.  大概是 某人编译出来的二进制文件跟wav不在一个路径下面, 所以才播放不了吧
离线wayne

只看该作者 6楼 发表于: 2013-12-01
QSound的文档是这么说的:
On Microsoft Windows the underlying multimedia system is used; only WAVE format sound files are supported.
On X11 the Network Audio System is used if available, otherwise all operations work silently. NAS supports WAVE and AU files.
On Macintosh, ironically, we use QT (QuickTime) for sound, this means all QuickTime formats are supported by Qt/Mac.
On Qt/Embedded, a built-in mixing sound server is used, which accesses /dev/dsp directly. Only the WAVE format is supported.
The availability of sound can be tested with QSound::isAvailable().

我试了一下,在Linux下, QSound::isAvailable() 函数总是返回false
离线wayne

只看该作者 7楼 发表于: 2013-12-01
也许 我该重新编译Qt ? 之前我编译Qt的时候 没留意这个问题.
网上有人说, 编译的时候,要看到这个才行
NAS sound support ... yes

http://developer.nokia.com/Community/Discussion/showthread.php/203537-QSound%28%29-isAvailable-false-on-N900
好像 Qt官方开发者 都不屑于解决这种QSound产生的bug问题:
http://bugreports.qt.nokia.com/browse/QTBUG-11555
离线彩阳

只看该作者 8楼 发表于: 2013-12-15
Qt能够让你播放wav格式的已经不错了。实在不行你可以对Sphere进行转吗嘛。
其实Qt的tga插件也不能完美地载入tga格式的图片,有些带游程长度压缩的tga格式它就无法载入。
上海Qt开发联盟,热忱地欢迎你的加入!
快速回复
限100 字节
 
上一个 下一个