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.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
|
波形图如下