嵌入式板子使用Alsa接口和C++程序,录制Wav音频文件

数据流向

                              数据 

声卡采集音频数据  ----->   WAV音频文件  

伪代码:

确定录制的采样率,通道数等参数

打开PCM设备 snd_pcm_open()

设置PCM硬件参数

打开要保存数据的文件,先写入WAV文件的头部数据(关键点)

根据录音时长,计算出需要录制的周期数 total_periods

for (unsigned int i = 0; i < total_periods; i++)

{

   读取声卡采集到的数据  snd_pcm_readi()

   把从声卡读到的数据写到文件中  fwrite()

}

释放资源

相关函数声明

录音音频的函数

int RecordAudio(const char *filename, int duration)
        filename : 保存数据的wav文件名
        duration  : 采集音频的时长(单位 / 秒)

设置PCM硬件参数:

static int set_hw_params(snd_pcm_t *pcmHandler, unsigned int sample_rate, unsigned short channels, unsigned short bits_per_sample)

写WAV头部数据

void write_wav_header(int fd, int sample_rate, int channels, int duration)
        fd : 文件描述符
        sample_rate : 采样率
        channels : 通道数
        duration : 采样时长

调用框架:

RecordAudio

{

        ...

        set_hw_params()

        write_wav_header()

        ...

        while(1)

        {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值