cmus是一个内置了音频播放器的强大的音乐文件管理器。用它的基于ncurses的命令行界面,你可以浏览你的音乐库,并从播放列表或队列中播放音乐,这一切都是在命令行下。

Linux上安装cmus

首先,你需要按照如下建议设置并安装cmus。

在Ubuntu, Debian 或者Linux Mint中:

    $ sudo apt-get install cmus 

在Fedora上,首先启用RPM Fusion仓库,接着运行:

    $ sudo yum install cmus 

在CentOS上,首先启用Repoforge仓库,接着运行:

    $ sudo yum install cmus 

在Archlinux上:

    $ sudo pacman -S cmus 

安装完之后,在命令行下如下输入就可运行cums:

    $ cmus

导入音乐文件到 cmus

第一件要做的事情是导入你的音乐文件到你的库中。这个过程可以看出两个事情:快捷方式受到了vim的命令模式的启发;还有cmus运行的很快。我已经在20秒之内成功地导入了超过1000首歌!而在iTunes或者其他任何图形音乐库软件下试一下导入,我想你会有足够的时间来做一份花生酱三明治 :>。

要在cmus下面导入音乐,输入下面的像vim一样的命令。

    :a /path/to/your/music/folder

在我的Xubuntu上,我这么做:

    :a /home/adrien/Music/

接下来这个目录下所有的音乐文件会立马按照艺术家或者专辑的方式排列显示。

快速入门

在开始前,你可能希望记住一些基本快捷方式来开始播放你的音乐。这是cmus的唯一缺点。除非你改变它们,否则默认的快捷方式并不直观,并且你不得不学习它们。简而言之:

x 播放或重播音乐
c 暂停
b 播放下一首音乐
z 播放前一首音乐
s 激活随机播放

记住之后,我们就准备开始了!

基本使用

cmus的界面由7个界面组成,你可以按下适当的数字键来访问。比如,启动页面是一个树形界面,你随时可以通过按下“1”来访问。这个界面可以很直观地来使用:通过上下键来导航位于左侧面板的艺术家,按下空格就可以看到特定艺术家的专辑,使用tab键来切换到右侧面板来选择某个歌曲,最后按下回车键来播放音乐。

如你所见,底部显示了艺术家的名字,专辑,和正在播放歌曲的标题,还有时间和音量。

第二个界面与第一个刚才显示的类似,显示了按照艺术家排列的歌曲列表。

然而,第三个界面更有用些,它显示了目前的播放列表。要在树形视图或者列表视图下增加一首歌曲,只要在选中的歌曲上输入'y'。当你创建了一个完美的歌单之后,用如下的命令行保存下来。

    :save /path/to/playlist

用下面命令加载:

    :load /path/to/playlist

第四个界面显示的是队列。队列与播放列表的一点不同是,一旦歌曲是按队列播放的,播放结束后就会被移出队列。要把一首歌加入队列,就像把它加到播放列表一样,但是使用快捷方式:"e"

第五个界面也同样很有用,它是一个轻量级的文件浏览器。当你在你的电脑中查找一首歌曲而不必加入到库中的时候很有用。导航方式也非常标准:用向上或者向下键,回车键用来进入文件夹或者选中一个文件。

第六界面是一个库过滤器,用来动态创建播放列表。如它听上去的那样,过滤器会遍历你的库,并且只显示符合相关规则定义的音乐。之后我会描述如何定义你自己的过滤器,但是cmus已经自带了一些。要试一下,只要使用:

    :filter [name of the filter]

比如:

    :filter classical

除了带有"Classical"标签的音乐,它会隐藏你库中所有的其它音乐。

![](https://img2018.cnblogs.com/blog/1724569/201911/1724569-20191113204022857-1569563636.png)

最后但同样重要的,第七个界面是设置。在这里,你可以定义你的快捷方式和命令。我会在下一部分给你一些例子。

![](https://img2018.cnblogs.com/blog/1724569/201911/1724569-20191113204036355-1322517453.png)

## 高级用法 

正如承诺那样,你现在已经更加熟悉界面了,我会给你一些小技巧来增强你的体验。

要在界面中搜索任何东西,只要如vim那样使用相同的快捷方式

/[keyword]

还有:

n

来搜索下一处关键字。

要创建一个你的过滤器,使用语法:

:fset [name of the new filter]=[expression]

比如,你可以找到所有的旧式摇滚音乐:

:fset oldies=genre="Rock"&date<1970

要了解更多关于你可以使用的表达式,我建议你仔细阅读文档和已有的过滤器。

要重新播放所有的音乐(不过滤),使用如下命令:

:set replaygain=1

要改变快捷键到不同的键上,进入设置界面并找出现有的绑定表达式。举个例子来说,我想要将播放快捷方式从"x"改到"w",我会翻到下面的行:

common  x       player-play

接着按下回车,并改成下面的表达式

:bind -f common w player-play

总的来说,我真的喜欢cmus。它还有许多本篇中没有提到的技巧,因此在你准备好后,应该认真要读一下man帮助手册。简而言之,cmus是一款快速的,易于学习,不会乱动你的文件的好软件。如果你喜欢从命令行下管理音乐库的想法,但是还没有成为cmus的忠实粉丝,我建议你可以先试一下一些替代品,如MOC和PyTone,它们同样也很棒。

基于c开发的全命令行音频播放器的更多相关文章

  1. 命令行音乐播放器 CMus

    自从接触到 CMus (C* Music Player) 这个工作在终端里的音乐播放器后,在 Linux 环境里就很少使用 GUI 音乐播放器播放本地音乐文件了.它消耗资源少使用方便,对中文的支持也不 ...

  2. 基于canvas和Web Audio的音频播放器

    wavesurfer.js是一款基于HTML5 canvas和Web Audio的音频播放器插件.通过wavesurfer.js你能够使用它来制作各种HTML5音频播放器,它能够在各种支持 Web A ...

  3. Wavesurfer.js音频播放器插件的使用教程

    Wavesurfer.js是一款基于HTML5 canvas和Web Audio的音频播放器插件,本文主要记录它及其视觉效果插件Regions插件的使用方法. 1.创建实例 引入插件 import W ...

  4. 基于node和npm的命令行工具——tive-cli

    前端开发过程中经常会用到各种各样的脚手架工具.npm全局工具包等命令行工具,如:Vue脚手架@vue/cli.React脚手架create-react-app.node进程守卫工具pm2.本地静态服务 ...

  5. iOS系统提供开发环境下命令行编译工具:xcodebuild

    iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...

  6. 第4章 ZK基本特性与基于Linux的ZK客户端命令行学习

    第4章 ZK基本特性与基于Linux的ZK客户端命令行学习 4-1 zookeeper常用命令行操作 4-2 session的基本原理与create命令的使用

  7. 最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)

    ===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...

  8. 最简单的基于FFMPEG+SDL的音频播放器 ver2 (採用SDL2.0)

    ===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...

  9. 解放双手!推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫!

    小二是公司新来的实习生,之前面试的过程中对答如流,所以我非常看好他.第一天,我给他了一台新电脑,要他先在本地搭建个 Java 开发环境. 二话不说,他就开始马不停蹄地行动了.真没想到,他竟然是通过命令 ...

随机推荐

  1. python----获取文件的路径(各种方式)

    #获取到当前文件的上个文件夹目录ABSPATH = os.path.abspath(os.path.realpath(os.path.dirname(__file__))) #获取的是相对路径FRON ...

  2. 通过Chrome控制台详细查看ajax请求

    1.F12打开浏览器开发者工具 2.如图所示

  3. Boostnote跨平台 Markdown 编辑器

    Boostnote 0.11.6 发布了,Boostnote 是一个 Markdown 编辑器,可用于 Mac.Windows.Linux.Android 和 iOS 平台. 新版特性 Dev: 更新 ...

  4. javascript逻辑非(!/!!)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 03_mysql-python模块, linux环境下python2,python3的

    ---恢复内容开始--- 1.Python2 正常 [root@IP ~]# pip install mysql-python DEPRECATION: Python 2.7 will reach t ...

  6. winfrom 窗体首次加载

    #region Override Functions /// <summary> /// OnLoad /// </summary> /// <param name=&q ...

  7. CSP-S2 2019 游记

    我简直是咸鱼,一只彻头彻尾的咸鱼. 慵懒,成为了我本次比赛的主调. 10 月 27 日晚上--也有可能是 10 月 28 日的凌晨,睡眼惺忪的我坐在书桌前,照常奋笔疾书着.作业本放回一本又拿出一本,练 ...

  8. Python使用grequests并发发送请求

    目录 前言 grequests简单使用 grequests和requests性能对比 异常处理 前言 requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快.但是 ...

  9. CF1197A

    CF1197A 题意: 定义k阶梯子为两边各一块木板长度至少k+1,中间k块木板至少为1 .问 给你n块木板,最多能搭成几阶的梯子. 解法: 读题两小时,代码五分钟. 考虑贪心,构成梯子的两侧的木棍一 ...

  10. [题解] [SDOI2015] 序列统计

    题面 题解 设 \(f[i][j]\) 代表长度为 \(i\) 的序列, 乘积模 \(m\) 为 \(j\) 的序列有多少个 转移方程如下 \[ f[i + j][C] = \sum_{A*B\equ ...