> 文档中心 > OrangePi PC 玩Linux主线内核踩坑之旅(四)之变身MP3播放器

OrangePi PC 玩Linux主线内核踩坑之旅(四)之变身MP3播放器

主线内核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# lstest.wav

很好,文件成功传送到香橙派了。下面测试播放一下

# aplay test.wav Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereoaplay: 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/shcase "$1" in  start)  echo "Enable Audio Card"  su root -c "alsactl restore"  ;;  stop)  echo "Nothing to do"  ;;  *)  echo "Usage:$0 start"  exit 1  ;;esacexit 0

然后赋权,以便允许执行

# chmod 777 S60audio

现在你再reboot试试?可能有人要问,S60audio的S60是什么意思?咱们先来看看/etc/init.d/目录下有什么

# cd /etc/init.d/# lsS01syslogd   S02sysctl    S40network   S60audio     rcSS02klogd     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# lstest.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链接。

未完待续

央视天气网