如何录制音频

来自百问网嵌入式Linux wiki
Wiki讨论 | 贡献2020年5月7日 (四) 11:12的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)


如何录制音频

文章目的

本文介绍如何通过具备内核音频 ALSA 的音频框架的 Linux® 操作系统环境录制音频。以下示例显示了如何从 STM32MPU 板载的不同音频硬件接口录制音频。

概述

ALSA 框架公开了与板音频硬件接口关联的音频设备。
默认情况下,应用程序音频流通过PulseAudio声音服务器进行路由。PulseAudio公开音频配置文件,这些配置文件映射在ALSA声卡音频设备上。PulseAudio服务器提供了一个命令行界面来列出相应的音频配置文件并进行选择,以便从特定的音频接口进行录制。
以下各节中的音频记录示例均基于 ALSA 实用程序。一些输入路径是通过 ALSA 控件配置的。声卡配置文章中详细介绍了这些配置。如果在运行示例时发出错误,请参阅音频故障排除文章以进行调试。

例子

来自耳机麦克风输入的音频记录

从 ALSA 设备记录

从 “record_codec” ALSA 设备开始音频记录:
注意:“record_codec” 是在 /etc/asound.conf 中定义的别名,用于耳机麦克风输入设备。
	Board $> arecord -D record_codec -f S16_LE -d 10 /tmp/rec.wav

通过 PulseAudio 录制

对于生态系统版本 ≥ v1.2.0
配置Pulseaudio:
将Pulseaudio的默认输入源更改为'analog_input':
注意:Pulseaudio模拟输入在/etc/pulse/system.pa配置文件中定义。
		Board $> pacmd set-default-source analog_input
开始录音:
注意:Pulseaudio设备是默认设备,因此在记录命令中可以省略 “-D pulse” 选项。
	Board $> arecord -d 10 /tmp/rec.wav
对于生态系统版本 ≤ v1.1.0

来自数字麦克风输入的音频记录

注意:数字麦克风输入的支持取决于电路板。请使用“ arecord -l ”命令检查可用的输入。

从ALSA设备记录

从 “record_dfsdm0” ALSA设备开始单声道音频记录:
注意:“record_dfsdm0”是在/etc/asound.conf中定义的别名,用于数字麦克风 U1 输入设备。
	Board $> arecord -D record_dfsdm0 -r 16000 -f S32_LE -c 1 -d 10 /tmp/rec.wav

从虚拟ALSA设备录制多个数字麦克风

从“多个” ALSA设备开始立体声音频记录:

注意:基于 ALSA 多重插件[1 ]的 “多重”设备必须在 /etc/asound.conf 文件中定义。
	Board $> arecord -D multi -r 16000 -f S32_LE -c 2 -d 10 /tmp/rec.wav

通过 PulseAudio 录制

通过 Pulseaudio 进行的记录仅适用于 v1.2.0 或更高版本的生态系统 。
配置 Pulseaudio
将 Pulseaudio 的默认输入源更改为 “dmic1_input”:
注意:Pulseaudio dmic1_input 在 /etc/pulse/system.pa 配置文件中定义。
	Board $> pacmd set-default-source dmic1_input
开始录音:
注意:Pulseaudio 设备是默认设备,因此在记录命令中可以省略 “-D pulse” 选项。
	Board $> arecord -r 48000 -f S32_LE -c 2 -d 10 /tmp/rec.wav

来自 S/PDIF 输入的音频记录

注意:S/PDIF 输入的支持取决于开发板的硬件支持。使用“ arecord -l ”命令检查可用的输入。

从 ALSA 设备记录

从“ record_spdif” ALSA设备开始音频记录:
注意:'record_spdif'是在 /etc/asound.conf 中为 S/PDIF 输入设备定义的别名。
注意:在开始记录命令之前,S/PDIF RCA 输入连接器上必须有 S/PDIF 信号。 记录速率必须根据 S/PDIF 信号采样速率进行设置。
	Board $> arecord -D record_spdif -f S32_LE -c 2 -r 48000 -d 10 /tmp/rec.wav

通过 PulseAudio 录制

通过 Pulseaudio 进行的记录仅适用于 v1.2.0 或更高版本的生态系统 。
配置 Pulseaudio
将 Pulseaudio 的默认输入源更改为 “iec958_input”:
注意:Pulseaudio iec958_input 在 /etc/pulse/system.pa 配置文件中定义。
	Board $> pacmd set-default-source iec958_input
开始录音:
注意:Pulseaudio 设备是默认设备,因此在记录命令中可以省略 “-D pulse” 选项。
	Board $> arecord -r 48000 -f S32_LE -c 2 -d 10 /tmp/rec.wa