Linux 音频player对比

条件:linux下,主要由C语言编写,且开源的音乐播放器。

名称RhythmboxDeaDBeefPragha
简介Ubuntu的默认播放器类unix系统下的终极播放器适用于GNU / Linux的轻量级音乐播放器
项目大小24.2 MB48.4 MB3.21 MB
linux下播放时占用内存大小(数据来自网络)7.4M5.8M不明
许可证GPL 2.0大部分为ZLIBGPL 3.0
优点有开发参考手册,方便移植支持的格式最多,占用内存小代码较少,完全由C编写
缺点有些冷门的格式不支持,用到了glib库。无说明文档,代码注释也很少功能比较少,也用到了glib库
源码网址https://github.com/GNOME/rhythmboxhttps://github.com/DeaDBeeF-Player/deadbeefhttps://github.com/pragha-music-player/pragha
介绍网址https://wiki.gnome.org/Apps/Rhythmboxhttps://deadbeef.sourceforge.io/http://pragha-music-player.github.io/
无间隙播放和回放增益支持支持不明,但应该是不支持的
player主程序代码(个人理解)https://github.com/GNOME/rhythmbox/blob/mainline/backends/rb-player.chttps://github.com/DeaDBeeF-Player/deadbeef/blob/master/main.chttps://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.不得从任何源分发中删除或更改此声明。
如果发布二进制代码可以不用附上源代码。

  1. 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.
  2. Altered source versions must be plainly marked as such, and must not be
    misrepresented as being the original software.
  3. 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可以更好地控制音量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值