1.wav_format
wav_format*wav wav_format包括3个重要的结构体
1.wav_header;文件大小 chunk RIFF
2.wav_format;这个就比较重要了,数据的格式代码(“pcm”),声道数,采样频率 码率 =帧的大小乘以采样频率 帧大小
3.wav_data; 除了wav格式头以外的数据头
2.pcm_containter
1.snd_pcm_t *handle pcm设备操作句柄
2.一个帧内的字节数 一个周期内的帧格式 系统Buffer的帧个数 33
3.准备wav格式参数 ,给wav_format赋值
初始化音频设备以及往音频设备发送 PCM(Pulse Code Modulation)数据
对 PCM 设备操作的函数分为 PCM 设备初始化的函数以及 PCM 接口的一些操作函数。
可以理解为wav是要写入的数据格式 ,而pcm这个结构体就是你要把数据写入的硬件的相关信息,
必须设置访问类型,采样格式,采样率,声道率这些重要参数
接下来简单介绍一下给操作pcm设备的相关函数,
关键结构体 snd_pcm_hw_params_t 硬件信息配置
1.snd_pcm_open,打开相关设备
2.分配硬件参数空间,snd_pcm_hw_params_malloc( )
3.snd_pcm_hw_params_any( ) 函数用声卡的全配置空间参数初始化已经分配的 snd_pcm_hw_params_t 结构
SND_PCM_ACCESS_RW_INTERLEAVED 设置访问模式为帧连续模式
播放采样长度是 16-bit 的 PCM 立体声数据,那就有16bit的左声道,16bit的右声道。
比特率 =采样率 x 采用位数 x声道数.
4.snd_pcm_hw_params_set_format() 设置输入数据的格式,比如说大小端,(一般都是小端)
主机字节序
5.nd_pcm_hw_params_set_rate_near () ,设置最接近目标音频的采样率,
6.snd_pcm_hw_params( ),从设备配置空间选择一个设备
7.snd_pcm_prepare() 准备好 PCM 设备
这里复习一下ssize_t write(int fd, const void *buf, size_t count); 参数: fd: 要进行写操作的文件描述词,buf->要写入的缓冲区,count写入的数据大小。
这里的Buf指向一个被分配的周期数据空间。
到这里,就基本可以完成录制音频文件。