Linux下,Qt开发,使用的电脑情况比较复杂,开发机是Intel cpu, 常用的验证机是飞腾(arm)cpu, 客户的目标机也是飞腾(arm)cpu, 但验证机和目标机上情况还不太一样。

需要用到播放声音的功能,开发机,验证机,目标机,三个电脑上来回折腾,也没找到一个统一的方法,试过QMediaPlayer,QSound,结果是开发机和验证机都搞定了,但到目标机上怎么也搞不定,遇到过的错误大致如下:

1. defaultServiceProvider::requestService(): no service found for - “org.qt-pr

2. using null output device, none available

在目标机上折腾了很长时间,在截止日前两天仍然搞不定。

于是换个思路,既然直接双击音频可以播放,说明OS层面对音频的支持没问题。可以考虑Qt以外的播放功能。

找到了aplay, 先尝试在终端执行 :

aplay hint.wav

成功,声音可以播放。

然后放进代码中:

QString audioPath = "/audio/hint.wav";QProcess p;
p.start("aplay " + audioPath);
p.waitForFinished();

测试成功,可以播放。

直接用QProcess播放的话主线程会卡一下。更进一步考虑多线程:

//ThreadPlaySound.h ********************
class ThreadPlaySound: public QThread
{
public:ThreadPlaySound();QString audioPath;protected:void run() override;
};//ThreadPlaySound.cpp ********************
ThreadPlaySound::ThreadPlaySound()
{
}void ThreadPlaySound::run()
{QProcess p;p.start("aplay " + audioPath);p.waitForFinished();this->exit();
}//调用
ThreadPlaySound* t = new ThreadPlaySound();
t->audioPath = audioPath;
t->start();

测试成功,连续播放也不会卡主主线程。

aplay参考:aplay command in Linux with examples - GeeksforGeeks

Qt,Linux: 播放声音(aplay)相关推荐

  1. Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等

    Qt linux获取cpu使用率.内存.网络收发速度.磁盘读写速度.磁盘剩余空间等,实际上大部分都和qt无关的,用其他语言也可以获取. code: .h #ifndef RESOURCE_MINITO ...

  2. qt linux引用动态库

    unix{ LIBS += -L../bin -lSupportAll#dll引用 LIBS += -L /root/QtDemo/Test -lTest LIBS += -L../bin -lUse ...

  3. qt linux系统获取当前时间(精确到毫秒、微秒)

    qt linux系统获取当前时间(精确到毫秒.微秒) Windows系统获取系统时间可以直接用SYSTEMTIME t;,将Windows平台程序移植到linux后,SYSTEMTIME将不再适用,如 ...

  4. 记录下 QT Linux 静态编译遇到的坑

    记录下 QT Linux 静态编译遇到的坑 记录下 QT Linux 静态编译遇到的坑 - 貘吃馍的日志 - 网易博客 http://qbaok.blog.163.com/blog/static/10 ...

  5. Qt/Linux 下的摄像头捕获(Video4Linux2)

    Linux下使用各种设备是一件令人兴奋的事情.在Unix的世界里,用户与硬件打交待总是简单的.最近笔者在Linux下搞了摄像头的开发,有一点感想发于此处. Linux中操作一个设备一般都是打开(ope ...

  6. qt linux实现鼠标位置自动移动,【已解决】qt中鼠标能显示但是无法移动

    [问题] 在完成了Linux kernel中的对应的一个模拟鼠标的输入设备(input device)easypoint驱动后,验证了该驱动可以正常工作了,输入 cat /dev/input/even ...

  7. qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)

    Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...

  8. linux 移植qt,Linux下移植QT(2)---移植QT

    准备:ubantu12.04   内核 3.0.8(最好用同样的内核,3.2.0时没成功) 交叉编译工具:arm-cortex_a8-linux-gnueabi-gcc-4.4.6 QT版本5.4.2 ...

  9. rapidxml在qt linux(gcc)下写xml文件出错

    在linux(gcc)下使用qt写入xml出错,代码如下: 错误如图:这里写图片描述 在网上找了好久没有找到答案,最后在http://stackoverflow.com/questions/14113 ...

  10. qt linux 国际化,多语言,配置CLion管理Qt项目国际化支持

    随着Qt 6的发布,cmake也正式宣告接管qmake的工作了. 在之前的一篇博客里我介绍了如何使用cmake管理你的qt项目,不过有一点我没有讲,那就是对国际化(i18n)的处理. 今天我们就来介绍 ...

最新文章

  1. UVa 941 Permutations
  2. hibernate的异常 Session was already closed
  3. java tm for chrome_java – 是否可以使用Postman Chrome扩展程序发送hashmap?
  4. CSDN产品公告:APP新增大厂在线刷题功能、博主排名规则更新、MD编辑器优化
  5. mysql -uroot -proot tc -e select * from merchandise limit 1这个-E的命令作用是什么,用来什么什么的?
  6. [py][mx]django form验证-给db减压
  7. IO流-LineNumberReader
  8. cross apply
  9. Python学习笔记(五)—LOOP 循环
  10. 学习JSP大学实用教程
  11. PHP之安装Pear
  12. php文字游戏寻仙记,【寻仙记H5】Win服务端+小白架设教程+文字游戏+小仙亲测
  13. win10多合一原版系统_【教程】制作Windows 10 多合一原版系统
  14. iphone上开发即时聊天工具
  15. grads插值_GrADS学习资料:第2章 数据处理
  16. java 电子签章 开源_java操作pdf制作电子签章 - CSDN博客
  17. 手把手教你下载ILSVRC2012(ImageNet2012)分类部分数据集以及使用Pytorch训练
  18. 征途对计算机配置要求,征途2配置要求是什么?
  19. ZYNQ OV7725和OV5640摄像头速度测试
  20. 处理器后面的字母含义_英特尔CPU后缀新丁加入,后缀“F”的含义代表什么?...

热门文章

  1. 曲面的法向量+高斯公式曲面的方向余弦的计算
  2. hspice linux 软件,Hspice 200803 linux安装(亲测可行)
  3. Linux 下Nginx SSL/HTTPS 配置
  4. java---金额中文大小写实时转换小程序
  5. vue组件库开发(npm包发布)
  6. json字符串转对象+解析淘口令生成新淘口令
  7. 过极验滑块破解-小米商城app过滑块
  8. openstack-KVM-vCPU
  9. 多个版本的BIND DNS软件都存在一个严重漏洞
  10. qtdesigner页面布局