首页 > 系统相关 >Qt6.4.2 QSoundEffect 在 ubuntu22.04 下的不好用

Qt6.4.2 QSoundEffect 在 ubuntu22.04 下的不好用

时间:2023-01-21 00:00:10浏览次数:43  
标签:Qt6 声音 Qt6.4 Qt ubuntu22.04 linuxdeployqt QSoundEffect 播放

本着跟踪技术潮流和尝鲜精神,一直尽量让自己机器安装最新环境,还要经常保持升级。ubuntu版本是22.04,Qt是6.4.2。
最近对morse码很感兴趣,想学习找不到合适工具,所以就用Qt6写一个。

 

QSoundEffect和QMultimedia都是Qt提供的可以播放声音的工具,但QSoundEffect时间响应要好于QMultimedia,需要精确时间控制和快速响应的声音播放应该选用QSoundEffect。
声音方案很简单,界面上维护着一个全局的QSoundEffect,初始化时候装入音频文件,在需要时候播放,滴嗒声音靠定时器控制QSoundEffect的播放时长。
前期测试时功能基本可用,就把代码固定下来。虽然这个月ubuntu和qt都进行过更新,但也没做多想,没再进行过测试,而是集中精力研究了Qt的部署问题。
win环境部署有现成的windeployqt,linux的linuxdeployqt得单独准备。因为环境太新,所以只能下载源码自己编译。费了很多周折,总算把部署问题基本搞定。结论是linuxdeployqt根本不是给Qt6准备,Qt6的应用直接用linuxdeployqt生成的安装根本不可用,还得自己额外补充很多必要库之后在新环境才可能使用。又测试一个Qt5生成的应用,linuxdeployqt表现还可以。
但把我的应用部署到新环境之后,却发现出了问题。QSoundEffect无法连续工作,发出五六次声音之后,再也不出声。查很多资料理不出头绪。只好做折衷,先让应用跑起来再说。不使用全局的QSoundEffect,改为在每次发声前申请一个“新鲜”的QSoundEffect,只使用一次。这样处理之后连续发声可以实现,但又发现新问题,每次播放的第一个声音,不管是滴还是嗒都会不出声,之后的所有滴嗒都正常。找不出原因,还是折衷让应用先跑起来。又申请一个QSoundEffect,装入空白声音,在正式播放之前,先放这个空白100毫秒,再停止,再延时100毫秒之后再进行正式播放,这么处理之后,所有声音都能够按要求播出。虽然应用按设计要求实现了功能,但这代码真的很恶心,莫名其妙加入那么多垃圾。
为了做对照,用Qt5实现了同样功能,Qt5的表现好于Qt6,全局的QsoundEffect好用,不需要重复申请,但吃掉第一个声音的现象还有,还得用播放一个空白来抵消。
在Win下编译同样代码,这些现象都不存在,只需要按正常逻辑实现即可。总的说来,Linux下的Qt成熟度还是不大够。

标签:Qt6,声音,Qt6.4,Qt,ubuntu22.04,linuxdeployqt,QSoundEffect,播放
From: https://www.cnblogs.com/sundp/p/17063416.html

相关文章

  • ubuntu22.04 arm64进行换源过程中遇到的问题
    1.要使用arm64架构对应的镜像源以中科大镜像源为例https://mirrors.ustc.edu.cn/help/ubuntu-ports.html应使用该文档中提供的镜像仓库的源,而不是一般的对应x86架构的镜......
  • ubuntu22.04 myslq初始化配置
    1.装包sudoaptinstallmysql-server-y2.初始化ubuntu22.04默认安装mysql8新建mysql是没有密码的mysql-uroot-p ALTERUSER'root'@'localhost'IDENTI......
  • ubuntu22.04 挂载NAS硬盘
    家里有个NAS存储,每次访问都需要通过浏览器形式,想直接在本地访问NAS的文件,因此需要将NAS挂载到本地。首先在/mnt文件目录中新建一个文件夹mkdirnas然后下......
  • ubuntu22.04中默认openssh和ssl版本过高导致的和低版本ssh无法互相通信的问题
    问题装了一个ubuntu22.04(机器A),和老机器ubuntu12.04(机器B)通信的时候出现了问题,由于禁止了密码登陆,互相配了密钥,结果出现了AB机器不能互相通信的情况解决方案在/etc/ssh/sshd_......
  • USB应用实战视频教程第5期:手把手玩转USB HID免驱方式下位机和QT6.4上位机开发上篇(2022
     前两期USB实战视频教程分享了USBBULK的下位机和QT6.4下位机开发,本期视频教程,我们带来HID的免驱方式玩法,上篇依然是先分享下位机开发方式另外还有很重要的一点,早期的F1,F2......
  • ubuntu22.04启用sshd远程
    1.系统升级ubuntu有一个很麻烦的特性,就是新装的系统需要先更新系统:sudoapt-getupdate-y2.安装openssh-server【sshd】sudoaptinstall openssh-server 3.开......
  • Ubuntu22.04 编译安装nginx
    1、下载nginx软件包 https://nginx.org/en/download.html   2、压缩包上传服务器并解压缩tarxfnginx-1.22.1.tar.gz   3、进入解压目录,编译安装root......
  • ubuntu22.04 安装nginx
    1、使用apt-get安装nginx(得机器能联网才行)#切换到root用户#切换到root用户sudo-i#更新apt源apt-getupdate#安装nginxapt-getinstallnginx-y......
  • Ubuntu22.04 不能正常打开Flameshot 截图软件
    Ubuntu22.04安装Flameshot后通过命令 flameshotgui启动截图软件会打开下面的界面 而不是正常的Flameshot截图软件出现这个问题是Gnome的问题,详细说明在这里https:/......
  • Ubuntu22.04运行Appmage文件
    解决方法sudoapt-getupdatesudoaptinstallfuselibfuse2chmoda+x*.appimage参考资料https://bynss.com/linux/918425.html......