Qt,Linux: 播放声音(aplay)
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)相关推荐
- Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等
Qt linux获取cpu使用率.内存.网络收发速度.磁盘读写速度.磁盘剩余空间等,实际上大部分都和qt无关的,用其他语言也可以获取. code: .h #ifndef RESOURCE_MINITO ...
- qt linux引用动态库
unix{ LIBS += -L../bin -lSupportAll#dll引用 LIBS += -L /root/QtDemo/Test -lTest LIBS += -L../bin -lUse ...
- qt linux系统获取当前时间(精确到毫秒、微秒)
qt linux系统获取当前时间(精确到毫秒.微秒) Windows系统获取系统时间可以直接用SYSTEMTIME t;,将Windows平台程序移植到linux后,SYSTEMTIME将不再适用,如 ...
- 记录下 QT Linux 静态编译遇到的坑
记录下 QT Linux 静态编译遇到的坑 记录下 QT Linux 静态编译遇到的坑 - 貘吃馍的日志 - 网易博客 http://qbaok.blog.163.com/blog/static/10 ...
- Qt/Linux 下的摄像头捕获(Video4Linux2)
Linux下使用各种设备是一件令人兴奋的事情.在Unix的世界里,用户与硬件打交待总是简单的.最近笔者在Linux下搞了摄像头的开发,有一点感想发于此处. Linux中操作一个设备一般都是打开(ope ...
- qt linux实现鼠标位置自动移动,【已解决】qt中鼠标能显示但是无法移动
[问题] 在完成了Linux kernel中的对应的一个模拟鼠标的输入设备(input device)easypoint驱动后,验证了该驱动可以正常工作了,输入 cat /dev/input/even ...
- qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)
Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...
- 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 ...
- rapidxml在qt linux(gcc)下写xml文件出错
在linux(gcc)下使用qt写入xml出错,代码如下: 错误如图:这里写图片描述 在网上找了好久没有找到答案,最后在http://stackoverflow.com/questions/14113 ...
- qt linux 国际化,多语言,配置CLion管理Qt项目国际化支持
随着Qt 6的发布,cmake也正式宣告接管qmake的工作了. 在之前的一篇博客里我介绍了如何使用cmake管理你的qt项目,不过有一点我没有讲,那就是对国际化(i18n)的处理. 今天我们就来介绍 ...
最新文章
- UVa 941 Permutations
- hibernate的异常 Session was already closed
- java tm for chrome_java – 是否可以使用Postman Chrome扩展程序发送hashmap?
- CSDN产品公告:APP新增大厂在线刷题功能、博主排名规则更新、MD编辑器优化
- mysql -uroot -proot tc -e select * from merchandise limit 1这个-E的命令作用是什么,用来什么什么的?
- [py][mx]django form验证-给db减压
- IO流-LineNumberReader
- cross apply
- Python学习笔记(五)—LOOP 循环
- 学习JSP大学实用教程
- PHP之安装Pear
- php文字游戏寻仙记,【寻仙记H5】Win服务端+小白架设教程+文字游戏+小仙亲测
- win10多合一原版系统_【教程】制作Windows 10 多合一原版系统
- iphone上开发即时聊天工具
- grads插值_GrADS学习资料:第2章 数据处理
- java 电子签章 开源_java操作pdf制作电子签章 - CSDN博客
- 手把手教你下载ILSVRC2012(ImageNet2012)分类部分数据集以及使用Pytorch训练
- 征途对计算机配置要求,征途2配置要求是什么?
- ZYNQ OV7725和OV5640摄像头速度测试
- 处理器后面的字母含义_英特尔CPU后缀新丁加入,后缀“F”的含义代表什么?...