介绍
在本实验中,你将学习如何在 Linux 中使用 aplay 命令,它是 ALSA(Advanced Linux Sound Architecture,高级 Linux 声音架构)工具集的一部分。aplay 命令提供了 ALSA 声音系统的用户级接口,允许你从命令行播放音频文件。你将首先安装使用 aplay 所需的软件包,然后探索其各种选项和标志,以不同的方式播放音频文件。
本实验涵盖以下步骤:安装 aplay 所需的软件包、使用 aplay 命令播放音频文件,以及探索 aplay 命令的可用选项和标志。本实验旨在通过实际示例帮助你深入理解 aplay 命令,它是在 Linux 环境中管理音频播放的有用工具。
安装 aplay 所需的软件包
在这一步中,我们将安装使用 Linux 中 aplay 命令所需的软件包。aplay 命令是 ALSA(Advanced Linux Sound Architecture,高级 Linux 声音架构)工具集的一部分,它提供了 ALSA 声音系统的用户级接口。
首先,更新软件包索引:
sudo apt-get update
示例输出:
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]
Fetched 324 kB in 1s (324 kB/s)
Reading package lists... Done
接下来,安装 alsa-utils 软件包,它包含了 aplay 命令以及其他 ALSA 工具:
sudo apt update
sudo apt-get install -y alsa-utils
示例输出:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
alsa-firmware-loaders alsa-topology-conf alsa-ucm-conf libatopology2 libsnd-dev libsndfile1 libsndfile1-dev
Suggested packages:
alsa-oss
The following NEW packages will be installed:
alsa-firmware-loaders alsa-topology-conf alsa-ucm-conf alsa-utils libatopology2 libsnd-dev libsndfile1 libsndfile1-dev
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,265 kB of archives.
After this operation, 5,120 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 alsa-firmware-loaders amd64 1.2.4-1 [12.1 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 alsa-topology-conf all 1.2.4-1 [11.0 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 alsa-ucm-conf all 1.2.4-1 [89.0 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 alsa-utils amd64 1.2.6-1ubuntu1 [1,153 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 libatopology2 amd64 1.2.4-1 [13.9 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsnd-dev amd64 1.0.29-1 [18.0 kB]
Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsndfile1 amd64 1.0.31-2 [111 kB]
Get:8 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsndfile1-dev amd64 1.0.31-2 [57.1 kB]
Fetched 1,265 kB in 1s (1,265 kB/s)
Selecting previously unselected package alsa-firmware-loaders.
(Reading database ... 123412 files and directories currently installed.)
Preparing to unpack .../alsa-firmware-loaders_1.2.4-1_amd64.deb ...
Unpacking alsa-firmware-loaders (1.2.4-1) ...
Selecting previously unselected package alsa-topology-conf.
Preparing to unpack .../alsa-topology-conf_1.2.4-1_all.deb ...
Unpacking alsa-topology-conf (1.2.4-1) ...
Selecting previously unselected package alsa-ucm-conf.
Preparing to unpack .../alsa-ucm-conf_1.2.4-1_all.deb ...
Unpacking alsa-ucm-conf (1.2.4-1) ...
Selecting previously unselected package alsa-utils.
Preparing to unpack .../alsa-utils_1.2.6-1ubuntu1_amd64.deb ...
Unpacking alsa-utils (1.2.6-1ubuntu1) ...
Selecting previously unselected package libatopology2:amd64.
Preparing to unpack .../libatopology2_1.2.4-1_amd64.deb ...
Unpacking libatopology2:amd64 (1.2.4-1) ...
Selecting previously unselected package libsnd-dev:amd64.
Preparing to unpack .../libsnd-dev_1.0.29-1_amd64.deb ...
Unpacking libsnd-dev:amd64 (1.0.29-1) ...
Selecting previously unselected package libsndfile1:amd64.
Preparing to unpack .../libsndfile1_1.0.31-2_amd64.deb ...
Unpacking libsndfile1:amd64 (1.0.31-2) ...
Selecting previously unselected package libsndfile1-dev:amd64.
Preparing to unpack .../libsndfile1-dev_1.0.31-2_amd64.deb ...
Unpacking libsndfile1-dev:amd64 (1.0.31-2) ...
Setting up alsa-firmware-loaders (1.2.4-1) ...
Setting up alsa-topology-conf (1.2.4-1) ...
Setting up alsa-ucm-conf (1.2.4-1) ...
Setting up libatopology2:amd64 (1.2.4-1) ...
Setting up libsnd-dev:amd64 (1.0.29-1) ...
Setting up libsndfile1:amd64 (1.0.31-2) ...
Setting up libsndfile1-dev:amd64 (1.0.31-2) ...
Setting up alsa-utils (1.2.6-1ubuntu1) ...
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for libc-bin (2.35-0ubuntu3) ...
现在,aplay 命令所需的软件包已安装完毕,我们可以继续下一步。
使用 aplay 命令播放音频文件
在这一步中,我们将学习如何在 Linux 中使用 aplay 命令播放音频文件。
首先,下载一个示例音频文件用于我们的示例:
wget https://www.soundjay.com/button/sounds/beep-07.wav -O ~/project/beep.wav
示例输出:
--2023-04-12 08:31:33-- https://www.soundjay.com/button/sounds/beep-07.wav
Resolving www.soundjay.com (www.soundjay.com)... 104.24.108.5, 104.24.109.5
Connecting to www.soundjay.com (www.soundjay.com)|104.24.108.5|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11174 (11K) [audio/x-wav]
Saving to: '~/project/beep.wav'
~/project/beep.wav 100%[===================>] 10.92K --.-KB/s in 0s
2023-04-12 08:31:33 (128 MB/s) - '~/project/beep.wav' saved [11174/11174]
现在,使用 aplay 命令播放音频文件:
aplay ~/project/beep.wav
示例输出:
Playing WAVE '/home/labex/project/beep.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
你应该能通过系统的扬声器或耳机听到音频文件的播放。
要停止播放,按下 Ctrl+C。
aplay 命令支持多种选项来控制音频播放,例如设置音量、循环播放等。我们将在下一步中探索这些选项。
探索 aplay 命令的选项和标志
在这最后一步中,我们将探索 aplay 命令的一些可用选项和标志。
首先,显示 aplay 命令的帮助菜单:
aplay --help
示例输出:
Usage: aplay [OPTION]... [FILE]...
Plays a PCM sound file.
Options:
-h, --help help
-D, --device=NAME set the device name
-c, --channels=NUM set the number of channels
-f, --format=FORMAT set the sample format
-r, --rate=RATE set the sample rate
-t, --type=TYPE set the file type
-v, --version show version
-V, --verbose show PCM hardware parameters
-q, --quiet quiet mode
-l, --list-devices list all soundcards and digital audio devices
-L, --list-pcm list all PCM devices
-Xalsa-opts pass options for ALSA backend
你可以尝试的一些有用选项:
循环播放音频文件:
aplay -c 2 -r 44100 -f S16_LE ~/project/beep.wav -l 3这将以立体声(2 声道)、44.1 kHz 的采样率、16 位小端格式播放
beep.wav文件,并循环播放 3 次。调整音量:
aplay -c 2 -r 44100 -f S16_LE ~/project/beep.wav --volume 50这将以 50% 的音量播放
beep.wav文件。列出可用的音频设备:
aplay -l这将显示系统中所有可用的音频设备列表。
你可以随意尝试不同的选项和标志,根据需求自定义音频播放。
总结
在本实验中,我们学习了如何在 Linux 中安装使用 aplay 命令所需的软件包,它是 ALSA(Advanced Linux Sound Architecture,高级 Linux 声音架构)工具集的一部分。我们更新了软件包索引并安装了 alsa-utils 软件包,其中包含了 aplay 命令以及其他 ALSA 工具。随后,我们探索了 aplay 命令的选项和标志,这些选项和标志允许我们播放音频文件并自定义播放设置。
本实验涵盖了 aplay 命令的实际用法,包括播放音频文件以及理解可用的选项和标志。这些知识可以应用于 Linux 环境中的各种音频相关任务。



