条件:linux下,主要由C语言编写,且开源的音乐播放器。
名称 | Rhythmbox | DeaDBeef | Pragha |
---|---|---|---|
简介 | Ubuntu的默认播放器 | 类unix系统下的终极播放器 | 适用于GNU / Linux的轻量级音乐播放器 |
项目大小 | 24.2 MB | 48.4 MB | 3.21 MB |
linux下播放时占用内存大小(数据来自网络) | 7.4M | 5.8M | 不明 |
许可证 | GPL 2.0 | 大部分为ZLIB | GPL 3.0 |
优点 | 有开发参考手册,方便移植 | 支持的格式最多,占用内存小 | 代码较少,完全由C编写 |
缺点 | 有些冷门的格式不支持,用到了glib库。 | 无说明文档,代码注释也很少 | 功能比较少,也用到了glib库 |
源码网址 | https://github.com/GNOME/rhythmbox | https://github.com/DeaDBeeF-Player/deadbeef | https://github.com/pragha-music-player/pragha |
介绍网址 | https://wiki.gnome.org/Apps/Rhythmbox | https://deadbeef.sourceforge.io/ | http://pragha-music-player.github.io/ |
无间隙播放和回放增益 | 支持 | 支持 | 不明,但应该是不支持的 |
player主程序代码(个人理解) | https://github.com/GNOME/rhythmbox/blob/mainline/backends/rb-player.c | https://github.com/DeaDBeeF-Player/deadbeef/blob/master/main.c | https://github.com/pragha-music-player/pragha/blob/master/src/pragha.c和pragha-playback.c |
gapless playback:无间隙播放是连续音频轨道的不间断播放,而不会在音轨变化时产生静默或喀哒声。(个人理解:即切换歌曲时,中间不停顿)
**Replay Gain:**回放增益(Replay Gain)是一个于2001年7月12日被公开提出的标准,用于将像MP3或Ogg Vorbis等格式的数字化音频的可感知响度进行标准化(Normalize) 处理。
播放器设置固定的音量值,但播放出的音乐文件有些声音大,而有些声音小。这是因为很多音乐文件在录音时其电平有的高、有的低导致。而加入“回放增益”,就能有效避免这种情况:无论原始的录音文件电平差异有多大,最后都统一以一个相同的增益值(音量值)输出。
其余的播放器中,
Pogo是用Python编写。
Clementine是用C++编写。
YouAmp 是参考Rhythmbox但占用内存27M。且在github上搜不到。
Foobnix 最大的一个特色就是可以通过搜索获取大量的在线音乐(但几乎搜索不到中文音乐),支持在线的音乐和视频的搜索功能,并直接对搜索结果进行播放。内存占用26M。在github上找到源码,发现也是用Python编写的。
Audacious不同之处在于除了支持UTF-8字符集之外,还提供其它字符集的支持,这样**能比较好的解决中文乱码的问题。**虽然说开源,但是在github上没有项目,仅可在主页下载源码,下完发现是用C++编写的。
Rhythmbox
名称 | Rhythmbox |
---|---|
简介 | Ubuntu的默认播放器 |
项目大小 | 24.2 MB |
linux下播放时占用内存大小(数据来自网络) | 7.4M |
许可证 | GPL 2.0 |
优点 | 有开发参考手册,方便移植 |
缺点 | 有些冷门的格式不支持,用到了glib库。 |
源码网址 | https://github.com/GNOME/rhythmbox |
介绍网址 | https://wiki.gnome.org/Apps/Rhythmbox |
无间隙播放和回放增益 | 支持 |
player主程序代码(个人理解) | https://github.com/GNOME/rhythmbox/blob/mainline/backends/rb-player.c |
Rhythmbox是Linux下的音乐播放和管理软件,为Fedora和Ubuntu等Linux发行版默认安装的音乐播放器
重要功能:
Rhythmbox支持Replay gain和Gapless playback
支持搜索和排序库中的音乐
显示歌词
Blue Remote 允许通过蓝牙(手机)控制Rhythmbox。
Rhythmbox XSLT,允许音乐库作为一个网页浏览。
github状态:
https://github.com/GNOME/rhythmbox
有详细的开发参考手册,说明比较详细。
https://developer.gnome.org/rhythmbox/unstable/
例如https://developer.gnome.org/rhythmbox/unstable/RBPlayer.html
详细说明了RBPlayer的各种信息。
说明部分简要翻译如下:
这是由rhythmbox播放后端实现的接口。它允许调用者控制播放 (open, play, pause, close),搜索(set_time),控制音量(get_volume,set_volume)并接收播放状态信息(get_time, various signals)。
播放接口允许同时播放(或至少打开)多个流。调用方将一些数据与其打开的每个流(rb_player_open)相关联,该数据流参数包含每个发出的信号。从rb_player_play返回时,调用者不应假定新的流正在立即播放。相反,它应该使用’playing-stream’信号来确定。
播放器实现应使用’info’信号为从流中提取的元数据发出信号
在播放时,播放器实现应经常发出’tick’信号,以一致地更新经过/剩余时间显示。 'tick’信号中包含的持续时间值用于在当前流到达EOS之前准备下一个流,因此应对其进行更新,以解决可变比特率流在早期产生不准确的持续时间估计的问题。
当播放来自网络的流时,播放器可以使用“buffering”信号报告缓冲状态。 信号中包含的值表示已填充的缓冲区的百分比。
“event”信号可用于将事件从播放器传达到应用程序。 对于基于GStreamer的播放器实现,事件由发布应用程序消息的管道中的元素触发。消息的名称将成为事件的名称。
优点:有参考手册,说明详细,便于理解,功能强大。有极多的插件可以参考。且调用关系也有说明,即使不移植,也可以参考其层次结构的设计。
缺点:有些冷门格式不支持,在与图形化无关的部分,也用了gilb库。
glib库简介:
glib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库。Glib中 定义了很多有用的数据结构.如数组(长度可变),单(双)向链表,hash表,队列,还有关系。一些常用的处理 方法如:字符串的处理,标准输出(g_print等),错误输出,日志记录,为了portable而定义的一些基本数据类型(gint,gchar, guint等)极其他们的限制,还有事件循环,线程,IO操作等。
是基于面向对象思想设计的,gobject是所有类的基类。signal在其中也是一大特色,signal与操作系统中的signal并不一样,它是类似消息一样的东西,让消息在各个对象间传递,但尽量降低对象间的耦合。
DeaDBeef(简称DDB)
名称 | DeaDBeef |
---|---|
简介 | unix-like系统下的终极播放器 |
项目大小 | 48.4 MB |
linux下播放时占用内存大小(数据来自网络) | 5.8M |
许可证 | 大部分为ZLIB |
优点 | 支持的格式最多,占用内存小 |
缺点 | 无说明文档,代码注释也很少 |
源码网址 | https://github.com/DeaDBeeF-Player/deadbeef |
介绍网址 | https://deadbeef.sourceforge.io/ |
无间隙播放和回放增益 | 支持 |
player主程序代码(个人理解) | https://github.com/DeaDBeeF-Player/deadbeef/blob/master/main.c |
简介:
DeaDBeeF是用于GNU / Linux,* BSD,OpenSolaris,macOS和其他类似UNIX的系统的模块化音频播放器。
DeaDBeeF允许您播放各种音频格式,在它们之间进行转换,几乎以任何所需的方式自定义UI,以及使用许多其他插件来扩展它的范围。
特点:简洁、高效、多格式支持。自称是The ultimate music player
github状态:
watch/star/fork都比Rhythmbox多。
部分特点(详细请参考主页https://deadbeef.sourceforge.io/):
支持格式多
- Mp3, ogg vorbis, flac, ape, wv/iso.wv, wav, m4a/m4b/mp4 (aac and alac), mpc, tta, cd audio, and many more
- Nsf, ay, vtx, vgm/vgz, spc and many other popular chiptune formats
- SID with HVSC song length database support for sid
- Tracker modules - mod, s3m, it, xm, etc
- And even more formats using FFMPEG
擅长读写标签(作者,专辑,日期等等信息)
很好的Cuesheet支持,可自动将专辑拆分为曲目。
(CUE(cuesheet)是指光盘映像(镜像)辅助文件或称标记文件,按照文本文件格式编制。它在刻录光盘映像文件时,起很重要的作用。)
用直接的方式去整理音乐。
- 您的文件直接从文件系统添加到播放器
- 使用标签或播放列表浏览器的多个播放列表
- 使用与Foobar2000兼容的高级标题格式脚本,以任意顺序对曲目进行分类和分组
紧凑高效
- 每个平台的本机UI工具包都可用来提供最佳体验
- Unix系统上的GTK2,GTK3,ALSA和PulseAudio
- Mac上的Cocoa和CoreAudio
网络特点:
*对选定格式和传输的流媒体广播支持
*支持大多数流行的格式,例如MP3,OGG,AAC,WMA
*开箱即用支持Shoutcast / Icecast和MMS协议
快速将音乐转换为所需的格式
- DeaDBeeF带有高级Converter插件,该插件可将文件转码为其他格式
- 在大多数现代平台上将音乐传输到移动设备时特别有用
- 您甚至可以在转换之前对文件进行预处理-例如,降低采样率以降低速率或应用均衡器。
- 标题格式可用于命名文件
- 文件夹结构可以选择保留
其他优点
-
Gapless playback for correctly encoded files
-
Replaygain - including the Scanner!
优点:在linux中,播放时的内存占用比Rhythmbox小。
支持的播放类型比Rhythmbox更多,支持APE无损音乐和DTS解码等功能。
缺点:无开发参考手册,代码注释也很简略,移植起来可能比较费力。
大部分代码是根据ZLIB许可证授权的,但是有一部分代码,尤其是在第三方模块中,则使用了其他许可证。有关详细信息,请参见各个源代码文件和随附的COPYING文件。
ZLIB:
该软件按“原样”提供,没有任何明示或暗示的保证。 作者概不对使用此软件引起的任何损失负责。
任何人都可以出于任何目的(包括商业应用程序)使用本软件,并可以对其进行更改和自由分发,但要遵守以下限制:
1.此软件的来源不得虚假陈述; 您不得声称自己编写了原始软件。 如果您在产品中使用此软件,则应在产品文档中承认,但这不是必需的。
2.更改的源版本必须清楚地标上原样,并且不得将其歪曲为是原始软件。
3.不得从任何源分发中删除或更改此声明。
如果发布二进制代码可以不用附上源代码。
- The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required. - Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software. - This notice may not be removed or altered from any source distribution.
Pragh
名称 | Pragha |
---|---|
简介 | 适用于GNU / Linux的轻量级音乐播放器 |
项目大小 | 3.21 MB |
linux下播放时占用内存大小(数据来自网络) | 不明 |
许可证 | GPL 3.0 |
优点 | 代码较少,完全由C编写 |
缺点 | 功能比较少,也用到了glib库 |
源码网址 | https://github.com/pragha-music-player/pragha |
介绍网址 | http://pragha-music-player.github.io/ |
无间隙播放和回放增益 | 不明,但应该是不支持的 |
player主程序代码(个人理解) | https://github.com/pragha-music-player/pragha/blob/master/src/pragha.c和pragha-playback.c |
Pragha是用于GNU / Linux的轻量级音乐播放器,基于Gtk(图形工具包),sqlite(一款轻型数据库)并完全用C编写,构造成速度快,轻便。
github状态:
优点:代码较少,完全由C编写。
缺点:功能比较少,也用的是glib库
且从代码来看,有极大可能是参考Rhythmbox的,不仅用的库类似,函数名也很类似。
特征:
与GTK + 3完全集成,但始终独立于Gnome或Xfce。
两个面板的设计灵感来自Amarok 1.4。库和当前播放列表。
具有多个视图的库,根据标签或文件夹结构而定。
在当前播放列表上搜索,过滤歌曲并将歌曲排入队列。
播放和编辑mp3,m4a,ogg,flac,asf,wma和ape文件的标签。
播放列表管理。导出M3U并读取M3U,PLS,XSPF和WAX播放列表。
播放音频CD并通过CDDB进行识别。
通过命令行和MPRIS2进行播放控制。
带有libnotify的本地桌面通知。
可通过插件扩展:
- AcoustID:从AcoustID服务获取元数据。
- CD-ROM:播放音频CD并在CDDB上标识它们。
- DLNA服务器:在DLNA服务器上共享您的播放列表。
- DLNA Renderer:播放DLNA服务器中的音乐。Gnome-Media-Keys:使用gnome-media-keys守护程序控制pragha。
- 全局热键:使用多媒体键控制Pragha。
- Last.fm:加扰,喜欢,不喜欢的歌曲,并添加相似的歌曲以获取相关的播放列表。
- MPRIS2:通过mpris2界面控制Pragha。
- Mtp设备:MTP设备的基本管理。
- 通知:更改歌曲时显示通知。
- 可移动媒体:检测并扫描可移动媒体。
- 歌曲信息:获取您的歌曲的艺术家信息,歌词和专辑封面。
- 获取广播:在TuneIn服务上搜索广播。
要求: - gtk±3.0 >= 3.8, glib-2.0 >= 2.36
- gstreamer-1.0 >= 1.0, gstreamer-base-1.0 >= 1.0
- taglib >= 1.8
- sqlite3 >= 3.4
可选: - libpeas-1.0> = 1.0.0和libpeas-gtk-1.0> = 1.0.0:所有插件都需要。
- libxfce4ui> = 4.11.0:更好的会话管理支持。保存当前播放列表,保存会话时的最后位置等。
- totem-plparser> = 2.26:支持打开更多格式和Internet广播播放列表。
- gstreamer-plugins-base-devel> = 1.0:使用cubic volume可以更好地控制音量。