A40i使用笔记:使用QT调用aplay播放wav音频/混音
一、前言
在linux当中播放音乐的方式有很多种,我使用的A40i核心板,是 aplay 指令,是 alsa 的一个指令,也就是说需要先安装有 alsa,使用其他arm开发板的小伙伴可以先自行安装alsa之后在进入正文,这里我没实际自己安装,也就不说明了。
二、环境
linux3.10
alsa、aplay源码
qt5.9
参考连接:linux 播放音频
Linux---ALSA音频工具arecord、aplay、amixer使用
Qt调用aplay播放PCM
QT界面完成录音与播放功能以及环境配置
三、正文
在使用音频之前,我也是小白,对于专用的音频播放器一窍不通,只是使用过串口控制芯片转音频输出的模块,JQ8900芯片是一个比较简单的播放音频芯片,有专用的模块某宝自行查询即可。
在使用linux后需要音频应用了,发现有些东西尽量还是用官方的,标准的,原生的好一些,而不是简单草率的随便挂个转换芯片,那种情况一般是51、32那种没有专用接口才扩展,在有接口的情况下还是用专用接口,节省电路板空间资源,并且使用起来会很方便。
某凌的核心板软件放音测试如下,我是用的是speaker放音
这种方式是调用alsa下的aplay应用播放和录音,算是一个一级应用程序,可以使用他去二次开发,也可以看他的源码,从中获取有用的部分自行嵌入到QT应用程序中。(推荐后者方式)
下面就照以上两种方式进行音频播放说明/混音播放说明:
方式一:QT调用aplay程序播放音频/混音播放
初始化,开启左右声道,开启喇叭播放,设置音量
system("amixer cset numid=15,iface=MIXER,name='Phone Out Mixer LOMIX Switch' on");
system("amixer cset numid=16,iface=MIXER,name='Phone Out Mixer ROMIX Switch' on");
system("amixer cset numid=48,iface=MIXER,name='Phoneout Speaker Switch' on");
system("amixer cset numid=2,iface=MIXER,name='digital volume' 50");
单独放音调用
p_music = new QProcess(this);p_music->start("aplay -Dhw:0,0 /root/game-fengzhigu.wav");p_music1 = new QProcess(this);p_music1->start("aplay -Dhw:0,0 /root/game-tongguan.wav");if(p_music->state()==QProcess::Running){//关闭
// p_music->kill();
// p_music->waitForFinished();delete p_music;}if(p_music1->state()==QProcess::Running){//关闭
// p_music1->kill();
// p_music1->waitForFinished();delete p_music1;}p_music1 = new QProcess(this);p_music1->start("aplay -Dhw:0,0 /root/game-tongguan.wav");
混音调用
p_music = new QProcess(this);
// p_music->start("aplay -Dhw:0,0 /root/game-fengzhigu.wav");//仅限单个文件播放p_music->start("aplay -D plug:dmix /root/game-fengzhigu.wav &");//可以混音多个文件播放connect(ui->btn_testvolume,&QPushButton::clicked,[=](){//测试音量if(p_music->state()==QProcess::Running){
// p_music->kill();
// p_music->waitForFinished();
// delete p_music;}p_music = new QProcess(this);p_music->start("aplay -D plug:dmix /root/game-tongguan.wav");});
方式二:QT重写aplay源码专用部分功能函数播放音频/混音播放
暂时没有需求,没有时间(借口),待实际使用更新此部分
四、结语
逆水行舟
A40i使用笔记:使用QT调用aplay播放wav音频/混音相关推荐
- Alsa-lib实现播放wav音频
Alsa-lib实现播放wav音频 1.alsa-lib移植 例程中使用的alsa-lib库是1.2.6版本的,目前最新的release版本已经到1.2.7版本了,可以根据自身需求下载. 具体下载链接 ...
- Android使用AudioTrack播放WAV音频文件
目录 1.wav文件格式 2.wav文件解析 3.wav文件播放 QA: 开始播放wav的时候使用了系统的播放器mediaplayer进行播放,但是无奈mediaplayer支持的实在不好. 好些年前 ...
- 实现在线播放Wav音频文件,支持IE和Google
最近在弄一个在线播放Wav音频文件的功能,发现audio只支持在google浏览器下才能访问,ie是不支持的,但是ie支持embed标签的播放. getWebIE:function(){var use ...
- Java 采集声音_通过java采集PC麦克风音频及播放wav音频文件
AudioFormat对象 sampleRate 采样率 每秒音频采样数量 sampleSizeInBits 采样位数 每个采样的位数 channels 声道 1: Mono 单声道,2:Stereo ...
- Linux下使用C++播放wav音频文件
Linux下使用C++播放wav音频文件 安装openal第三方库 上代码 安装openal第三方库 unbuntu下安装命令:sudo apt-get install libopenal-dev 安 ...
- QT播放Wav音频并显示波形
1.前言 因为项目需要,做了个小工具来做前期准备. 这个需求实现两步:播放和显示波形. 播放方面,一开始选择FMod,小工具快做好的时候偶然发现FMod需要商业授权,所以只能放弃.试了试ffmpeg+ ...
- Linux alsa-lib c语言 播放wav音频
编程步骤: 1.指定使用最新的ALSA API #define ALSA_PCM_NEW_HW_PARAMS_API 2.包含头文件 #include <alsa/asoundlib.h> ...
- windows播放wav音频文件
摘要 遇到过很三次win10系统下调用sndPlaySound导致虚拟内存(分页缓冲池)泄露的情况,于是乎便尝试换个方式播放wav文件,使用zplay库进行播放,还是存在泄露.后来参照网上的教程调 ...
- A40i使用笔记:QT使用alsa采集音频pcm信息
一.前言 目的是实现一种效果,就是在音频识别时,能够实时显示当前人员说话的声音幅度,通过波形曲线的形式显示出来.如下效果(非我实现) 还可以实现在实时采集的同时,将需要的数据保存成指定格式文件,如cs ...
- Python 调用pyaudio库录制以及播放wav音频文件
1.Pyaudio简介 PyAudio 是语音处理的 Python 库,提供了比较丰富的功能. 2.功能 python的Pyaud模块可以调用电脑的麦克风或音响进行录音,音频播放,生成wav文件等. ...
最新文章
- 计算机输入法如何显示在桌面快捷方式,电脑输入法怎么设置快捷键
- 洛谷P1424小鱼的航程改进版
- 进入编辑模式、vim命令模式、vim实践
- 【百战GAN】羡慕别人的美妆?那就用GAN复制粘贴过来
- 关于flex布局,我大多数常用的几个点
- 使用 el 能否定义作用域变量_Jsp之El表达和JSTL标签库
- 总结Python的几点语言特性
- c语言ll和 amp amp 优先级,关于C语言自增自减运算符的灵活使用.pdf
- 全国大学生数学建模竞赛中,哈工大被禁用 MATLAB!
- python的列表操作_在Python中列表的操作
- Pulseaudio调用alsalib open()流程(十五)
- 【GIT】git 提交代码正确步骤
- hmc830相位噪声_支持紧凑型LO解决方案,还是靠“PLL VCO”最佳拍档
- eot文件html,html – 为什么IE8没有加载我的eot文件?
- 微信公众平台开发教程
- 大学计算机专业英语期末考试,河南大学计算机专业英语试题
- microLED可能在智能手机市场取代OLED
- JavaStudy15(27章-满汉楼)—B站韩顺平
- Linux下更改下只读文件
- SCDL--稀疏编码(sparse code)与字典学习(dictionary learning)