主线内核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播放器相关推荐

  1. OrangePi PC 玩Linux主线内核踩坑之旅(一)之制作第一个镜像

    今天开始写一个专题<OrangePi PC 玩Linux主线内核>.一方面是记录自己在踩坑过程中的点点滴滴,另一方面是分享自己的心得.目前还不确定要写几期,希望大家多多捧场. 首先简单介绍 ...

  2. OrangePi PC 玩Linux主线内核踩坑之旅(二)之制作镜像后的查遗补缺

    一.查遗补缺之SSH连接到香橙派 上一篇我们讲到,为了可以使用SSH连接到香橙派,我们勾选了dropbear软件包,这是一个轻量级的SSH软件,包含了客户端和服务端[1].如何使用呢?在上一篇的末尾, ...

  3. OrangePi PC 玩Linux主线内核踩坑之旅(三)之设置静态IP地址

    有了前文的基础,我们已经可以通过网络远程连接到香橙派了.但是香橙派的IP地址是通过DHCP获取的,说不定哪天就变了,我们需要对其设置静态IP地址,方便日后操作.先SSH连接到香橙派,编辑/etc/ne ...

  4. 微信开发踩坑之旅 之 开发准备及服务器配置

    在工作和兴趣的机缘巧合之下,我开始接触微信开发.在这里简单记述自己的微信开发踩坑之旅. 首先,由于本人标准的理工科生,记述的语言有所不足,我尽量说明准确和详细点. 本文记述主线 ·申请公众号 ·公众号 ...

  5. 重装win10系统+Ubuntu16.04的踩坑之旅(联想拯救者r720)

    重装win10系统+Ubuntu16.04的踩坑之旅(联想拯救者r720) 碎碎念:原本双系统用得很开心的,在手贱删了Ubuntu系统的某些隐藏文件之后导致Ubuntu系统不能正常使用,在某种程度强迫 ...

  6. python 同花顺thstrader_Python 踩坑之旅进程篇其三pgid是个什么鬼 (子进程\子孙进程无法kill 退出的解法)...

    代码示例支持 平台: Centos 6.3 Python: 2.7.14 1.1 踩坑案例 pid, ppid是大家比较常见的术语, 代表进程号,父进程号. 但pgid是个什么鬼? 了解pgid之前, ...

  7. Vue踩坑之旅(一)—— 数组、对象的监听

    作为一个接触 vue 才一个多月的小白,马上就接手基于 vue 的大型商城项目,其间真是跌跌撞撞踩了好多坑(o(╥﹏╥)o).在此写下自己的踩坑之旅,希望给跟我一样还在自学 vue 的同学一些帮助,另 ...

  8. 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 ...

  9. VR制作中必须踩的坑365之044(oculus2、UE4、UE5、VR记录一年的踩坑之旅)拳击VR小游戏红绿灯

    VR制作中必须踩的坑365之043(oculus2.UE4.UE5.VR记录一年的踩坑之旅)拳击VR制作起来,拳击动画人物 How to create box minigame in VR (UE4 ...

最新文章

  1. 为什么神经网络的激活函数必须使用线性函数?
  2. 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...
  3. python一般用什么编译器-Python常用编译器原理及特点解析
  4. syn flood dos
  5. 请简述php循环控制语句,PHP 循环控制语句几种方法详解_PHP教程
  6. java 代码重用_Java 代码重用:功能与上下文重用
  7. 物联网是互联网发展的必然趋势吗?
  8. IDEA工作常用第三方插件
  9. java-redis初探
  10. [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言
  11. Nachos Lab2 虚拟内存
  12. matlab中图像加噪函数imnoise
  13. linux搭建摄像头,Linux环境下配置虚拟摄像头akvcam
  14. VUE+ElementUI的表单el-from表单验证二选一必填项,并且满足条件后会清除表单验证提示。
  15. BATCH/批处理命令
  16. Cortex-M3 处理器内核
  17. Jenkins生成APP二维码下载链接
  18. php读取目录中文文件名乱码解决方法
  19. win11音频无声音排查解决方案
  20. 资本-劳动力错配指数计算、金融错配指标两大维度指标(内附代码)

热门文章

  1. 实验四 LR(0)分析方法的设计与实现 (8学时)
  2. CTFshow——web入门——文件上传
  3. 找不到工作怎么办?常为工作担忧?可光担忧并没有怎么用
  4. ssrs报表教程_SSRS报表生成器简介和教程
  5. Android源码编译之Nexus5真机编译
  6. 华为WATCH D血压表无感血压趋势有什么用
  7. 六十星系之18武曲七杀坐卯酉
  8. Mac滚动截屏了解一下?
  9. 第五天系统变量没有path变量如何添加
  10. Android音视频API(android.media.midi):概览