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

来自百问网嵌入式Linux wiki
 
(未显示另一用户的1个中间版本)
第1行: 第1行:
{{DISPLAYTITLE:如何播放音频}}
+
== Article purpose ==
 +
本文介绍了如何在'''Linux<sup>&reg;</sup> OS''' 上下文中通过 [[ALSA overview|ALSA]]音频框架播放音频。
 +
下面的示例演示如何在STM32MPU的不同音频硬件接口上播放音频[[:Category:ST boards| boards]].
  
=如何播放音频=
+
== Audio playback overview ==
==文章目的==
+
The [[ALSA overview|ALSA]] 框架公开了与板音频硬件接口关联的音频设备。
: 本文介绍了如何通过具备 ALSA 音频架构的 Linux ® OS 环境播放音频。以下示例显示了如何在 STM32MPU 开发板上的不同音频硬件接口上播放音频。
+
默认情况下,应用程序音频流通过 [[PulseAudio]] 声音服务器进行路由。PulseAudio公开了映射在ALSA声卡音频设备上的音频配置文件。 PulseAudio服务器提供了一个命令行界面,该界面允许列出音频配置文件并选择配置文件以在特定的音频接口上播放。
==音频播放概述==
 
: ALSA框架公开了与板音频硬件接口关联的音频设备。
 
: 默认情况下,应用程序音频流通过 PulseAudio 声音服务器进行路由。PulseAudio 公开了映射在 ALSA 声卡音频设备上的音频配置文件。PulseAudio 服务器提供了一个命令行界面,该界面允许列出音频配置文件并选择配置文件以在特定的音频接口上播放。
 
: 以下各节中针对 ALSA 实用程序给出对应的音频播放示例。但是,音频回放可以由其他应用程序启动,例如 gstreamer 多媒体框架。
 
  
==示例==
+
以下各节中的音频播放示例适用于 [[ALSA_overview#How_to_use|ALSA utilities]].但是,音频回放可以由[[Gst-play|gstreamer]] 多媒体框架等其他应用程序启动。
===在耳机输出设备上播放音频===
+
== Examples ==
: 在 ALSA 设备上播放
 
:: 在 “playback_codec” ALSA 设备上运行音频播放:
 
  
:: 注意:“playback_codec” 在 /etc/asound.conf 中为耳机输出设备定义别名。
+
=== Audio playback on headset output ===
<syntaxhighlight lang="bash">
 
Board $> aplay -D playback_codec /usr/share/sounds/alsa/Front_Left.wav
 
</syntaxhighlight>
 
: 通过 PulseAudio 播放
 
:: 将声卡的Pulseaudio活动配置文件更改为"analog-stereo”配置文件:
 
  
:: 注意:Pulseaudio 模拟立体声时使用系统默认的配置文件件。因此引导后不需要下一个命令。
+
==== Playback on ALSA device ====
:: 注意:下面给出了声卡索引 0 的示例。使用 “pactl list cards short” 命令检查所有的声卡索引。
+
在 'playback_codec' ALSA设备上运行音频播放:
<syntaxhighlight lang="bash">
+
{{Info|'playback_codec' is an alias defined in /etc/asound.conf, for headset output device.}}
Board $> pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
+
{{Board$}} aplay -D playback_codec /usr/share/sounds/alsa/Front_Left.wav
</syntaxhighlight>
 
:: 播放音频:
 
<syntaxhighlight lang="bash">
 
Board $> aplay /usr/share/sounds/alsa/Front_Left.wav
 
</syntaxhighlight>
 
  
===在HDMI输出设备上播放音频===
+
==== Playback via PulseAudio ====
: 注意:HDMI输出的支持取决于主板的硬件是否支持。请使用 “aplay -l” 命令检查所有的可用的输出。
 
: 在 ALSA 设备上播放。
 
: 在 “playback_hdmi” ALSA 设备上运行音频播放:
 
  
: 注意:“playback_hdmi” 是在 /etc/asound.conf 文件中为 hdmi 输出设备定义别名。
+
* '''配置Pulseaudio'''
<syntaxhighlight lang="bash">
+
将声卡的Pulseaudio活动配置文件更改为'analog-stereo' 配置文件:
Board $> aplay -D playback_hdmi /usr/share/sounds/alsa/Front_Left.wav
+
{{Info|Pulseaudio模拟立体声配置文件是默认配置文件。 因此启动后不需要下一个命令。}}
</syntaxhighlight>
+
{{Info|以下是 {{highlight|sound card index 0}}的示例。用 "''pactl list cards short''" 命令检查声卡索引。}}
: 通过PulseAudio播放
+
{{Board$}} pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
: 将声卡的Pulseaudio活动配置文件更改为"hdmi-stereo”配置文件:
 
  
: 注意:下面给出了声卡索引0的示例。使用"pactl list cards short"命令可检查所有的声卡索引。
+
* '''运行音频播放:'''
<syntaxhighlight lang="bash">
+
{{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
Board $> pacmd set-card-profile 0 output:hdmi-stereo
 
</syntaxhighlight>
 
: 运行音频播放:
 
<syntaxhighlight lang="bash">
 
Board $> aplay /usr/share/sounds/alsa/Front_Left.wav
 
</syntaxhighlight>
 
  
===在 S/PDIF 输出设备上播放音频===
+
=== Audio playback on HDMI output ===
: 注意::  S/PDIF 输出的支持取决于主板的硬件是否支持。请使用"aplay -l"命令检查可用的输出。
+
{{Warning|HDMI输出的支持取决于主板。 请用"''aplay -l''" 命令检查可用的输出。}}
: 注意: S/PDIF  ALSA 设备仅支持 32 位音频流。由于示例声音文件中未提供 32 位波形文件,因此在这里为方便起见,使用扬声器测试代替了播放。扬声器测试在以下示例中生成 440Hz 正弦波。
 
: 在 ALSA 设备上播放
 
: 在"playback_spdif” ALSA 设备上运行音频播放:
 
  
: 注意:"playback_spdif” 是在 /etc/asound.conf 文件中为 S/PDIF 输出设备定义的别名。
+
==== Playback on ALSA device ====
<syntaxhighlight lang="bash">
+
在 'playback_hdmi' ALSA设备上运行音频播放:
Board $> speaker-test -D playback_spdif -c 2 -F S32_LE -f 440 -t sine -l 1
+
{{Info|'playback_hdmi'是在 /etc/asound.conf 中为hdmi输出设备定义的别名。}}
</syntaxhighlight>
+
{{Board$}} aplay -D playback_hdmi /usr/share/sounds/alsa/Front_Left.wav
: 通过 PulseAudio 播放
 
: 将声卡活动配置文件更改为 S/PDIF 'iec958-stereo' 配置文件。
 
  
: 注意:下面给出了声卡索引 0 的示例。使用 "pactl list cards short" 命令检查所有的声卡索引。
+
==== Playback via PulseAudio ====
<syntaxhighlight lang="bash">
 
Board $> pacmd set-card-profile 0 output:iec958-stereo
 
</syntaxhighlight>
 
: 运行音频播放:
 
<syntaxhighlight lang="bash">
 
Board $> speaker-test -c 2 -F S32_LE -f 440 -t sine -l 1
 
</syntaxhighlight>
 
  
 +
* '''配置Pulseaudio'''
 +
将声卡的Pulseaudio活动配置文件更改为‘ hdmi-stereo’配置文件:
 +
{{Info|以下是 {{highlight|sound card index 0}}的示例。 用 "''pactl list cards short''" 命令检查声卡索引。}}
 +
{{Board$}} pacmd set-card-profile 0 output:hdmi-stereo
  
[[Category:Linux_Operating_System]]
+
* '''运行音频播放:'''
[[Category:Audio]]
+
{{Board$}} aplay /usr/share/sounds/alsa/Front_Left.wav
[[Category:ALSA]]
+
 
[[Category:How_to ]][[Category:How_to_run_use_cases ]]
+
=== Audio playback on S/PDIF output ===
 +
{{Warning| S/PDIF输出的支持取决于电路板。 请用 "''aplay -l''" 命令检查可用的输出。}}
 +
{{Info| S/PDIF ALSA设备仅支持 {{highlight|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|“ 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|以下是 {{highlight|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

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