“How to play audio”的版本间的差异
来自百问网嵌入式Linux wiki
Zhouyuebiao(讨论 | 贡献) |
|||
第1行: | 第1行: | ||
== Article purpose == | == Article purpose == | ||
− | + | 本文介绍了如何在'''Linux<sup>®</sup> OS''' 上下文中通过 [[ALSA overview|ALSA]]音频框架播放音频。 | |
− | + | 下面的示例演示如何在STM32MPU的不同音频硬件接口上播放音频[[:Category:ST boards| boards]]. | |
== Audio playback overview == | == Audio playback overview == | ||
− | The [[ALSA overview|ALSA]] | + | The [[ALSA overview|ALSA]] 框架公开了与板音频硬件接口关联的音频设备。 |
− | + | 默认情况下,应用程序音频流通过 [[PulseAudio]] 声音服务器进行路由。PulseAudio公开了映射在ALSA声卡音频设备上的音频配置文件。 PulseAudio服务器提供了一个命令行界面,该界面允许列出音频配置文件并选择配置文件以在特定的音频接口上播放。 | |
− | |||
− | |||
− | |||
+ | 以下各节中的音频播放示例适用于 [[ALSA_overview#How_to_use|ALSA utilities]].但是,音频回放可以由[[Gst-play|gstreamer]] 多媒体框架等其他应用程序启动。 | ||
== Examples == | == Examples == | ||
第15行: | 第13行: | ||
==== Playback on ALSA device ==== | ==== Playback on 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 ==== | ||
− | * ''' | + | * '''配置Pulseaudio''' |
− | + | 将声卡的Pulseaudio活动配置文件更改为'analog-stereo' 配置文件: | |
− | {{Info| | + | {{Info|Pulseaudio模拟立体声配置文件是默认配置文件。 因此启动后不需要下一个命令。}} |
− | {{Info| | + | {{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 | ||
− | * ''' | + | * '''运行音频播放:''' |
{{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| | + | {{Warning|HDMI输出的支持取决于主板。 请用"''aplay -l''" 命令检查可用的输出。}} |
==== Playback on ALSA device ==== | ==== Playback on ALSA device ==== | ||
− | + | 在 'playback_hdmi' ALSA设备上运行音频播放: | |
− | {{Info|'playback_hdmi' | + | {{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 ==== | ||
− | * ''' | + | * '''配置Pulseaudio''' |
− | + | 将声卡的Pulseaudio活动配置文件更改为‘ hdmi-stereo’配置文件: | |
− | {{Info| | + | {{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 | ||
− | * ''' | + | * '''运行音频播放:''' |
{{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| | + | {{Warning| S/PDIF输出的支持取决于电路板。 请用 "''aplay -l''" 命令检查可用的输出。}} |
− | {{Info|S/PDIF | + | {{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 ==== | ||
− | + | 在 'playback spdif' ALSA设备上运行音频播放 | |
− | {{Info| | + | {{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 ==== | ||
− | * ''' | + | * '''配置Pulseaudio''' |
− | + | 将声卡活动配置文件更改为S / PDIF'iec958-stereo'配置文件。 | |
− | {{Info| | + | {{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 | ||
− | * ''' | + | * '''运行音频播放:''' |
{{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 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2020年11月5日 (四) 10:24的最新版本
目录
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设备上运行音频播放:
'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' 配置文件:
Pulseaudio模拟立体声配置文件是默认配置文件。 因此启动后不需要下一个命令。 |
以下是 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
HDMI输出的支持取决于主板。 请用"aplay -l" 命令检查可用的输出。 |
Playback on ALSA device
在 'playback_hdmi' ALSA设备上运行音频播放:
'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’配置文件:
以下是 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
S/PDIF输出的支持取决于电路板。 请用 "aplay -l" 命令检查可用的输出。 |
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设备上运行音频播放
“ 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'配置文件。
以下是 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