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
# 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" instart)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链接。
未完待续
OrangePi PC 玩Linux主线内核踩坑之旅(四)之变身MP3播放器相关推荐
- OrangePi PC 玩Linux主线内核踩坑之旅(一)之制作第一个镜像
今天开始写一个专题<OrangePi PC 玩Linux主线内核>.一方面是记录自己在踩坑过程中的点点滴滴,另一方面是分享自己的心得.目前还不确定要写几期,希望大家多多捧场. 首先简单介绍 ...
- OrangePi PC 玩Linux主线内核踩坑之旅(二)之制作镜像后的查遗补缺
一.查遗补缺之SSH连接到香橙派 上一篇我们讲到,为了可以使用SSH连接到香橙派,我们勾选了dropbear软件包,这是一个轻量级的SSH软件,包含了客户端和服务端[1].如何使用呢?在上一篇的末尾, ...
- OrangePi PC 玩Linux主线内核踩坑之旅(三)之设置静态IP地址
有了前文的基础,我们已经可以通过网络远程连接到香橙派了.但是香橙派的IP地址是通过DHCP获取的,说不定哪天就变了,我们需要对其设置静态IP地址,方便日后操作.先SSH连接到香橙派,编辑/etc/ne ...
- 微信开发踩坑之旅 之 开发准备及服务器配置
在工作和兴趣的机缘巧合之下,我开始接触微信开发.在这里简单记述自己的微信开发踩坑之旅. 首先,由于本人标准的理工科生,记述的语言有所不足,我尽量说明准确和详细点. 本文记述主线 ·申请公众号 ·公众号 ...
- 重装win10系统+Ubuntu16.04的踩坑之旅(联想拯救者r720)
重装win10系统+Ubuntu16.04的踩坑之旅(联想拯救者r720) 碎碎念:原本双系统用得很开心的,在手贱删了Ubuntu系统的某些隐藏文件之后导致Ubuntu系统不能正常使用,在某种程度强迫 ...
- python 同花顺thstrader_Python 踩坑之旅进程篇其三pgid是个什么鬼 (子进程\子孙进程无法kill 退出的解法)...
代码示例支持 平台: Centos 6.3 Python: 2.7.14 1.1 踩坑案例 pid, ppid是大家比较常见的术语, 代表进程号,父进程号. 但pgid是个什么鬼? 了解pgid之前, ...
- Vue踩坑之旅(一)—— 数组、对象的监听
作为一个接触 vue 才一个多月的小白,马上就接手基于 vue 的大型商城项目,其间真是跌跌撞撞踩了好多坑(o(╥﹏╥)o).在此写下自己的踩坑之旅,希望给跟我一样还在自学 vue 的同学一些帮助,另 ...
- VR制作中必须踩的坑365之037(oculus2、UE4、UE5、VR记录一年的踩坑之旅)Maya / ZBrush / Substance Painter倒来倒去
VR制作中必须踩的坑365之037(oculus2.UE4.UE5.VR记录一年的踩坑之旅)Full 3D GAME ASSET workflow ( Maya / ZBrush / Substanc ...
- VR制作中必须踩的坑365之044(oculus2、UE4、UE5、VR记录一年的踩坑之旅)拳击VR小游戏红绿灯
VR制作中必须踩的坑365之043(oculus2.UE4.UE5.VR记录一年的踩坑之旅)拳击VR制作起来,拳击动画人物 How to create box minigame in VR (UE4 ...
最新文章
- 为什么神经网络的激活函数必须使用线性函数?
- 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...
- python一般用什么编译器-Python常用编译器原理及特点解析
- syn flood dos
- 请简述php循环控制语句,PHP 循环控制语句几种方法详解_PHP教程
- java 代码重用_Java 代码重用:功能与上下文重用
- 物联网是互联网发展的必然趋势吗?
- IDEA工作常用第三方插件
- java-redis初探
- [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言
- Nachos Lab2 虚拟内存
- matlab中图像加噪函数imnoise
- linux搭建摄像头,Linux环境下配置虚拟摄像头akvcam
- VUE+ElementUI的表单el-from表单验证二选一必填项,并且满足条件后会清除表单验证提示。
- BATCH/批处理命令
- Cortex-M3 处理器内核
- Jenkins生成APP二维码下载链接
- php读取目录中文文件名乱码解决方法
- win11音频无声音排查解决方案
- 资本-劳动力错配指数计算、金融错配指标两大维度指标(内附代码)