一、前言

在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音频/混音相关推荐

  1. Alsa-lib实现播放wav音频

    Alsa-lib实现播放wav音频 1.alsa-lib移植 例程中使用的alsa-lib库是1.2.6版本的,目前最新的release版本已经到1.2.7版本了,可以根据自身需求下载. 具体下载链接 ...

  2. Android使用AudioTrack播放WAV音频文件

    目录 1.wav文件格式 2.wav文件解析 3.wav文件播放 QA: 开始播放wav的时候使用了系统的播放器mediaplayer进行播放,但是无奈mediaplayer支持的实在不好. 好些年前 ...

  3. 实现在线播放Wav音频文件,支持IE和Google

    最近在弄一个在线播放Wav音频文件的功能,发现audio只支持在google浏览器下才能访问,ie是不支持的,但是ie支持embed标签的播放. getWebIE:function(){var use ...

  4. Java 采集声音_通过java采集PC麦克风音频及播放wav音频文件

    AudioFormat对象 sampleRate 采样率 每秒音频采样数量 sampleSizeInBits 采样位数 每个采样的位数 channels 声道 1: Mono 单声道,2:Stereo ...

  5. Linux下使用C++播放wav音频文件

    Linux下使用C++播放wav音频文件 安装openal第三方库 上代码 安装openal第三方库 unbuntu下安装命令:sudo apt-get install libopenal-dev 安 ...

  6. QT播放Wav音频并显示波形

    1.前言 因为项目需要,做了个小工具来做前期准备. 这个需求实现两步:播放和显示波形. 播放方面,一开始选择FMod,小工具快做好的时候偶然发现FMod需要商业授权,所以只能放弃.试了试ffmpeg+ ...

  7. Linux alsa-lib c语言 播放wav音频

    编程步骤: 1.指定使用最新的ALSA API #define ALSA_PCM_NEW_HW_PARAMS_API 2.包含头文件 #include <alsa/asoundlib.h> ...

  8. windows播放wav音频文件

    摘要   遇到过很三次win10系统下调用sndPlaySound导致虚拟内存(分页缓冲池)泄露的情况,于是乎便尝试换个方式播放wav文件,使用zplay库进行播放,还是存在泄露.后来参照网上的教程调 ...

  9. A40i使用笔记:QT使用alsa采集音频pcm信息

    一.前言 目的是实现一种效果,就是在音频识别时,能够实时显示当前人员说话的声音幅度,通过波形曲线的形式显示出来.如下效果(非我实现) 还可以实现在实时采集的同时,将需要的数据保存成指定格式文件,如cs ...

  10. Python 调用pyaudio库录制以及播放wav音频文件

    1.Pyaudio简介 PyAudio 是语音处理的 Python 库,提供了比较丰富的功能. 2.功能 python的Pyaud模块可以调用电脑的麦克风或音响进行录音,音频播放,生成wav文件等. ...

最新文章

  1. 计算机输入法如何显示在桌面快捷方式,电脑输入法怎么设置快捷键
  2. 洛谷P1424小鱼的航程改进版
  3. 进入编辑模式、vim命令模式、vim实践
  4. 【百战GAN】羡慕别人的美妆?那就用GAN复制粘贴过来
  5. 关于flex布局,我大多数常用的几个点
  6. 使用 el 能否定义作用域变量_Jsp之El表达和JSTL标签库
  7. 总结Python的几点语言特性
  8. c语言ll和 amp amp 优先级,关于C语言自增自减运算符的灵活使用.pdf
  9. 全国大学生数学建模竞赛中,哈工大被禁用 MATLAB!
  10. python的列表操作_在Python中列表的操作
  11. Pulseaudio调用alsalib open()流程(十五)
  12. 【GIT】git 提交代码正确步骤
  13. hmc830相位噪声_支持紧凑型LO解决方案,还是靠“PLL VCO”最佳拍档
  14. eot文件html,html – 为什么IE8没有加载我的eot文件?
  15. 微信公众平台开发教程
  16. 大学计算机专业英语期末考试,河南大学计算机专业英语试题
  17. microLED可能在智能手机市场取代OLED
  18. JavaStudy15(27章-满汉楼)—B站韩顺平
  19. Linux下更改下只读文件
  20. SCDL--稀疏编码(sparse code)与字典学习(dictionary learning)

热门文章

  1. 硬件工程师学习英语必备
  2. 计算机图形和ps的区别,PS CC和PS CC有什么区别?
  3. php调用itchat,itchat接口使用示例
  4. mybatis的缓存,看这一篇就够了!
  5. 爬虫 - 超级鹰的基本使用
  6. 鸟哥的linux私房菜——蔡德明
  7. 时间序列预测 | Python实现GAN时间序列数据生成建模
  8. 【图像处理】海森矩阵(Hessian Matrix)及一个用例(图像增强)
  9. 谷歌自动广告导致网站样式出错 影响布局
  10. 抖音神器---python实现图片转字符