我使用过很多流媒体播放器,我实在喜欢Spotify。但是我也希望给我离线30G(目前来说)音乐库一个家。我尝试过不少离线播放器,实在牵强人意,而且在我使用Linux和Mac之后,选择性就变得更少(实则不然,只是我太挑剔,很多用过觉得不好就删了)。而最终,为何不试试在终端播放音乐呢?反正我已经泡在终端里出不来。
正文
所以,我发了一个博文。我比较喜欢的两个终端播放器分别是:
【Cmus】和【Ncmpcpp】
(还有一些,如moc、sayonara-terminal)
Cmus
它长这样:
事实上,Cmus 是不错的,因为它支持的系统很多,而且开箱即用,只需要包管理器安装好: brew install cmus
就可以直接打开 cmus
,我也使用过一段时间,但是我发现我有些Flac音乐播放卡卡的沙沙声音,总是会吓人一跳,我也懒得找问题,因为有固定几首歌会这样。
但是我们今天的主题并不是 Cmus ,但是我依旧会提供一些 Cmus 的快捷键指南:
x 播放
c 暂停/播放
b 下一首
z 上一首
v 归零
+/= 音量 +10%
- 音量 -10%
, 退后 -1m
. 快进 +1m
h 退后 -5
l 快进 +5
left 退后 -5
right 快进 +5
更多在这里:https://github.com/cmus/cmus/blob/master/Doc/cmus.txt
让我们回到我们的重点 —— 正题 【Ncmpcpp】
Ncmpcpp
(经过美化设置)它长这样:
来吧,废话不多说了,让我们开始安装: (本文 Ncmpcpp 版本为 ncmpcpp 0.10.1
)
第一步 – 安装 MPD
MPD(Music Player Daemon)是 ncmpcpp 的后端服务,它负责管理和播放音乐。
brew install mpd
# Linux 自行换掉 Brew 就行
第二步 – 创建 MPD 的配置文件目录
mkdir -p ~/.mpd/playlists
touch ~/.mpd/{mpd.conf,mpd.db,mpd.log,mpd.pid}
第三步 – 编辑配置文件
vim ~/.mpd/mpd.conf
music_directory "~/Music" # 音乐目录
playlist_directory "~/.mpd/playlists"
db_file "~/.mpd/mpd.db"
log_file "~/.mpd/mpd.log"
pid_file "~/.mpd/mpd.pid"
state_file "~/.mpd/mpdstate"
bind_to_address "127.0.0.1" # 服务地址绑定到本机(如果你需要让 MPD 在局域网中被其他设备访问,可以将 bind_to_address 设置为 0.0.0.0)
port "6600" # MPD 服务使用的端口
audio_output { # macOS 上选择 osx,如果需要输出到其他设备可自行调整。
type "osx"
name "Mac Audio"
buffer_time "12"
}
如果是Linux的话:(在安装完毕后,7
页面可以查看,支持开关输出)
....同上
audio_output {
type "alsa" # 对应 Linux 的音频系统
name "My ALSA Output"
}
第四步 – 启动MPD
mpd
# 设置开机自启动
# Mac 立即启动 mpd 并在登录时重新启动:
brew services start mpd
# 如果你不想/不需要后台服务,可以直接运行:
/opt/homebrew/opt/mpd/bin/mpd --no-daemon
# Linux
systemctl enable --now mpd
# 重启 MPD
brew services restart mpd # MacOS
systemctl restart mpd # Linux
第五步 – 安装Ncmpcpp
brew install ncmpcpp
# 验证安装
ncmpcpp --version
# 输出内容:
ncmpcpp 0.10.1
第六步 – 配置Ncmpcpp
因为 Ncmpcpp 是依赖 MPD 的,所以需要为 Ncmpcpp 设置配置文件,以便它能够正确连接到 MPD。
在 ~/.ncmpcpp/config
中创建 ncmpcpp 的配置文件:
mkdir -p ~/.ncmpcpp
vim ~/.ncmpcpp/config
添加下面内容:
# MPD 服务器地址
mpd_host = "127.0.0.1"
# MPD 服务器端口
mpd_port = "6600"
# 指定 mpd 音乐库路径
mpd_music_dir = "~/Music"
# 播放列表设置
playlist_disable_highlight_delay = "0"
美化指南在结尾
配置文件要确保的内容:
- mpd_host 和 mpd_port:确保与 MPD 的设置一致(默认是 127.0.0.1:6600)。
-
mpd_music_dir:指定你的音乐文件夹路径。
第七步 – 启动Ncmpcpp
启动步骤:
1.确保 MPD 正在运行:
mpd
2.启动 Ncmpcpp:
ncmpcpp
3.如果一切正常,你应该会看到 Ncmpcpp 的主界面,类似于下图:
如果没看到音乐
即便刷新了还是没看到,但是我们看一下日志,确实是导入成功了。
这是为什么呢,是因为 1
是播放历史,默认是空白的,你需要切换到 2
文件浏览器,选择音乐的目录,选择播放后,才会在 1
播放历史里看到。
至此,所有的工作就完成了,可以开始听歌了。而详细的美化指南在结尾
常用操作和快捷键
基本操作:
添加音乐到 MPD 数据库:
要确保音乐文件已放在 music_directory 指定的路径中(如上文配置的 ~/Music)。
之后在 ncmpcpp 中按下u
,更新 MPD 数据库。
播放音乐:
使用 箭头键
导航到歌曲或专辑,按 Enter
开始/重新播放。
切换窗口:
1:主播放窗口(播放历史)。
2:文件浏览器。
3:搜索。
4:音乐库。
5:播放列表编辑。
6:标签设置。
7:输出接口。
8:音乐波频。
播放控制:
Enter:开始/重新播放。
>/<:下一首/上一首(这个是括号,不是方向键)
p/s:暂停/终止播放。
方向左右 - 调整音量
r/z/y:重复/随机/循环播放模式。
c/S:清除/保存播放列表。
n/m:移动播放列表音乐。
搜索:
按 /
,然后输入搜索关键词(如歌曲名、艺术家)。
退出:
按 q
退出 ncmpcpp。
更多快捷键
https://linux-in-the-house.pages.dev/ncmpcpp
美化指南
实现 FIFO 频谱图可视化显示。
报错前言
在 v0.9 – v0.10 后的 MPD 新版本里, mpd.conf
配置文件 已经弃用 下面的 设置
Reading configuration from ~/.ncmpcpp/config...
Unknown option: visualizer_fifo_path
Unknown option: visualizer_sync_interval
visualizer_fifo_path
, 新版本请使用 visualizer_data_source
。
之后可以在 mpd.conf
配置中【指定】 buffer_time
,并在 ncmpcpp
配置中【移除】 visualizer_sync_interval
。
如果你希望使用大家的(旧)配置而不报错,可以编译安装 v0.8 或之前的版本
配置 FIFO
什么是FIFO呢?
FIFO(First In First Out)管道文件 是一种特殊的文件类型,用于在程序间传递数据。在 MPD 和 ncmpcpp 中,FIFO 通常用于传递音乐的可视化数据(如频谱图)。MPD 将音频数据输出到 FIFO 文件,而 ncmpcpp 读取该文件并显示频谱效果。
下面,我们来配置。
第一步 – 创建 FIFO 文件
mkfifo /tmp/mpd.fifo
第二步 – 给予 FIFO 读写权限
chmod 666 /tmp/mpd.fifo
第三步 – 在 MPD 配置追加点东西
vim ~/.mpd/mpd.conf
### 追加下面内容
# FIFO 输出
audio_output {
type "fifo" # 使用 FIFO 类型
name "Visualizer" # 输出名称,可自定义
path "/tmp/mpd.fifo" # FIFO 文件的路径
format "44100:16:2" # 音频格式(采样率:位深度:声道数)
}
type "fifo"
:指定输出类型为 FIFO。
path "/tmp/mpd.fifo"
:与前面创建的 FIFO 文件路径一致。
format "44100:16:2"
:指定音频数据的格式(44.1 kHz、16 位深度、双声道)。
第四步 – 保存文件后,(每次修改都要)重新启动 MPD:
brew services restart mpd # MacOS
systemctl restart mpd # Linux
之后就没问题了。编辑 ncmpcpp
的配置文件(~/.ncmpcpp/config):
visualizer_output_name = "FIFO"
visualizer_data_source = "/tmp/mpd.fifo"
visualizer_type = "spectrum"
visualizer_in_stereo = "yes"
visualizer_look = "●▋"
visualizer_output_name
:指定可视化的输出名称,与 MPD 配置一致。
visualizer_data_source
:FIFO 文件路径,必须与 MPD 的配置一致。
visualizer_type
:
spectrum
:频谱图。-
wave
:波形图。
visualizer_in_stereo
:启用立体声显示(可选)。
visualizer_look
:设置频谱柱字符样式,例如 ●▋。
进入 Ncmpcpp 开启波频图
首先要播放一首歌,之后打开 7
输出设备管理,可以看到一个新的设备,回车打开
之后在 8
音乐可视化页面,就可以看到波频图了,否则是看不到的
之后就完成了。
我的配置
下面是我使用的一些美化设置:
来自 – vim ~/.mpd/mpd.conf
music_directory "~/Music"
playlist_directory "~/.mpd/playlists"
db_file "~/.mpd/mpd.db"
log_file "~/.mpd/mpd.log"
pid_file "~/.mpd/mpd.pid"
state_file "~/.mpd/mpdstate"
bind_to_address "127.0.0.1"
port "6600"
audio_output {
type "osx"
name "Mac Audio"
buffer_time "12"
}
audio_output {
type "fifo" # 使用 FIFO 类型
name "Visualizer" # 输出名称,可自定义
path "/tmp/mpd.fifo" # FIFO 文件的路径
format "44100:16:2" # 音频格式(采样率:位深度:声道数)
}
来自 – vim ~/.ncmpcpp/config
mpd_music_dir = "~/Music"
lyrics_directory = ~/.ncmpcpp/lyrics
ncmpcpp_directory = ~/.ncmpcpp
mpd_host = "localhost"
mpd_port = "6600"
mpd_connection_timeout = "5"
mpd_crossfade_time = "5"
# Playlist
playlist_disable_highlight_delay = "0"
playlist_display_mode = "columns"
playlist_show_remaining_time = "yes"
browser_display_mode = "columns"
autocenter_mode = "yes"
fancy_scrolling = "yes"
follow_now_playing_lyrics = "yes"
display_screens_numbers_on_start = "yes"
ignore_leading_the = "yes"
lyrics_database = "1"
song_columns_list_format = "(10)[blue]{l} (30)[green]{a} (30)[magenta]{b} (50)[yellow]{t}"
colors_enabled = "yes"
main_window_color = "white"
main_window_highlight_color = "blue"
header_window_color = "cyan"
volume_color = "red"
progressbar_color = "cyan"
statusbar_color = "white"
active_column_color = "cyan"
active_window_border = "blue"
alternative_header_first_line_format = "0aqqu/a {7%a - 9}{5%t9}|{8%f9}0atqq/a9"
alternative_header_second_line_format = "{{6%b9}{ [6%y9]}}|{%D}"
song_list_format = "{3%n │ 9}{7%a - 9}{5%t9}|{8%f9}R{6 │ %b9}{3 │ %l9}"
user_interface = "alternative"
#user_interface = "classic"
default_place_to_search_in = "database"
# visualizer
visualizer_data_source = "/tmp/mpd.fifo"
visualizer_output_name = "my_fifo"
#visualizer_type = "wave" (spectrum/wave)
visualizer_type = "spectrum" (spectrum/wave)
visualizer_in_stereo = "yes"
visualizer_look = "●▋"
## Navigation ##
cyclic_scrolling = "yes"
header_text_scrolling = "yes"
jump_to_now_playing_song_at_start = "yes"
lines_scrolled = "2"
## Other ##
system_encoding = "utf-8"
regular_expressions = "extended"
## Selected tracks ##
selected_item_prefix = "* "
discard_colors_if_item_is_selected = "no"
## Seeking ##
incremental_seeking = "yes"
seek_time = "1"
## Visivility ##
header_visibility = "yes"
statusbar_visibility = "yes"
titles_visibility = "yes"
progressbar_look = "=>-"
progressbar_elapsed_color = "white"
now_playing_prefix = "> "
song_status_format = " 2%a4⟫3⟫8%t 4⟫3⟫ $5%b "
autocenter_mode = "yes"
centered_cursor = "yes"
# Misc
display_bitrate = "yes"
# enable_window_title = "no"
follow_now_playing_lyrics = "yes"
ignore_leading_the = "yes"
empty_tag_marker = ""
美化参数指南:https://twily.info/.ncmpcpp/config
中文美化教程:https://blog.yangmame.org/mpd-ncmpcpp%E9%85%8D%E7%BD%AE%E7%BE%8E%E5%8C%96%E6%95%99%E7%A8%8B.html
完成的美化样式配置大全(有图):http://dotshare.it/category/mpd/ncmpcpp/
疑难杂症
专辑 / 音乐名字没有正常显示
如果你的音乐出现这样的问题,其实是音乐的 tag 标签不全。
你可以在 6
标签编辑器里面补全。
也可以使用一些好用的,可视化的标签修改器,编辑补全。
如开源的 – MusicBrainz Picard、Kid3
发表回复