LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 7423|回复: 84

mplayer控制台前端播放器CMMusic版本更新(支持歌词,插件扩展)

[复制链接]
发表于 2008-12-8 18:00:33 | 显示全部楼层 |阅读模式
version 1.6
cmmusic (Console Mplayer Music)
Author : fedorawang
Email : kissme2142@gmail.com
URL : https://sourceforge.net/projects/cmmusic/
License : GNU General Public License (GPL)

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.

---------------------------------------------------------

语言:简体中文

指引:

---------------------------------------------------------

简介:

CMMusic是啥软件?我为什么要用它?

CMMusic是MPlayer的前端(Frontend),是基于(n)curses开发的控制台界面软件。
相对于其它播放器,有以下优势:

a.播放能力:相对于mp3播放器,CMMusic依靠MPlayer的强大后盾完全可以胜任几乎
所有的音频格式文件,甚至可以用来播放视频文件,如管理并播放MV文件列表。

b.资源占用:由于使用控制台界面库,CMMusic在资源及CPU占用上几乎可以忽略不计,
当然,剩下的就交给MPlayer了。

c.皮肤外观:使用大家熟悉易入手的XMMS界面布局;字体和特效(如背景图,透明)完全
取决于控制台终端,支持xterm,urxvt,gnome-terminal,konsole及文本模式终端。

d.操作方式:在X环境下,你可以像使用XMMS一样用鼠标来操作CMMusic,或通过快捷键
来完成这些操作。

e.特殊能力:非X环境运行,歌词手动下载,百度MP3试听下载。

---------------------------------------------------------

你可以从以下地址获得软件:
https://sourceforge.net/projects/cmmusic/

BUG报告及建议:
https://sourceforge.net/tracker2/?fu...7&atid=1126799

---------------------------------------------------------

运行环境要求:

1.Linux.
2.mplayer.
3.ncurses或curses.

---------------------------------------------------------

如何编译和安装?

[1] ./configure
[2] configure选项:
--enable-envcode=[ARG] 设置运行环境变量,缺省为UTF-8
--enable-lrccode=[ARG] 设置LRC歌词文件的编码,缺省为GBK
[3] make
[4] make install
[5] 安装目录结构:
程序位置: /usr/local/bin/cmmusic
插件目录: /usr/local/share/cmmusic/plugins/*
用户数据: ~/.cmmusic/* (动态生成)
[6] make uninstall ,或直接删除以上安装目录结构。

---------------------------------------------------------

如何使用?

1.安装完毕后,在控制台下运行cmmusic.
2.按INS增加文件到列表.
3.按回车播放!

你能在该软件站点或解压的源码包目录下找到键位表图,以便于更快熟悉键位操作。

----------------------END--------------------------------


---------------------------------------------------------
修改日志:

ver 1.5 2009-03-16
1.增加配置功能模块,常用配置能被记忆,包括:音量大小,播放模式,文件最近打开位置,LRC目录,文件类型。
2.增加文件类型过滤,播放文件类型,文件列表类型和目录设置时都有过滤功能。过滤类型可以配置文件中自定义。
3.增加确认框交互,在设置LRC目录,删除整个列表和保存列表时可能会有确认框*出。
4.增加批量添加目录下所有播放文件的功能。
5.修正64位下WPARAM宏定义导致编译无法通过的BUG。
6.修正播放文件开始时有0.5秒音量异常的BUG。
7.歌词叠字的BUG可以通过修改配置文件来避免,并增加可配置效果。
8.configure增加对非宽字符curses的支持(不支持中文),去掉1.4中过多的可选项。
9.快捷键根据mplayer习惯重新定义并可自定义配置。
10.歌词断字进一步优化。
11.修正mplayer被杀死后,主程序异常退出的BUG。
12.增加MP3下载试听插件,增加curseui插件工程。
13.增加KeyMode功能,用于切换cmmusic和mplayer按键模式。
14.修正控制台窗口过小会引起程序崩溃的问题。

ver 1.4 2009-02-21
1.增加四个按钮功能:增加,删除,上移,下移,清除列表。
2.增加文件列表操作功能,选择文件可视化。
3.增加关于按钮,显示版本及版权。
4.增加音量调节快捷键。
5.修正音量设置后播放新文件时没有对应的BUG。
6.修正播放文件时无法真正暂停的BUG。
7.优化由autotools组织的工程,会优先选择ncurses。
8.为configure增加部分可选选项。主工程和插件的安装分开。
9.插件仅保留歌词下载插件和GTK的文件打开插件。
10.快捷键修正:1,退出增加文件,列表操作,插件操作模式的快捷键由'q'改成ESC。

ver 1.3 2009-01-03
1.取消上个版本的--gbk和--text选项.替换为-lrc gbk和-mode text.
2.主程序增加部分消息机制.以适应接收插件通知.
3.增加下载歌词插件(手动).
4.增加一个方便添加播放文件的GTK界面插件.(-_-!)
5.增加一个清除播放列表的插件.
6.改由autotools组织工程.
7.数据目录,插件目录,主程序目录重新定义.

ver 1.2 2008-12-15
1.修正一个Lrc无法正确解析显示的BUG.
2.增加Plugin插件模式,用户可以使用shell脚本甚至二进制文件自定义插件功能和热键.
3.开始命令转移到start.sh文件.用户可通过修改命令脚本来自定义mplayer的启动参数和其它操作.此脚本如果不存在,播放器会生成缺省脚本.
4."部分"修正歌词中文断行乱码或无字的BUG.
5.取消上个版本的颜色模式,原因是为了让用户更自由地定义界面颜色.
6.控制台大小被修改时,播放器可以做出自适应调整了.
7.为部分玩家因不包含相关头文件而引起编译出错的问题修正了文件结构.
8.增加--text选项,以适应在zhcon --utf8模式下,更换窗口边框以修正字符长度引起框架混乱的BUG。

ver 1.1 2008-12-9
1.增加--gbk选项.在TEXT模式下,使用zhcon可以正常显示中文了.方法是:运行zhcon,运行./CMMusic --gbk.
2.修改查找lrc目录策略,查找目录为:播放文件目录,./Lrc目录,指定目录.
3.增加用鼠标点击菜单的支持,单击为选中,双击为播放(发现在TEXT的zhcon环境中鼠标无效).
4.缺省播放模式为多数人所用的循环顺序播放.
5.鼠标在没必要时会隐藏起来.
6.打开颜色模式.

ver 1.0 2008-12-8
1.完成基本功能.

----------------------END--------------------------------
:em11


题外话:
前一段时间收到xulang的BUG反馈邮件。于是开始1.6的开发。在测试时,随便讲讲一下新版本解决BUG的一些过程。


1.打开文件时没有反应。
这个BUG好像较早时就有人反映了,但我一直不明白是怎么产生的。xulang报告说是ubuntu 9.04,于是我安装了虚拟机。测试了几天,一个偶然的机会,让我把这个BUG给重现了:我使用了VirtualBox共享目录的方式,音乐文件放在共享目录(Win)下测试,结果BUG一下就出现了。经查,文件类型返回的是DT_UNKNOWN!结果连".."都没有了。所以打开文件就没反应了。修正过程中,还发现了软链接目录和文件也被忽略了...于是也修正了无法显示软链接的BUG。不过测试过程中发现软链接很难知道是目录还是文件链接,有办法知道,就是尝试打开,但那样速度太慢,放弃了。直接改成了只要是软链接都显示。


2.建立快捷方式的cmmusic
这次与XXX的交流,顺便让我发现了XXX自制的deb包是有快捷方式的。喜!于是我马上也在自己的包里按样子做了一个,起名叫cmmusicx。但开始测试时启动不了。我把我解决的过程给大家说下:
(查看错误输出)
[wxj@localhost bin]$ cat ~/.cmmusic/Err.log
mplayer: error while loading shared libraries: libGL.so.1.2: cannot open shared object file: No such file or directory
(查找相关so的位置,发现该so不在lib目录下)
[wxj@localhost bin]$ ldd /usr/local/bin/mplayer | grep libGL.so.1.2
libGL.so.1.2 => /usr/lib/fglrx/libGL.so.1.2 (0x00121000)
(查找类似的so,发现确实没有1.2版本的,至少软链接也没有)
[wxj@localhost bin]$ ls /usr/lib/libG*
/usr/lib/libGL.so /usr/lib/libGLU.so /usr/lib/libGLU.so.1.3.070002
/usr/lib/libGL.so.1 /usr/lib/libGLU.so.1
[wxj@localhost bin]$ ls /usr/lib/libGL.so.1 -al
lrwxrwxrwx 1 root root 26 2008-10-12 /usr/lib/libGL.so.1 -> /usr/lib/xorg/libGL.so.1.2
(于是尝试自建个软链接...)
[wxj@localhost bin]$ ln /usr/lib/fglrx/libGL.so.1.2 /usr/lib/libGL.so.1.2 -s
ln: 创建符号链接 “/usr/lib/libGL.so.1.2”: 权限不够
[wxj@localhost bin]$ su
口令:
[root@localhost bin]# ln /usr/lib/fglrx/libGL.so.1.2 /usr/lib/libGL.so.1.2 -s
[root@localhost bin]# exit
exit
[wxj@localhost bin]$ ./cmmusicx
(成功了!)

再说个BUG,有些人(比如我),在菜单里删除某项快捷方式后,以后想再加回,发现把 cmmusic.desktop 放回去也无效了。解决方法是把~/.local/share/applications/下的文件全删了即可。这个目录估计是各个用户的过滤目录,以此区别不同用户的不同菜单。总之你要发现开始菜单里的cmmusic快捷方式没出来,就这样试一下。
玩Linux的乐趣之一,就是解决问题,在解决的过程变得机灵。


3.歌词高亮出现叠字BUG问题。
这个问题我一直没遇到,遇到的同学可以把系统版本情况跟我说下。这个BUG的现象是歌词高这显示时,出现叠字。目前的解决方法修改~/.cmmusic /cmmusic.cfg的lrclight字段,改成0即可。但改成0后没效果了,连唱到哪一句也不好找了,后来 边城浪子建议我加个框,我最后的处理是在唱到的那一句前面加个">>"指示符,也算比较明显了吧。


4.autotools对config.h的使用。
这个BUG有点无语...我一直以为我正确使用了autotools,直到这次测试时才发现之前一直没有把config.h里的宠编译进去。此版本特别加入#include "config.h"以修正。


5.对cue的支持。
此版本较大的一个改动在于对cue的支持。算是比较简单的支持吧。为了避免给主程序加杂乱的代码(本来已经很乱了...),我把cue的解析放到 cuelist中去了,大家可以到plugin中找到它,这样做的目的是:cue可能多种多样,暂且给个临时方案,写在一个文件里也方便调试。大家如果有无法解析的cue,要么自己调试,给我提供些修改意见,要么给我发cue文件来。对cue的支持很简单,以下格式,第一个数字为开始时间(秒),第二个为结束时间。第三个为标题,第四个为文件全路径。开头的cue为标识以备以后扩展其它格式用。(注:cue和ape必须在同个目录)
#|cue|1326|1521|叹香菱-陈力|/media/MAIN/Media/CUE/红楼梦-电视连续剧原声.ape
对cue的支持,进度条仍然是整体ape的进度条。本来就是单个文件,做每个分段的进度太辛苦了。由于一般ape较大,如果一开始就播非开头的片断,那么开始会有一两秒响的是开头的音乐,估计是由于文件较大mplayer对setpos的反应慢的缘故。如果想只播放ape,需要在~/.cmmusic /cmmusic.cfg的musictype增加ape类型,就可以添加了,当然手动加到music.lst中也可以。


6.奇怪的现象
在测ubuntu时,发现一个奇怪的BUG,即Plugin无法读取,查了老半天不知所去云,后来又莫名奇妙的又好了。我不放心,又重装了了 ubuntu(虚拟环境),再测,BUG再没出现了... 此外,发现cmmusic.cfg中的plusdir的选项好像设置无效 -_-! 。不过既然版本发布工作都差不多了。这个问题也就暂时不查了。

结语:
从最初做一个自己方便用的工具共享给大家,到现在1.6版本,陆陆续续快一年。尽管更新不是很积极,但大家的BUG反馈还是给了我继续完善的动力。我也在这个过程学习了一些Linux下开发和发布的东西,从开始时只有makefile的源码压缩包,到由autotools来组织工程,从早期需要手动添加文件到music.lst到现在有选择文件的界面,从以前只在我的F8上测试,到现在好歹有了ubuntu9.04和Fedora11的虚拟机测试环境,可以提供rpm和deb包了。负责一个给大家使用的软件开源工程,并在其中解决大家提出的问题,确实能让人变得更加有责任心,更加努力去把这个东西做好。

题外话一下,虽然我里面有了baidump3和歌词下载的功能,写得极烂,可居然没有人反馈...敢情这些功能是没人关注啊。看来当初没打算写得更好是对了。

最后再提醒一下,大家使用过程中出现BUG。如果你要问其他使用者,在论坛上问是没问题的,但如果要问我,请电邮我或到软件页面(sourceforge)的BugReport去提,我可不是所有论坛都去过。

感谢xulang和边城浪子的BUG反馈和建议!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2008-12-8 18:55:48 | 显示全部楼层
我下载并且编译运行了,但是程序提示sh:fifomo权限不够,怎么处理?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-8 19:18:48 | 显示全部楼层
-_-! 需要创建两个管道,一个输出mplayer,由mplayer取命令,一个由mplayer输出,我取反馈。
所以管道是需要的。我设为在本地建管道,即fifomi,fifomo,你看你在哪有权限?改下路径吧,如
/tmp/fifomi (其实/tmp的权限更小。),写绝对路径就行。

在PlayerMgr.h中
改下宏定义。
#define FIFO_MPLAYER_INPUT        "fifomi"
#define FIFO_MPLAYER_OUTPUT        "fifomo"
回复 支持 反对

使用道具 举报

发表于 2008-12-8 21:00:35 | 显示全部楼层
首先声明一下,我编程是很菜的@,@

我在我的用户目录下某个CMMusic目录下建立了fifomi和fifomo文件,然后按你的提示修改了PlayMgr.h文件中的宏定义,修改成了上述两文件的绝对路径,并且把上述的两个文件的权限都修改成666,但是程序仍然提示权限不够。
所以我就把这两个文件删掉并且改回了原来的样子。

实际上我在Debug目录下发现了现成的fifomi和fifomo,不过他们的权限都是444,所以我就把他们的权限修改成666了,实际上CMMusic到这一步运行起来了,问题是我如何用它打开一个文件?
或者我是否需要自己编写一个lst文件?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-8 21:14:16 | 显示全部楼层
-_-! 有点无奈了... 我是一个Fedora的普通用户,文件放在我的home下,没有权限问题。
至于 lst文件,实际是文件路径列表,我是这样生成的:
sh /media/MAIN/Media/*.wma > music.lst

权限问题,是不是你下载目录的权限不够呢?然后你是在下载目录下编译运行 的呢。
回复 支持 反对

使用道具 举报

发表于 2008-12-8 21:33:39 | 显示全部楼层
直接把歌词整成srt字幕,mplayer可以显示么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-8 21:37:05 | 显示全部楼层
不是视频文件肯定不行吧...
回复 支持 反对

使用道具 举报

发表于 2008-12-9 21:10:32 | 显示全部楼层
恩,一个好消息,这个程序运行起来了,当然也有一些小问题
我先说说怎么运行起来的好了:
首先我把原来的那一份全部删除了;因为是在我的用户目录下,并且mplayer已经安装并且已经确认是可以播放的,所以我认为条件应该都是具备的。
然后解压了从源码网下载的包,解压以后进入Debug目录make,make完成以后发现Debug目录和bin目录下都有CMMusic(然而我之前运行了Debug下的那个!):进入bin目录,首先需要修改CMMusic的运行权限,生成的文件权限是444(亦即只读的),所以我就把它chmod成555(亦即只读且可执行的)了;
./CMMusic,会提示fifomo文件权限不够,这是因为CMMusic在bin目录下生成了fifomo,fifomi文件,而他们的权限都是444(不可写,只出不进@_@|||),同样,chmod成666(亦即可读可写)。
好了,程序到此部已经可以运行起来了,然而他不能直接读取文件而只能读取lst文件,很邪恶啊。。。
使用命令:
cd ~/Download/CMMusic/bin/
ls /home/username/Music/*.mp3 > music.lst
./CMMusic  (程序会自动读取bin目录下的music.lst文件,并且只会读取这个文件。。。另一个很邪恶的地方啊)
好了,程序即可运行起来了。

对于歌词的支持:
应该说经过验证,程序是可以自动到mp3文件所在目录找歌词文件的,看截图;但是对于有些歌词却找不到,不知道是什么原因,我再研究一下好了,比如那首eyes on me就不行。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-12-10 00:08:19 | 显示全部楼层
^O^ 555 太感谢了....
看到有人这么关注真高兴.(虽然只有一个 -_-~)
好吧,我来说下吧.权限的问题我确实不知道怎么回事,这个你既然搞定了,我就不说了.
不能直接读取文件,是因为做来给我用的,而我的需求不多,只有这个. -_-! ,
所以读列表文件显然比选多个文件方便.但并不是只读music.lst,
你如果指定lst(下面第二个
    ),它会选择你指定的lst,但退出不会保存.
    歌词只识别lrc的,代码你甚至可以看是怎么读的,很简单的逻辑.

    还有,我今天更新了ver1.1版本,
    对歌词查找目录做了改进,也支持读程序目录下的 Lrc 目录.
    主要是因为程序没有保存功能,
    我有时可以直接建立一个Lrc的软链接,指定我要的专放歌词的目录.
    这样就不用每次打开都指定Lrc文件目录了.(我的歌曲和歌词不在同个目录).

    有个BUG还要提示下,mplayer对mp3的时间总长获取是有误的,
    所以时间条是不准确的.但拖放是准确的.这是mplayer的原因,
    此规则对wma是准确的.

    如果列表里是wmv文件,可以播放视频(当然是弹出新窗口啦).这对我放MV文件很有用.

    1.1版本还增加了在TEXT模式下(Ctrl+Alt+F2),GBK的处理方式.内容是这样的:
    Fedora在TEXT模式下是显示不了中文的,要显示中文,需要 zhcon --utf8 (安装zhcon)
    但发现zhcon在utf8模式下我的程序框架会混乱,但在zhcon缺省下不会.(即GBK)
    所以可在TEXT模式下,运行zhcon,进入后,运行 ./CMusic --gbk 就可正常使用了.
    但zhcon下我和程序似乎不支持鼠标.
    1.1版本还修改了循环播放为默认模式.等一些细节内容.没有需求以后就不改了.
    这个程序代码比较简单,有需求的可以自己改.还算个比较入门的东东吧.
回复 支持 反对

使用道具 举报

发表于 2008-12-10 17:31:18 | 显示全部楼层
我已经有一段时间没怎么用XP了,除了特别的需要(游戏和网银)。
其实个人感觉Fedora是一个相当赞的系统,所以也很高兴看到有国内的朋友在Linux下code,呵呵;很荣幸帮你完成了程序初步的测试,当然,我也希望你仍然有精力可以写一些更好的东西出来~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表