主线内核Linux跑起来后,我们就可以用香橙派做一些简单的应用了。既然是简单的应用,那便是说基本上无需再添加额外的硬件即可实现相应的功能,“变身MP3播放器”便是一例。当然,耳机或是功放还是要准备的,这个不要和我抬杠哈。
一、配置Buildroot编译选项
香橙派变身MP3播放器需要2步:首先是使能声卡,然后就是运行播放软件对MP3文件进行解码。按照这个需求,我们需要使能2个编译选项。打开buildroot配置菜单
dpmicro@dpmicro-PC:~/Desktop/buildroot-2020.11$ make menuconfig
在 Target packages → Audio and video applications 配置项下,首先勾选 alsa-utils ,随后进入 alsa-utils 配置项,把 amixer 和 aplay/arecord 也勾上
接着返回上一级,勾选 mpg123
保存,退出,编译。网盘里有此次编译的增补包,欢迎下载哦。
dpmicro@dpmicro-PC:~/Desktop/buildroot-2020.11$ make
接下来将新生成的镜像文件烧录至TF卡。记得要对分区扩容哦,不清楚的同学请查阅踩坑之旅(二)。最后把TF卡插回香橙派,上电开机!呃。。。因为TF卡的系统又被重做了一遍,所以静态IP的配置也都丢了。。。还请参考踩坑之旅(三)再配置一次。。。╮( ̄▽ ̄)╭
下面使用SSH远程到香橙派进行操作
dpmicro@dpmicro-PC:~/Desktop$ ssh 192.168.1.10 -l root
输入密码,回车登录。
二、配置声卡暨alsa相关介绍
2.1 用alsamixer设置声卡
首先我们来配置声卡
# alsamixer
alsamixer是图形化界面,看上去很友好的样子。这些柱状图自不必说,肯定是音量了(应该说是增益),MM指的是目前处于静音状态,由此可见,声卡默认处于被禁用状态。是不是只有一块声卡呢?按F6可以选择声卡
看样子确实只有一块,此处的H3 Audio Codec就是香橙派的模拟音频输出。按左右方向键,将红色的 < > 移动至Line Out处,按下字母M键,此时线路状态变为OO,再按上下方向键调节音量,按Esc保存退出。
在网盘的本章目录下,下载test.wav到桌面。如何将这个音频文件放到TF卡上呢?难不成把TF卡插入读卡器再插入电脑的USB口?不必不必,因为我们有scp工具(还记得踩坑之旅(一)中提到过吗?)。新建一个终端窗口
dpmicro@dpmicro-PC:~/Desktop$ scp test.wav root@192.168.1.10:/root/
root@192.168.1.10's password:
test.wav 100% 4832KB 3.1MB/s 00:01
回到香橙派的SSH,查看/root下的文件
# pwd
/root
# ls
test.wav
很好,文件成功传送到香橙派了。下面测试播放一下
# aplay test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
aplay: pcm_write:2058: write error: Input/output error
没有声音。。。而且,aplay也给出了错误信息。再次运行alsamixer进行声卡设置
将DAC的状态也改为OO,Esc保存退出。再试
# aplay test.wav
Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
这下可以了,你会听到“左声道,嘟。。。右声道,嘟。。。立体声,嘟。。。”,如果左右反了,那你把耳机互换一下。。。
2.2 开机自动设置声卡
系统会自动保存声卡的设置状态吗?聪明的你可能已经reboot了,没错,不会保存,只要重启声卡就又被禁用了。这可着实有些蛋疼。我们先重新开启Line Out和DAC并设置好音量,用alsa的工具来保存声卡状态
# alsactl store
此时声卡的配置信息会保存至默认的/var/lib/alsa/asound.state文件,可以使用cat命令查看。重启后,使用
# alsactl restore
命令来恢复声卡设置。不过这样还是有些不爽,能不能自动恢复呢?可以试着把这条命令写成服务,令其开机运行。在/etc/init.d/目录下新建S60audio文件
# cd /etc/init.d/
# touch S60audio
# vi S60audio
写入如下内容
#!/bin/sh
case "$1" in
start)
echo "Enable Audio Card"
su root -c "alsactl restore"
;;
stop)
echo "Nothing to do"
;;
*)
echo "Usage:$0 start"
exit 1
;;
esac
exit 0
然后赋权,以便允许执行
# chmod 777 S60audio
现在你再reboot试试?可能有人要问,S60audio的S60是什么意思?咱们先来看看/etc/init.d/目录下有什么
# cd /etc/init.d/
# ls
S01syslogd S02sysctl S40network S60audio rcS
S02klogd S20urandom S50dropbear rcK
S表示服务,后面两位数字表示优先级,可以看到,dropbear也是在这里启动的哦。
2.3 amixer和arecord的一点介绍
amixer是命令行版的声卡设置程序。
三、播放MP3暨mpg123相关介绍
下载网盘里的MP3文件到桌面,scp传送到香橙派
dpmicro@dpmicro-PC:~/Desktop$ scp ybnlq.mp3 root@192.168.1.10:/root/
root@192.168.1.10's password:
ybnlq.mp3 100% 3818KB 2.8MB/s 00:01
用mpg123播放试试,参数-C表示启用终端控制
# pwd
/root
# ls
test.wav ybnlq.mp3
# mpg123 -C ybnlq.mp3
按下字母v键可以显示进度条。。。美妙的歌声从耳机传来,变身MP3播放器完成!如果需要了解有哪些控制功能,按h键查看。这里给出中文释义。
[s] or [ ] 暂停/恢复 播放 (比如 空格键)
[f] 下一曲
[d] 上一曲
[]] 下一目录
[[] 上一目录
[b] 回到曲首
[p] 回环播放当前位置
[.] 前进
[,] 倒带
[:] 快进
[;] 快倒
[>] 精细前进
[<] 精细倒带
[+] 音量增
[-] 音量减
[r] RVA切换
[v] 详情
[l] 列出播放列表和当前曲目
[t] 显示tag信息
[m] 显示MPEG头信息
[h] 帮助
[q] 退出
[c] or [C] 音调增(小幅,大幅)
[x] or [X] 音调减(小幅,大幅)
[w] 音调还原
[k] 打印出播放列表和曲目中的当前位置,以便使用一些外部工具存储书签
事实上,如果目录中有多个MP3文件,可以使用通配符✱,这将生成一个临时的播放列表,参数-Z表示乱序播放
# mpg123 -C -Z *.mp3
mpg123还支持在线播放,只需将文件名替换为URL即可,目前只支持http链接。
未完待续