15. 音频

音视频是人类在日常生活里面使用非常广泛的信息获取方式,它的本质就是声音和图像信息的采集、存储和回放。 本章我们来介绍音视频播放的相关基础概念,并且给大家演示如何在板卡上进行音视频的播放。

15.1. 声卡设备

注意

LubanCat-H618系列板卡3.5mm音频接口仅支持音频输出,不支持音频输入

15.1.1. 获取录音设备

1
2
#获取录音设备
arecord -l

运行结果如下图:

未找到图片
  • card 2 : HDMI声音设备

15.1.2. 获取播放设备

1
2
#获取播放设备
aplay -l

运行结果如下图:

未找到图片
  • card 0 :板载SOC(H618)音频输出

  • card 2 :HDMI声音设备

  • card 0 和 card 2 是这些设备在Linux里注册的设备,我们可以通过应用程序调用这些接口

15.1.3. 声卡驱动目录

查看声卡驱动目录

运行结果如下图:

未找到图片
  • controlC0:用于声卡控制,C0 表示声卡0,对应上文的板载H618芯片。

  • controlC2:用于声卡控制,C2 表示声卡2,对应上文的HDMI声音输出。

  • pcmC0D0p:用于播放的 pcm 设备,最后面的“p”是 playback 的缩写,表示放音。

  • pcmC2D0p:用于播放的 pcm 设备,最后面的“p”是 playback 的缩写,表示放音。

  • pcmC2D0c:用于录音的 pcm 设备,最后面的“c”是 capture 的缩写,表示录音

  • timer :定时器

  • by-path: 保存着设备的对应关系

运行结果如下图:

未找到图片

可以看到每个control之间都有一个对应关系。

查看系统挂载上的声卡:

1
2
#查看系统挂载上的声卡
cat /proc/asound/cards

运行结果如下图:

未找到图片

15.2. 配置声卡

15.2.1. amixer

使用amixer可以获取声卡的详细配置

使用amixer前需要知道你需要的配置的声卡的设备号(card x, 如card 0)

下面以audiocodec(card 0)为例进行配置

1
2
#列出可以控制card 0的控制器
amixer controls -c 0

运行结果如下图:

未找到图片
1
2
#列出所有card 0控制器能配置的值
amixer contents -c 0

运行结果如下图:

未找到图片
  • 可以看到列出了每个控制器能配置的值,以及当前的值

1
2
3
#获取对应的控制器配置的值
#例如:amixer -c $card_id cget $id,这里获取的是card 0的声音数字音量大小
amixer -c 0 cget numid=2

运行结果如下图:

未找到图片

其中:

  • values=1: 需要配置两个值

  • min=0 :可配置的最小值为0

  • max=63:可配置的最大值为252

  • values=57:当前的值为57

运行结果如下图:

未找到图片

可以看到成功配置完成

配置声音播放输出

1
2
#例:获取card 0的声音播放的方式
amixer -c 0 cset numid=1

运行结果如下图:

未找到图片

注意

如果card 0声音播放方式为Off,则需要配置为开, 可使用命令amixer -c 0 cset numid=1 1或者amixer -c 0 cset numid=1 On将板卡声音播放打开。

15.2.2. alsamixer

这是一个命令行图形化的配置工具

1
alsamixer

运行结果如下图:

未找到图片

F6 选择自己想要配置的声卡

未找到图片

通过界面可以看到,下方列出的可配置的控制器,和上述amixer contents列出的可配置的控制器是一致的。 因为图形化配置的方式会比较容易上手且方便,因此我们推荐使用alsamixer进行音频配置。

15.3. 音频播放

可以通过上述的 《文件传输与NFS网络文件系统》 方法将音频文件拷贝到鲁班猫板卡上。

15.3.1. 命令行

注意

命令行操作时要注意在桌面端切换成正确的输出设备

15.3.1.1. 音频播放

注意

在播放声音前请确认声卡控制器的配置,具体方法在上面。

1
2
3
4
5
#获取播放设备
aplay -l

#播放音频文件
aplay -Dhw:0 xxx.wav
  • -Dhw:0 :使用card 0作为播放设备

未找到图片

更多命令需要自己去探索

1
2
#获取更多用法
aplay -h

15.3.1.2. 多格式音频播放

如果需要播放除wav格式外的比较通用的文件格式(mp3,flac等),可以参照以下方法:

SoX是一个跨平台的命令行实用程序, 可以将各种格式的音频文件转换为需要的其他格式。 SoX 还可以对输入的音频文件应用各种效果,也支持在大多数平台上播放和录制音频文件。

本小节仅以简单的测试播放,更多使用方式请参考官方说明文档: http://sox.sourceforge.net/

用以下命令安装sox,libsox-fmt-all包含各个格式的解码器。

1
sudo apt install sox libsox-fmt-all

使用方法:

1
2
3
4
5
6
7
8
#使用card 0播放mp3音频
play -d hw:0 xxx.mp3

#使用card 0播放wav音频
play -d hw:0 xxx.wav

#使用card 0播放flac音频
play -d hw:0 xxx.flac
未找到图片

15.3.2. 桌面端

15.3.2.1. 切换播放设备

未找到图片

15.3.2.2. 音频管理

debian用户需要自行安装

1
2
#安装软件
sudo apt install pavucontrol

打开软件

未找到图片

可以根据需求对音频设备进行配置。

15.3.2.3. 播放音乐

默认音乐软件是VLC Media Player, 如果想要使用其他的音乐播放器,可自行根据播放器的安装方法安装。

打开方法

未找到图片

然后,可以把文件拖进VLC软件里进行播放。

小技巧

也可以直接在文件管理里直接双击音乐文件进行播放