linux的主流音频体系结构 alsa
1.pcm数据是什么?
脉冲编码调制(Pulse Code Modulation,PCM)
脉冲编码调制就是把一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制就是对模拟信号先抽样,再对样值幅度量化,编码的过程。
2.如何分离pcm的左右声道
分离PCM音频数据左右声道的数据 因为PCM音频数据是按照LRLRLR的方式来存储左右声道的音频数据的,所以我们可以通过将它们交叉的读出来的方式来分离左右声道的数据
3.如何降低音量大小?
因为对于PCM音频数据而言,它的幅值(即该采样点采样值的大小)代表音量的大小,所以我们可以通过减小某个声道的数据的值来实现降低某个声道的音量
4.如何将PCM音频数据转换成WAV格式
WAV在PCM数据前加了一系列包头 用于描述各种信息。
5.alsa编程?
为什么要使用 ALSA 开发音频程序
提供了API库
6.alsalib 提供了哪几类的函数接口
- PCM接口:管理数字音频回放(playback)和录音(capture)的接口。本文后续总结重点放在这个接口上,因为它是开发数字音频程序最常用到的接口。
- 控制接口:提供管理声卡注册和请求可用设备的通用功能
- 定时器(Timer)接口:为同步音频事件提供对声卡上时间处理硬件的访问。 ...
主要关注PCM接口
7.一个典型的声音程序是怎么样的?
一个典型的声音程序
1 使用PCM的程序通常类似下面的伪代码:
2 打开回放或录音接口
3 设置硬件参数(访问模式,数据格式,信道数,采样率,等等)
4 while 有数据要被处理:
5 读PCM数据(录音) 或 写PCM数据(回放)
6 关闭接口