头图

osx安装mpd和ncmpcpp

简介

mdp 是一款开源的音乐播放软件, 全名为 media player daemon , 从字面意思理解, 就是一个后台播放进程. 不同于传统的音乐播放软件集成了播放解码和界面, mpd 只是一个后台播放进程, 需要单独的客户端程序与 mpd 进行交互. mpd 的客户端也各种各样, 有浏览器插件/windows客户端/gnome客户端/终端客户端等等, 而今天主要介绍的就是终端客户端程序 ncmpcpp.

mdp 及ncmpcpp 安装

osx 平台下可以使用 brew 命令进行快速安装, 以下命令可以搜索当前本地仓库是否有以上两个应用程序.


➜  brew search mpd
==> Formulae
bandcamp-dl        libmpdclient       mpdas              mpdscribble        rtmpdump           mpw                mad
libmpd             mpd                mpdecimal ✔        mpdviz             mpc                mpv
==> Casks
cisdem-pdf-converter-ocr                     cisdem-pdfmanagerultimate                    kmbmpdc

➜  brew search ncmpcpp
==> Formulae
ncmpcpp                                                             ncmpc

如果仓库中不存在以上程序, 可以使用 brew update 命令更新仓库索引.

使用 brew install 命令安装, 稍待片刻后安装完成后就可以使用 mpd 及 ncmpcpp :

➜  brew install mpd ncmpcpp
Updating Homebrew...

配置 mpd

在启动 mpd 之前, 我们需要 mpd 对进行一些配置.

创建 mdp 媒体文件夹

$ mkdir -p ~/.mpd/playlists
$ touch ~/.mpd/{mpd.conf,mpd.db,mpd.log,mpd.pid,mpdstate}
$ ls ~/.mpd/
mpd.conf mpd.db mpd.log mpd.pid mpdstate playlists

创建配置文件 ~/.mpd/mpd.conf, 用于配置 mpd 进程.

$ cat ~/.mpd/mpd.conf

music_directory "~/Music"
playlist_directory "~/.mpd/playlists"
db_file "~/.mpd/mpd.db"
log_file "~/.mpd/mpd.log"
log_level "default"
# log_level "verbose"
pid_file "~/.mpd/mpd.pid"
state_file "~/.mpd/mpdstate"
auto_update "yes"
auto_update_depth "3"
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"

audio_output {
    type "osx"
        name "CoreAudio"
        mixer_type "software" # control volume localy
        # mixer_type "hardware"
}

decoder {
    plugin "mp4ff"
        enabled "no"
}

bind_to_address "127.0.0.1"
port "6600"
user "guoxiangxun"

# Visualizer
audio_output {
    type "fifo"
        name "my_fifo"
        path "/tmp/mpd.fifo"
        format "44100:16:2"
        buffer_time "100000"
        # # auto_resample "no"
        # # use_mmap "yes"
}

配置ncmpcpp

创建 ncmpcpp 配置文件夹

$ mkdir ~/.ncmpcpp/
$ touch ~/.ncmpcpp/error.log

创建 config 配置文件

$ cat ~/.ncmpcpp/config

# Files
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_show_remaining_time = "yes"

## Display Modes ##
playlist_editor_display_mode = "columns"
search_engine_display_mode = "columns"
browser_display_mode = "columns"
playlist_display_mode = "columns"

## Song List ##
# song_columns_list_format = "(10)[blue]{l} (30)[green]{a} (30)[magenta]{b} (50)[yellow]{t}"
song_columns_list_format = "(10f)[250]{l} (50)[cyan]{t|f} (18)[blue]{a} (22)[magenta]{br}"
song_list_format = "{$3%n │ $9}{$7%a - $9}{$5%t$9}|{$8%f$9}$R{$6 │ %b$9}{$3 │ %l$9}"

## General Colors ##
colors_enabled = "yes"
main_window_color = "red"
header_window_color = "cyan"
volume_color = "red"
progressbar_color = "cyan"
statusbar_color = "red"
progressbar_elapsed_color = "white"
active_window_border = "blue"

## Current Item ##
current_item_prefix = "$(blue)$r"
current_item_suffix = "$/r$(end)"
current_item_inactive_column_prefix = "$(cyan)$r"

## Alternative Interface ##
user_interface = "alternative"
# user_interface = "classic"
alternative_header_first_line_format = "$0$aqqu$/a {$7%a - $9}{$5%t$9}|{$8%f$9} $0$atqq$/a$9"
alternative_header_second_line_format = "{{$6%b$9}{ [$6%y$9]}}|{%D}"

# visualizer
# # visualizer_fifo_path = "/tmp/mpd.fifo" # deprecated , using visualizer_data_source
visualizer_data_source = "/tmp/mpd.fifo"
visualizer_output_name = "my_fifo"
# # visualizer_sync_interval = "12"  # using buffer_time in mpd.conf audio_output
visualizer_type = "wave" (spectrum/wave)
#visualizer_type = "spectrum"
visualizer_in_stereo = "yes"
visualizer_look = "+|"
# 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 = "yes"

## Seeking ##
incremental_seeking = "yes"
#seek_time = "1"

## Visivility ##
header_visibility = "yes"
statusbar_visibility = "yes"
titles_visibility = "yes"

progressbar_look = "=>-"
#progressbar_look = "─╼─"

# ## Now Playing ##
#now_playing_prefix = "> "
now_playing_prefix = "$b$2▶ "
centered_cursor = "yes"

# ## Classic Interface ##
song_status_format = " $2%a $4⟫$3⟫ $8%t $4⟫$3⟫ $5%b "

# Misc
display_bitrate = "yes"
# enable_window_title = "no"
follow_now_playing_lyrics = "yes"
ignore_leading_the = "yes"
empty_tag_marker = ""
default_place_to_search_in = "database"
autocenter_mode = "yes"
ignore_diacritics = "yes"
allow_for_physical_item_deletion = "yes"

启动 mpd

启动 mpd 后台进程, 执行以下命令

mpd

关闭 mpd 后台进程, 执行以下命令

mpd --kill

更新 mpd , 执行以下命令

mpd update

在终端打开 ncmpcpp 客户端, 执行以下命令

ncmpcpp

ncmpcpp 快捷键

  Keys - Movement

    Up k                 : Move cursor up
    Down j               : Move cursor down
    [                    : Move cursor up one album
    ]                    : Move cursor down one album
    {                    : Move cursor up one artist
    }                    : Move cursor down one artist
    PageUp               : Page up
    PageDown             : Page down
    Home                 : Home
    End                  : End

    Tab                  : Switch to next screen in sequence
    Shift-Tab            : Switch to previous screen in sequence
    F1                   : Show help
    1                    : Show playlist
    2                    : Show browser
    3                    : Show search engine
    4                    : Show media library
    5                    : Show playlist editor
    6                    : Show tag editor
    7                    : Show outputs
    8                    : Show music visualizer
    =                    : Show clock

    @                    : Show server info

  Keys - Global

    Backspace            : Play
    s                    : Stop
    p                    : Pause
    >                    : Next track
    <                    : Previous track
    Ctrl-H Backspace     : Replay current song
    f                    : Seek forward in playing song
    b                    : Seek backward in playing song
    Left -               : Decrease volume by 2%
    Right +              : Increase volume by 2%

    T                    : Toggle add mode (add or remove/always add)
    |                    : Toggle mouse support
    Ctrl-V               : Select range
    v                    : Reverse selection
    V                    : Remove selection
    Insert               : Select current item
    Ctrl-_               : Select found items
    B                    : Select songs of album around the cursor
    a                    : Add selected items to playlist
    `                    : Add random items to playlist

    r                    : Toggle repeat mode
    z                    : Toggle random mode
    y                    : Toggle single mode
    R                    : Toggle consume mode
    Y                    : Toggle replay gain mode
    #                    : Toggle bitrate visibility
    x                    : Toggle crossfade mode
    X                    : Set crossfade
                         : Set volume
    u                    : Start music database update

    :                    : Execute command
    Ctrl-F               : Apply filter
    /                    : Find item forward
    ?                    : Find item backward
    ,                    : Jump to previous found item
    .                    : Jump to next found item
    w                    : Toggle find mode (normal/wrapped)
    G                    : Locate song in browser
    ~                    : Locate song in media library
    Ctrl-L               : Lock/unlock current screen
    Left                 : Switch to master screen (left one)
    Right                : Switch to slave screen (right one)
    E                    : Locate song in tag editor
    P                    : Toggle display mode
    \                    : Toggle user interface
    !                    : Toggle displaying separators between albums
    g                    : Jump to given position in playing song (formats: mm:ss, x%)
    i                    : Show song info
    I                    : Show artist info
    F                    : Fetch lyrics for selected songs
    L                    : Toggle lyrics fetcher
    Alt-l                : Toggle fetching lyrics for playing songs in background
                         : Show/hide song lyrics

    q EoF                : Quit

  Keys - Playlist

    Enter                : Play selected item
    Delete               : Delete selected item(s) from playlist
    c                    : Clear playlist
    C                    : Clear playlist except selected item(s)
    Ctrl-P               : Set priority of selected items
    m                    : Move selected item(s) up
    n                    : Move selected item(s) down
    M                    : Move selected item(s) to cursor position
    A                    : Add item to playlist
                         : Load stored playlist
    e                    : Edit song
    S                    : Save playlist
    Z                    : Shuffle range
    Ctrl-S               : Sort range
    Ctrl-R               : Reverse range
    o                    : Jump to current song
    U                    : Toggle playing song centering

  Keys - Browser

    Enter                : Enter directory
    Enter                : Add item to playlist and play it
    Space                : Add item to playlist
    e                    : Edit song
    e                    : Edit directory name
    e                    : Edit playlist name
    2                    : Browse MPD database/local filesystem
    Ctrl-S               : Toggle sort mode
    o                    : Locate current song
    Ctrl-H Backspace     : Jump to parent directory
    Delete               : Delete selected items from disk
    G                    : Jump to playlist editor (playlists only)

  Keys - Search engine

    Enter                : Modify option / Run action
    Space                : Add item to playlist
    Enter                : Add item to playlist and play it
    e                    : Edit song
    y                    : Start searching
    3                    : Reset search constraints and clear results

  Keys - Media library

    4                    : Switch between two/three columns mode
    Left h               : Previous column
    Right l              : Next column
    Enter                : Add item to playlist and play it
    Space                : Add item to playlist
    o                    : Locate current song
    e                    : Edit song
    e                    : Edit tag (left column)/album (middle/right column)
    `                    : Toggle type of tag used in left column
    Ctrl-S               : Toggle sort mode

  Keys - Playlist editor

    Left h               : Previous column
    Right l              : Next column
    Enter                : Add item to playlist and play it
    Space                : Add item to playlist
    o                    : Locate current song
    e                    : Edit song
    e                    : Edit playlist name
    m                    : Move selected item(s) up
    n                    : Move selected item(s) down
    Delete               : Delete selected playlists (left column)
    Delete               : Delete selected item(s) from playlist (right column)
    c                    : Clear playlist
    C                    : Clear playlist except selected items

  Keys - Lyrics

    Space                : Toggle lyrics update on song change
    e                    : Open lyrics in external editor
    `                    : Refetch lyrics

  Keys - Tiny tag editor

    Enter                : Edit tag / Run action
    y                    : Save

  Keys - Tag editor

    Enter                : Enter directory (right column)
    Enter                : Perform operation on selected items (middle column)
    Enter                : Edit item (left column)
    Left h               : Previous column
    Right l              : Next column
    Ctrl-H Backspace     : Jump to parent directory (left column, directories view)

  Keys - Outputs

    Enter                : Toggle output

集成 tmux

如果使用 tmux 需要在状态栏显示当前播放歌曲, 可以创建 ~/.tmux/tmux-scripts/np_mpd.sh 脚本文件, 并在 tmux.conf 中配置状态栏. np_mpd.sh 文件如下:

#!/usr/bin/env bash
# Print a simple line of NP in mpd.

# Rolling anything what you want.
# arg1: text to roll.
# arg2: max length to display.
# arg3: roll speed in characters per second.
roll_stuff() {
    local stuff="$1"    # Text to print
    if [ -z "$stuff" ]; then
        return;
    fi
    local max_len="10"    # Default max length.
    if [ -n "$2" ]; then
        max_len="$2"
    fi
    local speed="1"    # Default roll speed in chars per second.
    if [ -n "$3" ]; then
        speed="$3"
    fi
    # Anything starting with 0 is an Octal number in Shell,C or Perl,
    # so we must explicityly state the base of a number using base#number
    local offset=$((10#$(date +%s) * ${speed} % ${#stuff}))
    # Truncate stuff.
    stuff=${stuff:offset}
    local char    # Character.
    local bytes # The bytes of one character.
    local index
    for ((index=0; index < max_len; index++)); do
          char=${stuff:index:1}
          bytes=$(echo -n $char | wc -c)
          # The character will takes twice space
          # of an alphabet if (bytes > 1).
          if ((bytes > 1)); then
            max_len=$((max_len - 1))
          fi
    done
    stuff=${stuff:0:max_len}
    #echo "index=${index} max=${max_len} len=${#stuff}"
    # How many spaces we need to fill to keep
    # the length of stuff that will be shown?
    local fill_count=$((${index} - ${#stuff}))
    for ((index=0; index < fill_count; index++)); do
          stuff="${stuff} "
    done
    echo "${stuff}"
}

trim_method="roll"     # Can be {trim or roll).
max_len=40        # Trim output to this length.
roll_speed=2        # Roll speed in chraacters per second.

np=$(ncmpcpp --current-song="{{{%a - }%t}}|{%f}")

if [ -n "$np" ]; then
    case "$trim_method" in
        "roll")
            np=$(roll_stuff "${np}" ${max_len} ${roll_speed})
            ;;
        "trim")
            np=$(echo "${np}" | cut -c1-"$max_len")
            ;;
    esac
    echo "♫ ${np}"
fi
exit 0

打开 ~/.tmux.conf 文件, 修改状态栏配置如下:


set -g status-right '#{prefix_highlight} | %a %Y-%m-%d %H:%M | Mail: #(sh ~/.tmux/tmux-scripts/tmuxmail) | #(sh ~/.tmux/tmux-scripts/np_mpd.sh)'

主要参考最后一段参数配置, 最终效果显示如下图:

image.png

其它问题

如果 ncmpcpp 配置无误,但就是没有音乐,进入ncmpcpp,按下2或4,选择文件(文件夹),按下a,添加到playlist即可

从事音视频即时通信领域开发, 喜欢瞎折腾.

4 声望
0 粉丝
0 条评论
推荐阅读
osx使用alfred集成有道查词
使用 mac 的同学应该经常会使用 alfred 这个软件, 主要能随时能够通过一个快键键打开查询窗口, 方便的搜索或打开软件, 文件等等, 同时也可以集成脚本方便实现其它的功能.

alps2006阅读 428

封面图
黑苹果macOS Catalina 10.15.7升级为Big Sur(i5 3470+XSB75M-PK+HD 7750)
HD 7700HD 7730HD 7750HD 7770HD 7790HD 7850HD 7870HD 7950HD 7970HD 7990

TANKING1阅读 974

封面图
Mac-安装前端开发环境
引言最近新买了台macbook pro电脑,于是马上搭建起自己的前端开发环境,写这篇文章的目的是记录过程分享给大家。操作1、安装nodejs到官网上面下载安装即可查看node和npm版本 {代码...} 2、配置阿里镜像安装好之后...

Awbeci阅读 1.2k

查看当前 linux 主机支持什么类型的硬件解码
Ubuntu + M60 GPU 上 {代码...} macbook 上输入 ffmpeg -hwaccels 命令就行 {代码...} macbook Apple Silicon 输出的就是 videotoolbox

ponponon阅读 800

Wails在MacOS下无法使用cookies的BUG解决方案
Wails 是一个可以让您使用 Go 和 Web 技术编写桌面应用的项目。最近在 MacOS 下开发 AsBot客户端 时,开发模式一切正常,但编译打包后发现 cookies 无法使用。

xiaoz阅读 734

mac 上的 python 查找 dylib 的顺序是什么?
首先搜索 Python 内部 dylib,例如 libpython3.9.dylib,这些 dylib 存放在 Python 安装路径下的 Frameworks 目录中。

ponponon阅读 535

低配置电脑安装黑苹果系统(macOS High Sierra 10.13.6)EFI和工具包
这个系统版本是比较低了,但是平时基础的上网、看剧、办公完全没问题的。如果想要更高版本的系统,需要免驱显卡,例如 RX580、HD7770、HD7750 等显卡,可以安装 macOS Monterey、macOS Big Sur 等版本的系统。

TANKING阅读 502

封面图

从事音视频即时通信领域开发, 喜欢瞎折腾.

4 声望
0 粉丝
宣传栏