“How to record audio”的版本间的差异

来自百问网嵌入式Linux wiki
 
(未显示同一用户的2个中间版本)
第1行: 第1行:
== Article purpose ==
+
{{DISPLAYTITLE:如何录制音频}}
This article explains how to record audio via the kernel [[ALSA overview|ALSA]] audio framework in '''Linux® OS''' context.
 
The examples below, show how to record audio from the different audio hardware interfaces of the STM32MPU [[:Category:ST boards| boards]].
 
  
== Audio record overview ==
+
=如何录制音频=
The [[ALSA overview|ALSA]] framework exposes audio devices associated to the board audio hardware interfaces.
+
==文章目的==
 +
: 本文介绍如何通过具备内核音频 ALSA 的音频框架的 Linux® 操作系统环境录制音频。以下示例显示了如何从 STM32MPU 板载的不同音频硬件接口录制音频。
  
The application audio streams are routed by default through the [[PulseAudio]] sound server. PulseAudio exposes audio profiles, which are mapped on the ALSA sound card audio devices. The PulseAudio server provides a command line interface to list audio profiles and to select one, in order to record from a specific audio interface.
+
==概述==
 +
: ALSA 框架公开了与板音频硬件接口关联的音频设备。
 +
: 默认情况下,应用程序音频流通过PulseAudio声音服务器进行路由。PulseAudio公开音频配置文件,这些配置文件映射在ALSA声卡音频设备上。PulseAudio服务器提供了一个命令行界面来列出相应的音频配置文件并进行选择,以便从特定的音频接口进行录制。
 +
: 以下各节中的音频记录示例均基于 ALSA 实用程序。一些输入路径是通过 ALSA 控件配置的。声卡配置文章中详细介绍了这些配置。如果在运行示例时发出错误,请参阅音频故障排除文章以进行调试。
  
The audio record examples in following sections are based on [[ALSA_overview#How_to_use|ALSA utilities]]. Some input paths are configured through ALSA controls. These configurations are detailed in [[Soundcard_configuration|sound card configuration]] article. If an error is issued when running an example, please refer to [[Audio troubleshooting grid]] article for debug.
+
==例子==
 +
===来自耳机麦克风输入的音频记录===
 +
====从 ALSA 设备记录====
 +
: 从 “record_codec” ALSA 设备开始音频记录:
  
== Examples ==
+
: 注意:“record_codec” 是在 /etc/asound.conf 中定义的别名,用于耳机麦克风输入设备。
 +
<syntaxhighlight lang="bash">
 +
Board $> arecord -D record_codec -f S16_LE -d 10 /tmp/rec.wav
 +
</syntaxhighlight>
 +
===通过 PulseAudio 录制===
 +
=====对于生态系统版本 ≥ v1.2.0 =====
 +
: 配置Pulseaudio:
 +
:: 将Pulseaudio的默认输入源更改为'analog_input':
  
=== Audio record from headset microphone input ===
+
:: 注意:Pulseaudio模拟输入在/etc/pulse/system.pa配置文件中定义。
 +
<syntaxhighlight lang="bash">
 +
Board $> pacmd set-default-source analog_input
 +
</syntaxhighlight>
 +
: 开始录音:
 +
: 注意:Pulseaudio设备是默认设备,因此在记录命令中可以省略 “-D pulse” 选项。
 +
<syntaxhighlight lang="bash">
 +
Board $> arecord -d 10 /tmp/rec.wav
 +
</syntaxhighlight>
 +
=====对于生态系统版本 ≤ v1.1.0 =====
  
==== Record from ALSA device ====
+
===来自数字麦克风输入的音频记录===
Start audio record from 'record_codec' ALSA device:
+
: 注意:数字麦克风输入的支持取决于电路板。请使用“ arecord -l ”命令检查可用的输入。
 +
==从ALSA设备记录==
 +
: 从 “record_dfsdm0” ALSA设备开始单声道音频记录:
  
{{Info|'record_codec' is an alias defined in /etc/asound.conf, for headset microphone input device.}}
+
: 注意:“record_dfsdm0”是在/etc/asound.conf中定义的别名,用于数字麦克风 U1 输入设备。
{{Board$}} arecord -D record_codec -f S16_LE -d 10 /tmp/rec.wav
+
<syntaxhighlight lang="bash">
 +
Board $> arecord -D record_dfsdm0 -r 16000 -f S32_LE -c 1 -d 10 /tmp/rec.wav
 +
</syntaxhighlight>
 +
====从虚拟ALSA设备录制多个数字麦克风====
 +
从“多个” ALSA设备开始立体声音频记录:
  
==== Record via PulseAudio ====
+
: 注意:基于 ALSA 多重插件[1 ]的 “多重”设备必须在 /etc/asound.conf 文件中定义。
 +
<syntaxhighlight lang="bash">
 +
Board $> arecord -D multi -r 16000 -f S32_LE -c 2 -d 10 /tmp/rec.wav
 +
</syntaxhighlight>
 +
====通过 PulseAudio 录制====
 +
: 通过 Pulseaudio 进行的记录仅适用于 v1.2.0 或更高版本的生态系统 。
  
===== For {{EcosystemRelease | revision=1.2.0 | range=and after}} =====
+
: 配置 Pulseaudio
 +
: 将 Pulseaudio 的默认输入源更改为 “dmic1_input”:
  
* '''Configure Pulseaudio :'''
+
: 注意:Pulseaudio dmic1_input 在 /etc/pulse/system.pa 配置文件中定义。
Change Pulseaudio default input source to 'analog_input':
+
<syntaxhighlight lang="bash">
{{Info|The Pulseaudio analog_input is defined in /etc/pulse/system.pa configuration file.}}
+
Board $> pacmd set-default-source dmic1_input
{{Board$}} pacmd set-default-source analog_input
+
</syntaxhighlight>
 +
: 开始录音:
 +
: 注意:Pulseaudio 设备是默认设备,因此在记录命令中可以省略 “-D pulse” 选项。
 +
<syntaxhighlight lang="bash">
 +
Board $> arecord -r 48000 -f S32_LE -c 2 -d 10 /tmp/rec.wav
 +
</syntaxhighlight>
 +
===来自 S/PDIF 输入的音频记录===
 +
: 注意:S/PDIF 输入的支持取决于开发板的硬件支持。使用“ arecord -l ”命令检查可用的输入。
 +
====从 ALSA 设备记录====
 +
: 从“ record_spdif” ALSA设备开始音频记录:
  
* '''Start audio record :'''
+
: 注意:'record_spdif'是在 /etc/asound.conf 中为 S/PDIF 输入设备定义的别名。
{{Info|The Pulseaudio device is the default one, so "-D pulse" option can be omitted in the record command.}}
+
: 注意:在开始记录命令之前,S/PDIF RCA 输入连接器上必须有 S/PDIF 信号。 记录速率必须根据 S/PDIF 信号采样速率进行设置。
{{Board$}} arecord -d 10 /tmp/rec.wav
+
<syntaxhighlight lang="bash">
 +
Board $> arecord -D record_spdif -f S32_LE -c 2 -r 48000 -d 10 /tmp/rec.wav
 +
</syntaxhighlight>
 +
====通过 PulseAudio 录制====
 +
: 通过 Pulseaudio 进行的记录仅适用于 v1.2.0 或更高版本的生态系统 。
  
<div class="mw-collapsible mw-collapsed">
+
: 配置 Pulseaudio
===== For {{EcosystemRelease | revision=1.1.0  | range=and before}} =====
+
: 将 Pulseaudio 的默认输入源更改为 “iec958_input”:
<div class="mw-collapsible-content">
 
* '''Configure Pulseaudio :'''
 
Change Pulseaudio active profile of the sound card, to 'analog-stereo' profile:
 
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound cards index with "''pactl list cards short''" command.}}
 
{{Board$}} pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
 
  
* '''Start audio record :'''
+
: 注意:Pulseaudio iec958_input 在 /etc/pulse/system.pa 配置文件中定义。
{{Info|The Pulseaudio device is the default one, so "-D pulse" option can be omitted in the record command.}}
+
<syntaxhighlight lang="bash">
{{Board$}} arecord -d 10 /tmp/rec.wav
+
Board $> pacmd set-default-source iec958_input
</div></div>
+
</syntaxhighlight>
 +
: 开始录音:
 +
: 注意:Pulseaudio 设备是默认设备,因此在记录命令中可以省略 “-D pulse” 选项。
 +
<syntaxhighlight lang="bash">
 +
Board $> arecord -r 48000 -f S32_LE -c 2 -d 10 /tmp/rec.wa
 +
</syntaxhighlight>
  
=== Audio record from digital microphone input ===
+
==参考==
{{Warning|The support of digital microphone input is board dependent. Please, check available inputs with "''arecord -l''" command.}}
+
: [https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html%7C ALSA PCM插件]
  
==== Record from ALSA device ====
+
[[Category:Linux_Operating_System]]
Start mono audio record from 'record_dfsdm0' ALSA device:
+
[[Category:Audio]]
{{Info|'record_dfsdm0' is an alias defined in /etc/asound.conf, for digital microphone U1 input device.}}
+
[[Category:ALSA]]
{{Board$}} arecord -D record_dfsdm0 -r 16000 -f S32_LE -c 1 -d 10 /tmp/rec.wav
 
 
 
==== Record multiple digital microphones from a virtual ALSA device ====
 
Start stereo audio record from 'multi' ALSA device:
 
{{Info|'multi' device, based on ALSA multi plugin<ref>[https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html| ALSA PCM plugins]</ref>, has to be defined in /etc/asound.conf file.}}
 
{{Board$}} arecord -D multi -r 16000 -f S32_LE -c 2 -d 10 /tmp/rec.wav
 
 
 
==== Record via PulseAudio ====
 
The record via Pulseaudio is only available for {{EcosystemRelease | revision=1.2.0 | range=and after}}.
 
 
 
* '''Configure Pulseaudio'''
 
Change Pulseaudio default input source to 'dmic1_input':
 
{{Info|The Pulseaudio dmic1_input is defined in /etc/pulse/system.pa configuration file.}}
 
{{Board$}} pacmd set-default-source dmic1_input
 
 
 
* '''Start audio record :'''
 
{{Info|The Pulseaudio device is the default one, so "-D pulse" option can be omitted in the record command.}}
 
{{Board$}} arecord -r 48000 -f S32_LE -c 2 -d 10 /tmp/rec.wav
 
 
 
=== Audio record from S/PDIF input ===
 
{{Warning|The support of S/PDIF input is board dependent. Please, check available inputs with "''arecord -l''" command.}}
 
 
 
==== Get IEC958 status bits ====
 
Some restrictions may apply to IEC958 control, depending on the SPDIFRX device configuration as it is explained in [[SPDIFRX device tree configuration]] and [[SPDIFRX Linux driver]] articles.
 
 
 
{{Board$}} amixer -c STM32MP1EV cget iface=PCM,name='IEC958 Capture Default'
 
 
 
==== Record from ALSA device ====
 
Start audio record from 'record_spdif' ALSA device:
 
{{Info|'record_spdif' is an alias defined in /etc/asound.conf, for S/PDIF input device.}}
 
{{Info|A S/PDIF signal must be available on S/PDIF RCA input connector before starting the record command. The record rate must be set according to S/PDIF signal sampling rate.}}
 
{{Board$}} arecord -D record_spdif -f S32_LE -c 2 -r 48000 -d 10 /tmp/rec.wav
 
 
 
==== Record via PulseAudio ====
 
The record via Pulseaudio is only available for {{EcosystemRelease | revision=1.2.0 | range=and after}}.
 
 
 
* '''Configure Pulseaudio'''
 
Change Pulseaudio default input source to 'iec958_input':
 
{{Info|The Pulseaudio iec958_input is defined in /etc/pulse/system.pa configuration file.}}
 
{{Board$}} pacmd set-default-source iec958_input
 
 
 
* '''Start audio record :'''
 
{{Info|The Pulseaudio device is the default one, so "-D pulse" option can be omitted in the record command.}}
 
{{Board$}} arecord -r 48000 -f S32_LE -c 2 -d 10 /tmp/rec.wav
 
 
 
== References ==
 
<references />
 
 
 
<noinclude>
 
{{PublicationRequestId | 10588 | 2019-02-06}}
 
[[Category:How to run use cases]]
 
[[Category:ALSA]]
 
</noinclude>
 

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