首页 > 代码库 > Linux命令行音乐播放器moc

Linux命令行音乐播放器moc

moc(Music On Console,播放器程序是mocp,在Arch Linux的Commity中有个tray版本的moc,启动时会在面板上显示一个图标,能直接启动mocp服务和播放器。甚至还能让osdlyrics加载桌面歌词,不过这很卡.)适用于命令行,在黑乎乎的Linux核心控制台(字符界面)上也能成功启动和播放,但Linux核心控制台默认是没有中文支持的,可以试试能显示中文的fbterm(直接从核心控制台启动,不需要运行X服务)如果需要的话。即便如此,正常使用仍然需要一番手动配置才行,如果全是英文歌曲的话例外。

基本上很多的Linux发行的官方源中已经包含了这个软件包,直接使用软件包管理工具安装。Arch Linux的是pacman。

注:启动mocp之前,如果需要启用更多的音频格式支持,有必要从源上安装解码器

1.mocp配置

在配置mocp之前,可以先从moc的man手册页或者info页获取更多的信息(比如配置文件是什么,应该放到什么位置,格式应该是什么样的......)

$ mocp --help

$ man mocp

$ info mocp

注:

moc的aur版本允许mocp加载歌词(但仅限某些utf-8编码的ascii文本(纯英文)),这个版本会和系统中已经安装的冲突.

虽然osdlyrics理论上也支持moc,然而仅仅只是安装moc然后打开mocp再打开osdlyrics并不会加载音频文件的lyrics的(尽管这也不会导致osdlyrics退出)

要让osdlyrics真正支持moc,还要安装moc-tray这个任务栏小程序并在启动osdlyrics之前启动mocp和moc-tray.

moc-tray可以直接启动mocp并且支持停止/播放/暂停/退出,下一首/上一首等动作,不过某些动作需要在mocp中配置播放列表才能得到正确响应。

   

aur上的moc构建和安装:

下载PKGBUILD等makepkg需要的脚本.

$ git clone https://aur.archlinux.org/moc-lyrics-git.git

$ pushd mocp-lyrics-git

$ makepkg -sr

编译成功之后会产生一个.pkg.tar.xz包,然后使用pacman -U安装

$ mv moc-lyrics-git-1\:0.2213.c51e02e-1-x86_64.pkg.tar.xz moc-lyrics-git-x86_64.pkg.tar.xz

# pacman -U moc-lyrics-git-x86_64.pkg.tar.xz

   

拷贝mocp示例配置文件到~/.moc(没有就创建),参数配置可以从示例文件config.example(可以运行locate config.example)中找到

mocp的示例配置文件尽管使用了英文,但解释的很详细.

$ mkdir ~/.moc

$ cp `locate config.example` ~/.moc/config

   

下面这是从实例配置文件拷过来的,以#号开始的都是注释(尽管注释看起来显得晦涩难懂,但作者解释的很清楚)。

~/.moc/config

技术分享
   1 # This is a configuration file for the MOC player. It should be named
   2 
   3 # config and placed in the ~/.moc directory. As this file can specify
   4 
   5 # commands which invoke other applications, MOC will refuse to start if it
   6 
   7 # is not owned by either root or the current user, or if it is writable by
   8 
   9 # anyone other than its owner. All options are given with their default
  10 
  11 # values, and therefore commented.
  12 
  13    
  14 
  15 # Comments begin with #.
  16 
  17 # You can use quotes and escape (\‘) in parameters.
  18 
  19 #
  20 
  21 # You can have variable values substituted by enclosing the variable name
  22 
  23 # as "${...}". (This only applies to the portion of the option following
  24 
  25 # the =.) Variables are substituted first from the environment then,
  26 
  27 # if not found, from the configuration options. (Note that the value of
  28 
  29 # a configuration option substituted is that which it has at the time the
  30 
  31 # substitution variable is encountered.) If there is a naming conflict
  32 
  33 # between an environment and configuration variable, you may be able to
  34 
  35 # resolve it by using lowercase as the environment variable matches are
  36 
  37 # case-sensitive whereas the configuration variables are not.
  38 
  39 #
  40 
  41 # You can also use the form "${...:-...}" where the value in the second
  42 
  43 # position will be substituted if the variable name given in the first
  44 
  45 # position is unset or null.
  46 
  47 #
  48 
  49 # So, for example:
  50 
  51 #
  52 
  53 # MusicDir = /music/${USER:-public}
  54 
  55 # Fastdir1 = ${MusicDir}/mp3/rock
  56 
  57 # Fastdir2 = ${MusicDir}/mp3/electronic
  58 
  59 # Fastdir3 = ${MusicDir}/mp3/rap
  60 
  61 # Fastdir4 = ${MusicDir}/mp3/etc
  62 
  63 #
  64 
  65 # Variable names are limited to those accepted by the BASH shell; that
  66 
  67 # is, those comprising the upper- and lowercase ASCII characters, digits
  68 
  69 # and the underscore.
  70 
  71 #
  72 
  73 # If you need to use the "${" sequence for any other purpose, write "$${"
  74 
  75 # and it will be replaced by "${" and not treated as a substitution.
  76 
  77 #
  78 
  79 # Some options take lists of strings as their values. The strings are
  80 
  81 # separated by colons. Additional strings can be appended to the list
  82 
  83 # using "+=" in place of a plain "=" to assign the value. For an example,
  84 
  85 # see the XTerms option.
  86 
  87 #
  88 
  89 # You can override any configuration option when you run MOC using the
  90 
  91 # -O command line option:
  92 
  93 #
  94 
  95 # mocp -O AutoNext=no -O messagelingertime=1 -O XTerms+=xxt:xwt
  96 
  97 #
  98 
  99 # This command line option can be repeated as many times as needed and
 100 
 101 # the configuration option name is not case sensitive. (Note that MOC
 102 
 103 # does not perform variable substitution on the value of such overridden
 104 
 105 # configuration options.) Most option values are set before the
 106 
 107 # configuration file is processed (which allows the new values to be
 108 
 109 # picked up by substitutions), however list-valued options are overridden
 110 
 111 # afterwards (which gives the choice of whether the configured values are
 112 
 113 # replaced or added to).
 114 
 115    
 116 
 117 # Remember that the client and server are separate processes and the
 118 
 119 # server will retain the configuration values formed from the environment
 120 
 121 # within which it was originally started.
 122 
 123    
 124 
 125 # Show file titles (title, author, album) instead of file names?
 126 
 127 # 音频播放器会从音频文件中读取并在播放列表中显示音频文件媒体库元信息(包括标题,歌手,专辑等信息),Windows中的音频文件元信息(ID标签)默认和Linux使用了不同的字符集编码,因此从windows下载的音频文件可能在播放列表中很多元信息显示为乱码。不读取这些元信息只能避免在moc不显示为乱码,但并不能从根本上解决音频文件元信息显示为乱码的问题! 如果确实需要元信息正常显示,可以移步Arch wiki
 128 
 129 ReadTags = no
 130 
 131 # In which directory do you store your music files? If you specify it
 132 
 133 # you will be able to jump straight to this directory with the -m
 134 
 135 # parameter or the m command. This can also point to a playlist.
 136 
 137 #
 138 
 139 # Example: MusicDir = "/home/joe/music"
 140 
 141 #
 142 
 143 #MusicDir =
 144 
 145 MusicDir = /media/Others/Audio-Frequency
 146 
 147 # Start in the music directory by default? If set to no, start
 148 
 149 # in the current directory by default. A single directory on
 150 
 151 # the command line takes precedence.
 152 
 153 StartInMusicDir = yes
 154 
 155    
 156 
 157 # The number of lines which are retained in an in-memory circular logging
 158 
 159 # buffer. A value of zero indicates that lines will be written directly
 160 
 161 # to the log file, otherwise the latest CircularLogSize lines are retained
 162 
 163 # in memory and not written to the log file until the MOC client or server
 164 
 165 # are shutdown. If the client or server terminates abnormally then the
 166 
 167 # log lines are lost.
 168 
 169 #
 170 
 171 # This option is intended to help identify problems which occur infrequently
 172 
 173 # and for which the amount of disk space consumed by logging would otherwise
 174 
 175 # be a limiting factor. Obviously the memory footprint will increase in
 176 
 177 # proportion to the value of this option.
 178 
 179 #CircularLogSize = 0
 180 
 181    
 182 
 183 # How to sort? FileName is the options only value for now.
 184 
 185 #Sort = FileName
 186 
 187    
 188 
 189 # Show errors in the streams (for example, broken frames in MP3 files)?
 190 
 191 #ShowStreamErrors = no
 192 
 193    
 194 
 195 # Ignore CRC errors in MP3 files? Most players do that, so the default
 196 
 197 # value is yes.
 198 
 199 MP3IgnoreCRCErrors = yes
 200 
 201    
 202 
 203 # Set playback toggles.
 204 
 205 # 设置播放标志
 206 
 207 Repeat = yes #是否循环播放
 208 
 209 Shuffle = yes #是否开启随机播放
 210 
 211 AutoNext = yes #是否自动播放下一首
 212 
 213    
 214 
 215 # Default FormatString:
 216 
 217 #
 218 
 219 # %n - Track number
 220 
 221 # %a - Artist
 222 
 223 # %A - Album
 224 
 225 # %t - Title
 226 
 227 # %(X:TRUE:FALSE) - Ternary expression: if X exists, do TRUE,
 228 
 229 # otherwise FALSE. The escape character must
 230 
 231 # be doubled (i.e., \\). (See zshmisc
 232 
 233 # documentation for more information.)
 234 
 235 #
 236 
 237 #FormatString = "%(n:%n :) %f"
 238 
 239    
 240 
 241 # Input and output buffer sizes (in kilobytes).
 242 
 243 #InputBuffer = 512 # Minimum value is 32KB
 244 
 245 #OutputBuffer = 512 # Minimum value is 128KB
 246 
 247    
 248 
 249 # How much to fill the input buffer before playing (in kilobytes)?
 250 
 251 # This cant be greater than the value of InputBuffer. While this has
 252 
 253 # a positive effect for network streams, it also causes the broadcast
 254 
 255 # audio to be delayed.
 256 
 257 #Prebuffering = 64
 258 
 259    
 260 
 261 # Use this HTTP proxy server for internet streams. If not set, the
 262 
 263 # environment variables http_proxy and ALL_PROXY will be used if present.
 264 
 265 #
 266 
 267 # Format: HTTPProxy = PROXY_NAME:PORT
 268 
 269 #
 270 
 271 #HTTPProxy =
 272 
 273    
 274 
 275 # Sound driver - OSS, ALSA, JACK, SNDIO (on OpenBSD) or null (only for
 276 
 277 # debugging). You can enter more than one driver as a colon-separated
 278 
 279 # list. The first working driver will be used.
 280 
 281 #SoundDriver = JACK:ALSA:OSS
 282 
 283 SoundDriver = ALSA:OSS:JACK
 284 
 285    
 286 
 287 # Jack output settings.
 288 
 289 #JackClientName = "moc"
 290 
 291 #JackStartServer = no
 292 
 293 #JackOutLeft = "system:playback_1"
 294 
 295 #JackOutRight = "system:playback_2"
 296 
 297    
 298 
 299 # OSS output settings.
 300 
 301 #OSSDevice = /dev/dsp
 302 
 303 #OSSMixerDevice = /dev/mixer
 304 
 305 #OSSMixerChannel1 = pcm # pcm, master or speaker
 306 
 307 #OSSMixerChannel2 = master # pcm, master or speaker
 308 
 309    
 310 
 311 # ALSA output settings. If you need to dump the audio produced by MOC
 312 
 313 # to a file for diagnostic purposes, the following setting of ALSADevice
 314 
 315 # should do that:
 316 
 317 #
 318 
 319 # ALSADevice=tee:hw,/tmp/out.wav,wav
 320 
 321 #
 322 
 323 #ALSADevice = default
 324 
 325 #ALSAMixer1 = PCM
 326 
 327 ALSAMixer2 = Master
 328 
 329    
 330 
 331 # Save software mixer state?
 332 
 333 # If enabled, a file softmixer will be created in ~/.moc/ storing the
 334 
 335 # mixersetting set when the server is shut down.
 336 
 337 # Note that there is a "hidden" Amplification setting in that file.
 338 
 339 # Amplification (0-200) is used to scale the mixer setting (0-100). This
 340 
 341 # results in a higher signal amplitude but may also produce clipping.
 342 
 343 Softmixer_SaveState = yes
 344 
 345    
 346 
 347 # Save equalizer state?
 348 
 349 # If enabled, a file equalizer will be created in ~/.moc/ storing the
 350 
 351 # equalizer settings when the server is shut down.
 352 
 353 # Note that there is a "hidden" Mixin setting in that file.
 354 
 355 # Mixin (0.0-1.0) is used to determine how much of the original signal is
 356 
 357 # used after equalizing. 0 means to only use the equalized sound, while 1
 358 
 359 # effectively disabled the mixer. The default is 0.25.
 360 
 361 #Equalizer_SaveState = yes
 362 
 363    
 364 
 365 # Show files with dot at the beginning?
 366 
 367 ShowHiddenFiles = yes
 368 
 369    
 370 
 371 # Hide file name extensions?
 372 
 373 HideFileExtension = yes
 374 
 375    
 376 
 377 # Show file format in menu?
 378 
 379 ShowFormat = no
 380 
 381    
 382 
 383 # Show file time in menu? Possible values: yes, no and IfAvailable
 384 
 385 # (meaning show the time only when it is already known, which often works
 386 
 387 # faster).
 388 
 389 #ShowTime = IfAvailable
 390 
 391 ShowTime = yes
 392 
 393    
 394 
 395 # Show time played as a percentage in the time progress bar.
 396 
 397 ShowTimePercent = yes
 398 
 399    
 400 
 401 # Values of the TERM environment variable which are deemed to be managed by
 402 
 403 # screen(1). If you are setting a specific terminal using screen(1)s
 404 
 405 # -T <term> option, then you will need to add screen.<term> to this list.
 406 
 407 # Note that this is only a partial test; the value of the WINDOW environment
 408 
 409 # variable must also be a number (which screen(1) sets).
 410 
 411 #ScreenTerms = screen:screen-w:vt100
 412 
 413    
 414 
 415 # Values of the TERM environment variable which are deemed to be xterms. If
 416 
 417 # you are using MOC within screen(1) under an xterm, then add screen(1)s
 418 
 419 # TERM setting here as well to cause MOC to update the xterms title.
 420 
 421 #XTerms = xterm
 422 
 423 #XTerms += xterm-colour:xterm-color
 424 
 425 #XTerms += xterm-256colour:xterm-256color
 426 
 427 #XTerms += rxvt:rxvt-unicode
 428 
 429 #XTerms += rxvt-unicode-256colour:rxvt-unicode-256color
 430 
 431 #XTerms += eterm
 432 
 433    
 434 
 435 # Theme file to use. This can be absolute path or relative to
 436 
 437 # /usr/share/moc/themes/ (depends on installation prefix) or
 438 
 439 # ~/.moc/themes/ .
 440 
 441 #
 442 
 443 # Example: Theme = laras_theme
 444 
 445 #
 446 
 447 Theme = user_moca_theme
 448 
 449    
 450 
 451 # The theme used when running on an xterm.
 452 
 453 #
 454 
 455 # Example: XTermTheme = transparent-background
 456 
 457 #
 458 
 459 #XTermTheme =
 460 
 461    
 462 
 463 # Should MOC try to autoload the default lyrics file for an audio? (The
 464 
 465 # default lyrics file is a text file with the same file name as the audio
 466 
 467 # file name with any trailing "extension" removed.)
 468 
 469 AutoLoadLyrics = yes
 470 
 471    
 472 
 473 # Should MOC try to autoload the lyrics for an audio from the internet?
 474 
 475 # Specify an URL where to fetch lyrics from. %a marks the artist, %t the
 476 
 477 # title of the song.
 478 
 479 #LyricsUrl = "http://lyrics.wikia.com/wiki/%a:%t?action=raw"
 480 
 481    
 482 
 483 # If the LyricsUrl above does not return raw lyrics, you can specifiy a
 484 
 485 # regular expression to match the lyrics part within.
 486 
 487 #LyricsRegex = "<lyrics>\n(.*)</lyrics>"
 488 
 489    
 490 
 491 # Timeout in seconds for requesting lyrics. If you set this too high, the
 492 
 493 # interface can become unresponive. Set to 0 to disable.
 494 
 495 LyricsTimeout = 2
 496 
 497    
 498 
 499 # If lyrics are fetched from the internet, should they be stored to disk?
 500 
 501 # The lyrics are stored with the same filename as the audio file without the
 502 
 503 # extension.
 504 
 505 StoreLyrics = yes
 506 
 507    
 508 
 509 # MOC directory (where pid file, socket and state files are stored).
 510 
 511 # You can use ~ at the beginning.
 512 
 513 #MOCDir = ~/.moc
 514 
 515    
 516 
 517 # Use mmap() to read files. mmap() is much slower on NFS.
 518 
 519 #UseMMap = no
 520 
 521    
 522 
 523 # Use MIME to identify audio files. This can make for slower loading
 524 
 525 # of playlists but is more accurate than using "extensions".
 526 
 527 #UseMimeMagic = no
 528 
 529    
 530 
 531 # Assume this encoding for ID3 version 1/1.1 tags (MP3 files). Unlike
 532 
 533 # ID3v2, UTF-8 is not used here and MOC cant guess how tags are encoded.
 534 
 535 # Another solution is using librcc (see the next option). This option is
 536 
 537 # ignored if UseRCC is set to yes.
 538 
 539 ID3v1TagsEncoding = WINDOWS-1250
 540 
 541    
 542 
 543 # Use librcc to fix ID3 version 1/1.1 tags encoding.
 544 
 545 UseRCC = yes
 546 
 547    
 548 
 549 # Use librcc to filenames and directory names encoding.
 550 
 551 #UseRCCForFilesystem = yes
 552 
 553    
 554 
 555 # When this option is set the player assumes that if the encoding of
 556 
 557 # ID3v2 is set to ISO-8859-1 then the ID3v1TagsEncoding is actually
 558 
 559 # that and applies appropriate conversion.
 560 
 561 #EnforceTagsEncoding = no
 562 
 563    
 564 
 565 # Enable the conversion of filenames from the local encoding to UTF-8.
 566 
 567 FileNamesIconv = yes
 568 
 569    
 570 
 571 # Enable the conversion of the xterm title from UTF-8 to the local encoding.
 572 
 573 NonUTFXterm = yes
 574 
 575    
 576 
 577 # Remember the playlist after exit?
 578 
 579 SavePlaylist = yes
 580 
 581    
 582 
 583 # When using more than one client (interface) at a time, do they share
 584 
 585 # the playlist?
 586 
 587 SyncPlaylist = yes
 588 
 589    
 590 
 591 # moc键盘映射配置
 592 
 593 # Choose a keymap file (relative to ~/.moc/ or using an absolute path).
 594 
 595 # An annotated example keymap file is included (keymap.example).
 596 
 597 ## 一个示例文件keymap.example在 $prefix/share/moc下
 598 
 599 #
 600 
 601 # Example: Keymap = my_keymap
 602 
 603 #
 604 
 605 Keymap = keymap
 606 
 607    
 608 
 609 # Use ASCII rather than graphic characters for drawing lines. This
 610 
 611 # helps on some terminals.
 612 
 613 #ASCIILines = no
 614 
 615    
 616 
 617 # FastDirs, these allow you to jump directly to a directory, the key
 618 
 619 # bindings are in the keymap file.
 620 
 621 #
 622 
 623 # Examples: Fastdir1 = /mp3/rock
 624 
 625 # Fastdir2 = /mp3/electronic
 626 
 627 # Fastdir3 = /mp3/rap
 628 
 629 # Fastdir4 = /mp3/etc
 630 
 631    
 632 
 633 # PreferredDecoders allows you to specify which decoder should be used
 634 
 635 # for any given audio format. It is a colon-separated list in which
 636 
 637 # each entry is of the general form code(decoders), where code
 638 
 639 # identifies the audio format and decoders is a comma-separated list
 640 
 641 # of decoders in order of preference.
 642 
 643 #
 644 
 645 # The audio format identifier may be either a filename extension or a
 646 
 647 # MIME media type. If the latter, the format is type/subtype (e.g.,
 648 
 649 # audio/flac). Because different systems may give different MIME
 650 
 651 # media types, any x- prefix of the subtype is ignored both here and
 652 
 653 # in the actual file MIME type (so all combinations of audio/flac and
 654 
 655 # audio/x-flac match each other).
 656 
 657 #
 658 
 659 # For Internet streams the matching is done on MIME media type and on
 660 
 661 # actual content. For files the matches are made on MIME media type
 662 
 663 # (if the UseMimeMagic option is set) and on filename extension. The
 664 
 665 # MIME media type of a file is not determined until the first entry for
 666 
 667 # MIME is encountered in the list.
 668 
 669 #
 670 
 671 # The matching is done in the order of appearance in the list with any
 672 
 673 # entries added from the command line being matched before those listed
 674 
 675 # here. Therefore, if you place all filename extension entries before
 676 
 677 # all MIME entries you will speed up MOCs processing of directories
 678 
 679 # (which could be significant for remote file systems).
 680 
 681 #
 682 
 683 # The decoder list may be empty, in which case no decoders will be used
 684 
 685 # for files (and files with that audio format ignored) while Internet
 686 
 687 # streams will be assessed on the actual content. Any decoder position
 688 
 689 # may contain an asterisk, in which case any decoder not otherwise listed
 690 
 691 # which can handle the audio format will be used. It is not an error to
 692 
 693 # list the same decoder twice, but neither does it make sense to do so.
 694 
 695 #
 696 
 697 # If you have a mix of audio and non-audio files in your directories, you
 698 
 699 # may wish to include entries at top of the list which ignore non-audio
 700 
 701 # files by extension.
 702 
 703 #
 704 
 705 # In summary, the PreferredDecoders option provides fine control over the
 706 
 707 # type of matching which is performed (filename extension, MIME media
 708 
 709 # type and streamed media content) and which decoder(s) (if any) are used
 710 
 711 # based on the options list entries and their ordering.
 712 
 713 #
 714 
 715 # Examples: aac(aac,ffmpeg) first try FAAD2 for AACs then FFmpeg
 716 
 717 # mp3() ignore MP3 files
 718 
 719 # wav(*,sndfile) use sndfile for WAV as a last resort
 720 
 721 # ogg(vorbis,*):flac(flac,*) try Xiph decoders first
 722 
 723 # ogg():audio/ogg() ignore OGG files, and
 724 
 725 # force Internet selection by content
 726 
 727 # gz():html() ignore some non-audio files
 728 
 729 #
 730 
 731 # Any unspecified audio formats default to trying all decoders.
 732 
 733 # Any unknown (or misspelt) drivers are ignored.
 734 
 735 # All names are case insensitive.
 736 
 737 # The default setting reflects the historical situation modified by
 738 
 739 # the experience of users.
 740 
 741 #
 742 
 743 #PreferredDecoders = aac(aac,ffmpeg):m4a(ffmpeg)
 744 
 745 #PreferredDecoders += mpc(musepack,*,ffmpeg):mpc8(musepack,*,ffmpeg)
 746 
 747 #PreferredDecoders += sid(sidplay2):mus(sidplay2)
 748 
 749 #PreferredDecoders += wav(sndfile,*,ffmpeg)
 750 
 751 #PreferredDecoders += wv(wavpack,*,ffmpeg)
 752 
 753 #PreferredDecoders += audio/aac(aac):audio/aacp(aac):audio/m4a(ffmpeg)
 754 
 755 #PreferredDecoders += audio/wav(sndfile,*)
 756 
 757    
 758 
 759 # The following PreferredDecoders attempt to handle the ambiguity surrounding
 760 
 761 # container types such as OGG for files. The first two entries will force
 762 
 763 # a local file to the correct decoder (assuming the .ogg file contains Vorbis
 764 
 765 # audio), while the MIME media types will cause Internet audio streams to
 766 
 767 # be assessed on content (which may be either Vorbis or Speex).
 768 
 769 #
 770 
 771 #PreferredDecoders += ogg(vorbis,ffmpeg):oga(vorbis,ffmpeg):ogv(ffmpeg)
 772 
 773 #PreferredDecoders += opus(ffmpeg)
 774 
 775 #PreferredDecoders += spx(speex)
 776 
 777 #PreferredDecoders += application/ogg(vorbis):audio/ogg(vorbis)
 778 
 779    
 780 
 781 # Which resampling method to use. There are a few methods of resampling
 782 
 783 # sound supported by libresamplerate. The default is Linear) which is
 784 
 785 # also the fastest. A better description can be found at:
 786 
 787 #
 788 
 789 # http://www.mega-nerd.com/libsamplerate/api_misc.html#Converters
 790 
 791 #
 792 
 793 # but briefly, the following methods are based on bandlimited interpolation
 794 
 795 # and are higher quality, but also slower:
 796 
 797 #
 798 
 799 # SincBestQuality - really slow (I know you probably have an xx GHz
 800 
 801 # processor, but its still not enough to not see
 802 
 803 # this in the top output :) The worst case
 804 
 805 # Signal-to-Noise Ratio is 97dB.
 806 
 807 # SincMediumQuality - much faster.
 808 
 809 # SincFastest - the fastest bandlimited interpolation.
 810 
 811 #
 812 
 813 # And these are lower quality, but much faster methods:
 814 
 815 #
 816 
 817 # ZeroOrderHold - really poor quality, but its really fast.
 818 
 819 # Linear - a bit better and a bit slower.
 820 
 821 #
 822 
 823 #ResampleMethod = Linear
 824 
 825    
 826 
 827 # Always use this sample rate (in Hz) when opening the audio device (and
 828 
 829 # resample the sound if necessary). When set to 0 the device is opened
 830 
 831 # with the files rate.
 832 
 833 #ForceSampleRate = 0
 834 
 835    
 836 
 837 # By default, even if the sound card reports that it can output 24bit samples
 838 
 839 # MOC converts 24bit PCM to 16bit. Setting this option to yes allows MOC
 840 
 841 # to use 24bit output. (The MP3 decoder, for example, uses this format.)
 842 
 843 # This is disabled by default because there were reports that it prevents
 844 
 845 # MP3 files from playing on some soundcards.
 846 
 847 Allow24bitOutput = no
 848 
 849    
 850 
 851 # Use realtime priority for output buffer thread. This will prevent gaps
 852 
 853 # while playing even with heavy load. The user who runs MOC must have
 854 
 855 # permissions to set such a priority. This could be dangerous, because it
 856 
 857 # is possible that a bug in MOC will freeze your computer.
 858 
 859 #UseRealtimePriority = no
 860 
 861    
 862 
 863 # The number of audio files for which MOC will cache tags. When this limit
 864 
 865 # is reached, file tags are discarded on a least recently used basis (with
 866 
 867 # one second resolution). You can disable the cache by giving it a size of
 868 
 869 # zero. Note that if you decrease the cache size below the number of items
 870 
 871 # currently in the cache, the number will not decrease immediately (if at
 872 
 873 # all).
 874 
 875 #TagsCacheSize = 256
 876 
 877    
 878 
 879 # Number items in the playlist.
 880 
 881 # 显示播放列表文件编号
 882 
 883 PlaylistNumbering = yes
 884 
 885    
 886 
 887    
 888 
 889 # mocp播放界面布局配置
 890 
 891 # Main window layouts can be configured. You can change the position and
 892 
 893 # size of the menus (directory and playlist). You have three layouts and
 894 
 895 # can switch between then using the l key (standard mapping). By default,
 896 
 897 # only two layouts are configured.
 898 
 899 #
 900 
 901 # The format is as follows:
 902 
 903 #
 904 
 905 # - Each layout is described as a list of menu entries.
 906 
 907 # - Each menu entry is of the form:
 908 
 909 #
 910 
 911 # menu(position_x, position_y, width, height)
 912 
 913 #
 914 
 915 # where menu is either directory or playlist.
 916 
 917 # - The parameters define position and size of the menu. They can
 918 
 919 # be absolute numbers (like 10) or a percentage of the screen size
 920 
 921 # (like 45%).
 922 
 923 # - width and height can have also value of FILL which means
 924 
 925 # fill the screen from the menus position to the border.
 926 
 927 # - Menus may overlap.
 928 
 929 #
 930 
 931 # You must describe at least one menu (default is to fill the whole window).
 932 
 933 # There must be at least one layout (Layout1) defined; others can be empty.
 934 
 935 #
 936 
 937 # Example: Layout1 = playlist(50%,50%,50%,50%)
 938 
 939 # Layout2 = ""
 940 
 941 # Layout3 = ""
 942 
 943 #
 944 
 945 # Just one layout, the directory will occupy the whole
 946 
 947 # screen, the playlist will have 1/4 of the screen size
 948 
 949 # and be positioned at lower right corner. (Note that
 950 
 951 # because the playlist will be hidden by the directory
 952 
 953 # you will have to use the TAB key to make the playlist
 954 
 955 # visible.)
 956 
 957 #
 958 
 959 # Example: Layout1 = playlist(0,0,100%,10):directory(0,10,100%,FILL)
 960 
 961 #
 962 
 963 # The screen is split into two parts: playlist at the top
 964 
 965 # and the directory menu at the bottom. Playlist will
 966 
 967 # occupy 10 lines and the directory menu the rest.
 968 
 969 #
 970 
 971 #Layout1 = palylist(0,0,100%,FILL)
 972 
 973 Layout1 = playlist(0,0,FILL,100%)
 974 
 975 #Layout2 = directory(0,0,100%,100%):playlist(0,0,100%,100%)
 976 
 977 #Layout3 = ""
 978 
 979    
 980 
 981 # When the song changes, should the menu be scrolled so that the currently
 982 
 983 # played file is visible?
 984 
 985 FollowPlayedFile = yes
 986 
 987    
 988 
 989 # What to do if the interface was started and the server is already playing
 990 
 991 # something from the playlist? If CanStartInPlaylist is set to yes, the
 992 
 993 # interface will switch to the playlist. When set to no it will start
 994 
 995 # from the last directory.
 996 
 997 CanStartInPlaylist = yes
 998 
 999    
1000 
1001 # Executing external commands (1 - 10) invoked with key commands (F1 - F10
1002 
1003 # by default).
1004 
1005 #
1006 
1007 # Some arguments are substituted before executing:
1008 
1009 #
1010 
1011 # %f - file path
1012 
1013 # %i - title made from tags
1014 
1015 # %S - start block mark (in seconds)
1016 
1017 # %E - end block mark (in seconds)
1018 
1019 #
1020 
1021 ……..
1022 
1023 # Display full paths instead of just file names in the playlist.
1024 
1025 # 是否显示播放列表文件全路径
1026 
1027 PlaylistFullPaths = no
1028 
1029 ……….. 
Mocp Configure

 

2.mocp键盘映射配置

mocp键盘映射自定义,示例键盘映射可以从$prefix/share/moc/keymap.example找到

$ vim ~/.moc/keymap

menu_up            = k UP

menu_down        = j DOWN

menu_page_up            = ^b PAGE_UP

menu_page_down        = ^d PAGE_DOWN

menu_first_item        = M-b HOME

menu_last_item        = M-d END

 

3.mocp主题

mocp主题默认安装到$prefix/share/moc/themes目录下,可以自定义主题只对用户生效(放到~/.moc/themes目录下).

mocp启动时指定的主题或者在用户级配置文件~/.moc/config中指定的主题可以自动从$prefix/share/moc/themes和~/.moc/themes中读取.(没有就要在~/.moc/config的Theme 使用绝对路径来指定)

创建~/.moc/themes目录

$ mkdir -pv ~/.moc/themes

$ cp /usr/share/moc/themes/moca_theme ~/.moc/themes/user_moca_theme 

~/.moc/themes/ user_moca_theme 

技术分享
 1 background        = white    default bold    
 2 
 3 frame            = white    default bold    
 4 
 5 window_title        = yellow    default    bold
 6 
 7 directory        = white        default
 8 
 9 selected_directory    = white        default bold
10 
11 playlist        = white default
12 
13 selected_playlist    = cyan        default    bold
14 
15 file            = green default bold
16 
17 #selected_file        = yellow    red    bold
18 
19 selected_file        = white black bold
20 
21 ……. 
mocp User themes

 

这是我的mocp最终的样子:

技术分享

fbterm显示出来也是这个样子的,不过桌面歌词就没有了。

注:在fbterm中将TERM变量一直设为fbterm时会让一些基于ncursers库的命令行程序界面(比如mc和alsamixer,mocp)变得乱七八糟。而只有在将TERM变量值设置为fbterm的时候才可以让vim在fbterm上支持更多的颜色。

   

Linux命令行音乐播放器moc