16. 音频

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

16.1. 配置声卡

16.1.1. 设备配置与工具安装

查看声卡驱动目录

1
ls /dev/snd/
1
2
3
root@lubancat:~# ls /dev/snd/
by-path  controlC0  pcmC0D0c  pcmC0D0p  seq  timer
root@lubancat:~#
  • controlC0:用于声卡控制,C0 表示声卡 0。

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

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

  • timer :定时器

16.1.2. 设置声卡音量

16.1.2.1. alsamixer

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

1
alsamixer
未找到图片
  • F4 可进入录音设置模式

未找到图片

16.1.2.2. amixer

设置音量前,要先使用amixer获得音乐播放的id号

1
2
#获取声卡的
amixer controls
1
2
3
4
5
6
cat@lubancat:~$ amixer controls
numid=2,iface=MIXER,name='Capture MIC Path'
numid=4,iface=MIXER,name='Capture Volume'
numid=1,iface=MIXER,name='Playback Path'
numid=3,iface=MIXER,name='Playback Volume'
cat@lubancat:~$

可以看到 numid=3,iface=MIXER,name=’Playback Volume’ 就是我们要设置播放音量的设备,我们可以通过以下命令去控制音量

1
2
3
4
#获取音量的大小
amixer cget numid=3
#设置音量大小
amixer cset numid=3 120
未找到图片

16.2. 桌面音频播放

16.2.1. 播放音乐

未找到图片

进入有音乐的文件夹内,然后双击就可以播放音乐, 默认音乐软件是mpv Media Player, 如果想要使用其他的音乐播放器,可自行根据播放器的安装方法安装。

未找到图片

可以直接点击右上角的音量按钮调节,通过更多选项,还可以调整更多的选项。

未找到图片

16.2.2. 录音

1
2
#安装软件
sudo apt install gnome-sound-recorder

打开软件

未找到图片

按左上角的record就可以录制了,按done结束录音,录音的路径为/home/cat/Recordings 如果录制的时候波形图没有东西就要检查以下耳机是否插好,

未找到图片

播放录音

未找到图片

当然,你也可以安装其他更专业,更强大的录音软件。

16.3. 命令行音频播放

16.3.1. 播放WAV格式音乐

网上搜索一首自己喜欢的wav格式歌曲,拷贝到板卡后,使用以下命令即可播放:

1
2
#注意:aplay只能播放waw格式的音乐,mp3格式不能播放
aplay xxx.wav
1
2
3
#演示效果
cat@lubancat:~$ aplay 02七里香.wav 120
Playing WAVE '02七里香.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

如果没有网络环境,则可以先进行录音,生成wav文件后再进行播放

16.3.2. 录音

使用arecord进行录音

1
arecord -f cd -d 10 test.wav
  • -f 是设置录音质量,cd表示录音质量为 cd 级别

  • d 是指定录音时间,单位是 s

  • test.wav是生成的录音文件名

16.3.3. 多格式播放

alsa-utils只能播放wav格式的音频,若想要播放其他格式音频推荐使用sox播放器。

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

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

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

1
sudo apt install sox libsox-fmt-all

安装完软件之后,将想要使用的播放音频文件拷贝到板卡,使用play即可播放各个格式的音频文件了

16.3.3.1. 播放音频测试

播放mp3音频格式文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
cat@lubancat:~$ play 01七里香.mp3

01七里香.mp3:

File Size: 11.9M     Bit Rate: 320k
Encoding: MPEG audio    Info: 2004
Channels: 2 @ 16-bit   Track: 02
Samplerate: 44100Hz      Album: 七里香
Replaygain: off         Artist: 周杰伦
Duration: 00:04:57.29  Title: 七里香

In:5.47% 00:00:16.25 [00:04:41.04] Out:717k  [-=====|=====-] Hd:0.0 Clip:0

播放flac音频格式文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
cat@lubancat:play 03七里香.flac

03七里香.flac:

File Size: 36.2M     Bit Rate: 974k
Encoding: FLAC
Channels: 2 @ 16-bit   Track: 02
Samplerate: 44100Hz      Album: 七里香
Replaygain: off         Artist: 周杰伦
Duration: 00:04:57.20  Title: 七里香

In:3.59% 00:00:10.68 [00:04:46.52] Out:471k  [  ====|===-  ] Hd:0.0 Clip:0

播放wav音频格式文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
cat@lubancat:play 02七里香.wav

02七里香.wav:

File Size: 52.4M     Bit Rate: 1.41M
Encoding: Signed PCM
Channels: 2 @ 16-bit
Samplerate: 44100Hz
Replaygain: off
Duration: 00:04:57.20

In:3.81% 00:00:11.33 [00:04:45.87] Out:500k  [ =====|======] Hd:0.0 Clip:0

16.3.3.2. ffplay

ffplay 是 FFMpeg 自带的播放器,使用了 ffmpeg 解码库和用于视频渲染显示的 sdl 库, 也是业界播放器最初参考的设计标准。

ffplay既可以播放音频,又可以播放视频,是从事音视频相关开发的工作人员常用的基础工具之一。

LubanCat-RK系列板卡在系统上预装了ffmpeg工具包,因此无需安装即可使用

ffplay 需要使用图形界面播放,如果没有图形界面, 或者没有用带X server的图形界面的SSH连接终端连接,是无法正常播放的。 (比如:mobaxterm)

这里推荐使用mobaxterm 用SSH连接LubanCat板卡,然后开启X server服务,就能观看,或者播放音乐。

1
2
#ffplay兼容多种类型的音频格式
ffplay xxx.mp3

如下图

未找到图片

如果用ssh连接LubanCat-RK系列板卡,具有X server服务的远程连接客户端会 自动打开播放音乐的频谱图

未找到图片

除了默认的方法打开,还可以通过配置选项

1
2
3
4
5
6
#关闭任何播放图形
ffplay -showmode 0 01.mp3
#播放音乐波形图
ffplay -showmode 1 01.mp3
#播放音乐频谱图
ffplay -showmode 2 01.mp3

波形图如下

未找到图片