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

来自百问网嵌入式Linux wiki
 
第1行: 第1行:
 
== Article purpose ==
 
== Article purpose ==
This article explains how to play audio through the [[ALSA overview|ALSA]] audio framework in '''Linux<sup>&reg;</sup> OS''' context.
+
本文介绍了如何在'''Linux<sup>&reg;</sup> OS''' 上下文中通过 [[ALSA overview|ALSA]]音频框架播放音频。
The examples below, show how to play audio on the different audio hardware interfaces of the STM32MPU [[:Category:ST boards| boards]].
+
下面的示例演示如何在STM32MPU的不同音频硬件接口上播放音频[[:Category:ST boards| boards]].
  
 
== Audio playback overview ==
 
== Audio playback overview ==
The [[ALSA overview|ALSA]] framework exposes audio devices associated to the board audio hardware interfaces.
+
The [[ALSA overview|ALSA]] 框架公开了与板音频硬件接口关联的音频设备。
 
+
默认情况下,应用程序音频流通过 [[PulseAudio]] 声音服务器进行路由。PulseAudio公开了映射在ALSA声卡音频设备上的音频配置文件。 PulseAudio服务器提供了一个命令行界面,该界面允许列出音频配置文件并选择配置文件以在特定的音频接口上播放。
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 which allows to list audio profiles and to select a profile, to play on a specific audio interface.
 
 
 
The audio playback examples in following sections are given for [[ALSA_overview#How_to_use|ALSA utilities]]. However, the audio playbacks can be launched by other applications, such as [[Gst-play|gstreamer]] multimedia framework.
 
  
 +
以下各节中的音频播放示例适用于 [[ALSA_overview#How_to_use|ALSA utilities]].但是,音频回放可以由[[Gst-play|gstreamer]] 多媒体框架等其他应用程序启动。
 
== Examples ==
 
== Examples ==
  
第15行: 第13行:
  
 
==== Playback on ALSA device ====
 
==== Playback on ALSA device ====
Run audio playback on 'playback_codec' ALSA device:
+
'playback_codec' ALSA设备上运行音频播放:
 
{{Info|'playback_codec' is an alias defined in /etc/asound.conf, for headset output device.}}
 
{{Info|'playback_codec' is an alias defined in /etc/asound.conf, for headset output device.}}
 
  {{Board$}} aplay -D playback_codec /usr/share/sounds/alsa/Front_Left.wav
 
  {{Board$}} aplay -D playback_codec /usr/share/sounds/alsa/Front_Left.wav
第21行: 第19行:
 
==== Playback via PulseAudio ====
 
==== Playback via PulseAudio ====
  
* '''Configure Pulseaudio'''
+
* '''配置Pulseaudio'''
Change the Pulseaudio active profile of the sound card, to 'analog-stereo' profile:
+
将声卡的Pulseaudio活动配置文件更改为'analog-stereo' 配置文件:
{{Info|The Pulseaudio analog-stereo profile is the default profile. So next command is not required after boot.}}
+
{{Info|Pulseaudio模拟立体声配置文件是默认配置文件。 因此启动后不需要下一个命令。}}
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound cards index with "''pactl list cards short''" command.}}
+
{{Info|以下是 {{highlight|sound card index 0}}的示例。用 "''pactl list cards short''" 命令检查声卡索引。}}
 
  {{Board$}} pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
 
  {{Board$}} pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
  
* '''Run audio playback:'''
+
* '''运行音频播放:'''
 
  {{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
 
  {{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
  
 
=== Audio playback on HDMI output ===
 
=== Audio playback on HDMI output ===
{{Warning|The support of HDMI output is board dependent. Please, check available outputs with "''aplay -l''" command.}}
+
{{Warning|HDMI输出的支持取决于主板。 请用"''aplay -l''" 命令检查可用的输出。}}
  
 
==== Playback on ALSA device ====
 
==== Playback on ALSA device ====
Run audio playback on 'playback_hdmi' ALSA device:
+
'playback_hdmi' ALSA设备上运行音频播放:
{{Info|'playback_hdmi' is an alias defined in /etc/asound.conf, for hdmi output device.}}
+
{{Info|'playback_hdmi'是在  /etc/asound.conf 中为hdmi输出设备定义的别名。}}
 
  {{Board$}} aplay -D playback_hdmi /usr/share/sounds/alsa/Front_Left.wav
 
  {{Board$}} aplay -D playback_hdmi /usr/share/sounds/alsa/Front_Left.wav
  
 
==== Playback via PulseAudio ====
 
==== Playback via PulseAudio ====
  
* '''Configure Pulseaudio'''
+
* '''配置Pulseaudio'''
Change the Pulseaudio active profile of the sound card, to 'hdmi-stereo' profile:
+
将声卡的Pulseaudio活动配置文件更改为‘ hdmi-stereo’配置文件:
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound card index with "''pactl list cards short''" command.}}
+
{{Info|以下是 {{highlight|sound card index 0}}的示例。 用 "''pactl list cards short''" 命令检查声卡索引。}}
 
  {{Board$}} pacmd set-card-profile 0 output:hdmi-stereo
 
  {{Board$}} pacmd set-card-profile 0 output:hdmi-stereo
  
* '''Run audio playback:'''
+
* '''运行音频播放:'''
 
  {{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
 
  {{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
  
 
=== Audio playback on S/PDIF output ===
 
=== Audio playback on S/PDIF output ===
{{Warning|The support of S/PDIF output is board dependent. Please, check available outputs with "''aplay -l''" command.}}
+
{{Warning| S/PDIF输出的支持取决于电路板。 请用 "''aplay -l''" 命令检查可用的输出。}}
{{Info|S/PDIF ALSA device supports only {{highlight|32-bit audio streams}}. As 32-bit wave files are not provided in sample sound files, speaker-test is used instead of aplay, for convenience, here. Speaker-test generates a 440Hz sine wave in following examples.}}
+
{{Info| S/PDIF ALSA设备仅支持 {{highlight|32-bit audio streams}}. 由于示例声音文件中未提供32位波形文件,因此在这里为方便起见,使用扬声器测试代替了播放。 扬声器测试在以下示例中生成440Hz正弦波。}}
  
 
==== Set IEC958 status bits ====
 
==== Set IEC958 status bits ====
第57行: 第55行:
  
 
==== Playback on ALSA device ====
 
==== Playback on ALSA device ====
Run audio playback on 'playback_spdif' ALSA device:
+
在 'playback spdif' ALSA设备上运行音频播放
{{Info|'playback_spdif' is an alias defined in /etc/asound.conf, for S/PDIF output device.}}
+
{{Info|“ playback_spdif”是在/etc/asound.conf中为 S/PDIF 输出设备定义的别名。}}
 
  {{Board$}} speaker-test -D playback_spdif -c 2 -F S32_LE -f 440 -t sine -l 1
 
  {{Board$}} speaker-test -D playback_spdif -c 2 -F S32_LE -f 440 -t sine -l 1
  
 
==== Playback via PulseAudio ====
 
==== Playback via PulseAudio ====
  
* '''Configure Pulseaudio'''
+
* '''配置Pulseaudio'''
Change the sound card active profile, to S/PDIF 'iec958-stereo' profile.
+
将声卡活动配置文件更改为S / PDIF'iec958-stereo'配置文件。
{{Info|Example below is given for {{highlight|sound card index 0}}. Check sound card index with "''pactl list cards short''" command.}}
+
{{Info|以下是 {{highlight|sound card index 0}}的示例。用"''pactl list cards short''" 命令检查声卡索引。}}
 
  {{Board$}} pacmd set-card-profile 0 output:iec958-stereo
 
  {{Board$}} pacmd set-card-profile 0 output:iec958-stereo
  
* '''Run audio playback:'''
+
* '''运行音频播放:'''
 
  {{Board$}} speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1
 
  {{Board$}} speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1
 
<noinclude>
 
{{PublicationRequestId | 10391 | 2019-01-21}}
 
[[Category:How to run use cases]]
 
[[Category:ALSA]]
 
</noinclude>
 

2020年11月5日 (四) 10:24的最新版本

Article purpose

本文介绍了如何在Linux® OS 上下文中通过 ALSA音频框架播放音频。 下面的示例演示如何在STM32MPU的不同音频硬件接口上播放音频 boards.

Audio playback overview

The ALSA 框架公开了与板音频硬件接口关联的音频设备。 默认情况下,应用程序音频流通过 PulseAudio 声音服务器进行路由。PulseAudio公开了映射在ALSA声卡音频设备上的音频配置文件。 PulseAudio服务器提供了一个命令行界面,该界面允许列出音频配置文件并选择配置文件以在特定的音频接口上播放。

以下各节中的音频播放示例适用于 ALSA utilities.但是,音频回放可以由gstreamer 多媒体框架等其他应用程序启动。

Examples

Audio playback on headset output

Playback on ALSA device

在 'playback_codec' ALSA设备上运行音频播放:

Info.png 'playback_codec' is an alias defined in /etc/asound.conf, for headset output device.
Board $> aplay -D playback_codec /usr/share/sounds/alsa/Front_Left.wav

Playback via PulseAudio

  • 配置Pulseaudio

将声卡的Pulseaudio活动配置文件更改为'analog-stereo' 配置文件:

Info.png Pulseaudio模拟立体声配置文件是默认配置文件。 因此启动后不需要下一个命令。
Info.png 以下是 sound card index 0的示例。用 "pactl list cards short" 命令检查声卡索引。
Board $> pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
  • 运行音频播放:
Board $> aplay /usr/share/sounds/alsa/Front_Left.wav

Audio playback on HDMI output

Warning.png HDMI输出的支持取决于主板。 请用"aplay -l" 命令检查可用的输出。

Playback on ALSA device

在 'playback_hdmi' ALSA设备上运行音频播放:

Info.png 'playback_hdmi'是在 /etc/asound.conf 中为hdmi输出设备定义的别名。
Board $> aplay -D playback_hdmi /usr/share/sounds/alsa/Front_Left.wav

Playback via PulseAudio

  • 配置Pulseaudio

将声卡的Pulseaudio活动配置文件更改为‘ hdmi-stereo’配置文件:

Info.png 以下是 sound card index 0的示例。 用 "pactl list cards short" 命令检查声卡索引。
Board $> pacmd set-card-profile 0 output:hdmi-stereo
  • 运行音频播放:
Board $> aplay /usr/share/sounds/alsa/Front_Left.wav

Audio playback on S/PDIF output

Warning.png S/PDIF输出的支持取决于电路板。 请用 "aplay -l" 命令检查可用的输出。
Info.png S/PDIF ALSA设备仅支持 32-bit audio streams. 由于示例声音文件中未提供32位波形文件,因此在这里为方便起见,使用扬声器测试代替了播放。 扬声器测试在以下示例中生成440Hz正弦波。

Set IEC958 status bits

Example: set IEC958 mode bit.

Board $> iecset -c STM32MP1EV -n device=0 pro on

Playback on ALSA device

在 'playback spdif' ALSA设备上运行音频播放

Info.png “ playback_spdif”是在/etc/asound.conf中为 S/PDIF 输出设备定义的别名。
Board $> speaker-test -D playback_spdif -c 2 -F S32_LE -f 440 -t sine -l 1

Playback via PulseAudio

  • 配置Pulseaudio

将声卡活动配置文件更改为S / PDIF'iec958-stereo'配置文件。

Info.png 以下是 sound card index 0的示例。用"pactl list cards short" 命令检查声卡索引。
Board $> pacmd set-card-profile 0 output:iec958-stereo
  • 运行音频播放:
Board $> speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1