本文使用的环境
电脑:Windows10
服务器 :超频 2.1 版 Debian 的随身 WiFi,Linux 内核 5.15
使用的 Debian 源:
1、环境准备
注意:
- 经测试,随身WiFi启动后不能立刻运行
bluetoothctl蓝牙工具,会导致无默认控制器,SSH连接后需等一会在运行bluetoothctl蓝牙工具,[CHG] Controller 02:00:35:25:90:59 Pairable: yes有出现此结果才是正常的,02:00:35:25:90:59 是MAC 地址,随设备改变- 本文播放需要开两个终端,一个 root 用户用于运行蓝牙,一个 user 用户用于运行 MPlayer 播放器
- 若要让 user 用户可执行
sudo,可参考解决 Linux 系统,出现 “不在 sudoers 文件中,此事将被报告” 的问题,可执行 user 时,可以是两个 user 用户终端
-
安装vim
apt-get install vim -
安装蓝牙即相关程序
apt-get install bluez bluez-firmware bluetooth pulseaudio pulseaudio-module-bluetooth bluez-tools rfkill -
安装 MPlayer 播放器与 mpg123 音频解码工具(可选)
若只想连接蓝牙,不播放音乐可不装
sudo apt-get install mplayer mpg123 -
安装 screen 虚拟终端(可选)
若想关闭终端后依然可以运行则需要使用虚拟终端
sudo apt-get install screen -
alsamixer 音频框架ALSA工具(可选,暂不推荐安装)
sudo alsamixer好像可以修改音量,但我没运行成功,MPlayer 播放器本就可以控制音量,所以请无视此项sudo apt-get install alsa-utils
2、修改文件
- 修改 system.pa 文件
将以下内容添加到文件末尾vim /etc/pulse/system.pa### fix bug: a2dp-sink profile connect failed [...]: Protocol not available load-module module-bluez5-device load-module module-bluez5-discover - 修改 default.pa 文件
将以下内容添加到文件末尾vim /etc/pulse/default.pa### Automatically switch to newly-connected devices load-module module-switch-on-connect - 修改 client.conf 文件
将以下内容添加到文件末尾vim /etc/pulse/client.conf;autospawn = no ;daemon-binary = /bin/true - 修改 daemon.conf 文件
将vim /etc/pulse/daemon.conf;exit-idle-time = 20中的20改为-1;exit-idle-time = -1 - 将用户添加到蓝牙
usermod -G bluetooth rootusermod -G bluetooth user - 重启
reboot
3、连接蓝牙
注意:蓝牙工具需占用一个终端,若关闭会自动结束进程从而断开连接
若已经连接过一次,并添加了信任设备,下次重启后的连接只需执行以下 3、4、5、6、7、8 步骤
若没有重启,只是想重新连接已信任的设备只需执行步骤 13
-
开启并启用蓝牙设备
systemctl is-enabled bluetooth.servicesystemctl status bluetooth.service -
确认蓝牙是否禁用
rfkill# 此代码块为正常执行结果,非可执行,仅供参考 ID TYPE DEVICE SOFT HARD 0 bluetooth hci0 unblocked unblocked 1 wlan phy0 unblocked unblocked -
user用户下开启 pulseaudio 音频服务系统
- 结束进程
pulseaudio -k - 开启
pulseaudio --start
- 结束进程
-
进入 bluetoothctl 蓝牙工具
sudo bluetoothctl -
打开蓝牙适配器
default-agent# 此代码块为正常执行结果,非可执行,仅供参考 [bluetooth]# default-agent Default agent request successful -
打开代理
agent KeyboardOnly或者
agent on# 此代码块为正常执行结果,非可执行,仅供参考 # 两条命令运行结果是一样的 [bluetooth]# agent KeyboardOnly Agent is already registered [bluetooth]# agent on Agent is already registered -
开启默认控制器
power on -
开启扫描蓝牙设备
scan on -
列出设备及其 MAC 地址
devices -
关闭扫描蓝牙设备
scan off -
配对蓝牙设备
pair + 空格 + 连接设备的 MAC 地址
pair -
信任蓝牙设备
trust + 空格 + 连接设备的 MAC 地址
trust -
连接蓝牙设备
connect + 空格 + 连接设备的 MAC 地址
connect连接上后 [bluetooth]# 会变为 [连接的设备名]#
-
退出蓝牙工具
quit -
断开连接
remove + 空格 + 连接设备的 MAC 地址
remove -
查看蓝牙log
sudo btmon
4、使用 MPlayer 播放音频
注意:
- flac 无损格式疑似无法播放,我是没成功,mp3 格式可以正常播放
- 如果无法播放请检查文件确保上传时没有损坏
- 文件无损坏情况下如果无法播放,可尝试重启 pulseaudio 音频服务系统,请参考前面 连接蓝牙的步骤 3
- 重启 pulseaudio 时,蓝牙可能会断开连接,只需使用 connect + 空格 + 连接设备的 MAC 地址 重新连接即可
- 使用 MPlayer 播放音频时,需在 user 用户下才可
- 音频文件名不能带有空格
- 若想将音乐存放于扩展盘中,请参考 随身 WiFi 折腾记录(4) 将扩展盘挂载到 music 目录下,需注意 win 系统正常情况是无法读取 ext4 格式,除win外其他系统应该都可以读取
创建与修改文件、文件夹时,若提示权限不够或者失败,请在root用户下运行,或者在命令前面添加 “sudo”,若sudo有报错请看文章开头的注意事项
-
创建音乐存放目录并进入
mkdir -p /musicchmod -R 777 /musiccd /music -
查看目录
ls -l -
单曲播放
mplayer xxx.mp3 -
循环播放
0 为无限循环,当 0 改为 3 时,为循环播放 3 次
将 xxx 改为*通配符,皆可循环播放当前目录中的所有 MP3 格式的音频mplayer -loop 0 xxx.mp3另外的一种循环播放MP3音频的方式
这个命令使用了
find命令来查找指定文件夹中的所有*.mp3文件,并将它们按字母顺序排序。然后使用xargs命令将文件名传递给mplayer,并使用-loop 0选项来实现循环播放。
将/path/to/folder替换为您要播放的文件夹的路径mplayer -loop 0 -playlist <(find /path/to/folder -name "*.mp3" -print0 | sort -z | xargs -0 echo) -
播放列表
经测试,播放列表的文件格式可以是 lst、txt、m3u ,本文使用的是 lst 格式
列表添加音乐时,音频文件与列表在同级目录下可直接添加文件名,若非同级目录需再加上路径,相对路径与绝对路径皆可,
个人比较推荐使用绝对路径,这样列表无论放在哪个目录都可以找到音频的位置- 创建并编辑播放列表
sudo vim music.lst# 此代码块非执行命令,为 music.lst 文件中的示例内容,仅供参考 /music/Eye-For-An-Eye.mp3 /music/I-Hate-Myself-For-Loving-You.mp3 - 播放
mplayer -playlist music.lst - 循环播放播放列表
mplayer -loop 0 -playlist music.lst
- 创建并编辑播放列表
-
快捷键操作
- 控制音量
【/】或【9】减小音量
【*】或【0】增加音量
【m】静音切换 - 暂停与继续
【p】或【空格】 - 退出
【q】或【Esc】 - 方向键控制进度
【←】和【→】 倒退和前进 10 秒
【↑】和【↓】 倒退和前进 1 分钟
【PgDn】和【PgUp】 倒退和前进 10 分钟 - 其他操作待补充
- 控制音量
5、使用虚拟终端
本文虚拟终端名称以
music为例,若需要使用两个虚拟终端,方式是一样的
由于关闭 SSH连接 后会终止程序,若想关闭后依然运行,这时就需要挂载虚拟终端,在虚拟终端中运行,这样在断开连接后程序会继续运行
- 创建于进入虚拟终端
-
只创建虚拟终端
screen -S 终端名称
screen -S music -
只进入虚拟终端
screen -r 虚拟终端
screen -r music若没有进入虚拟终端,先执行以下命令,再重新执行上面的命令
screen -d 虚拟终端screen -d music -
创建并进入虚拟终端
screen -R 终端名称
screen -R music
-
- 显示虚拟终端列表
screen -ls - 退出虚拟终端,不影响虚拟终端中程序的运行
【Ctrl】+【A】+【D】 - 删除虚拟终端
-
删除虚拟终端需先终止进程
【Ctrl】+【C】 -
从虚拟终端中删除
【Ctrl】+【D】 -
从虚拟终端外删除
screen -S 终端名称 -X quit
screen -S music -X quit
-