本文共 3986 字,大约阅读时间需要 13 分钟。
c++编写音乐播放器
我 :“ GogglesMM一直是我最喜欢的玩家之一。” 因此,当我考虑采访开发和维护开源音乐播放器的开发人员时,Sander Jansen很快想到了。 桑德(Sander)是Goggles Music Manager( )的开发者和维护者,Goggles Music Manager是一款非常出色的开源音乐播放器,特别适合以非常透明的方式将音乐流从计算机传输到数模转换器(DAC)。
在本系列的第一篇文章中,我采访了Guyadeque音乐播放器的创建者 ; 以下是我与Sander对话的编辑版本。
问:您为什么决定创建和维护开源音乐播放器? GogglesMM对您真正重要的是什么?
答:当时对可用的播放器并不十分满意(他们使用了大量内存,或者启动缓慢,或者严重缺乏友好的用户界面),我想自己尝试一下。 首先,我主要关注音乐组织(典型的艺术家/专辑/曲目布局),同时保持较低的内存占用并保持快速。
问:您能否告诉我们更多有关您面临的组织问题的信息? 我知道很多有古典音乐爱好的人也想由作曲家订购; 这是你看过的东西吗? 并分离指挥,独奏家和乐队吗?
答:组织音乐收藏的一个限制因素一直是文件格式及其支持的标记选项。 我们将所有元数据存储在数据库中以便快速检索,但这仅反映了文件本身的内容。
我的理念一直是,您应该能够复制文件,并且仍然拥有所有元数据,而不必也复制数据库。 由于没有一种标准可以涵盖所有文件格式的元数据,因此尝试支持最常见的播放格式的播放器必须做出选择,通常在支持的标签方面倾向于最低的公分母。 像这样的格式支持多种元数据标签,并且可能会嵌入大多数文件中。 这听起来像是个好主意,但是您冒着中断其他软件或设备中播放的风险。 在GogglesMM中,在编写新标签时,本地标签格式将始终具有首选项。
GogglesMM确实支持导体和作曲家标签。 允许使用任意标签肯定会很好,但是从数据库设计到UI选项,这确实使事情变得更加复杂。 关于保持简单肯定有话要说。
问:告诉我们一些有关GogglesMM使用的库的信息。
答:我将库用于GogglesMM的图形用户界面。 这是一个非常不错的库,尽管近年来它没有跟上新的UI功能。 在我之前的工作中,我们使用它来将应用程序移植到Windows和各种Linux / Unix。
GogglesMM拥有自己的播放引擎,但依赖于通常的第三方库来解码各种音频编解码器。 较早的版本使用但是对无缝播放的缺乏精确控制使我决定自己滚动。
问:自2016年以来,您就一直在Launchpad上构建GogglesMM,并且其工作时间甚至更长。 那么,为什么在Debian和Ubuntu仓库中有一个非常旧的GogglesMM版本而不是您的版本?
答:缺少GogglesMM官方更新包的原因可能有多种。 在上提供构建似乎是阻力最小的途径,因为没有人对维护软件包感兴趣。 Ubuntu上的旧版本应该慢慢消失,因为我停止分发的请求终于得到了认可。 将来,我可能会提供它作为包。
问:您是白天工作的软件开发人员吗?
答:是的,我是的软件开发人员,我的日常活动包括Baron Weather API的开发和维护,该服务可通过Internet分发各种天气数据。
从2000年代初期开始,我就一直在使用Linux作为开发和桌面使用的主要平台。 首先是Mandrake发行版,然后是Arch Linux,这是一个滚动发行版发行版,这吸引了我,使我不必每年重新安装操作系统(这是我所知道的最早的686个优化发行版之一)。
问:你是音乐家吗? 您喜欢听音乐吗?
答:我不是音乐家。 GogglesMM是我不在车里或外出时使用的主要音乐播放器,在这种情况下,我会使用手机。 我在各种设置中使用GogglesMM。 在笔记本电脑上工作时,我主要通过耳机听。 根据活动的不同,这些内容可以是播客,背景音乐或我专心听的东西。 这一切都取决于我目前在做什么。
在家里,我通过HDMI将媒体PC连接到7.1环绕声。 当然,它使我可以播放一些多通道专辑以及常规立体声。 此外,我有一个常规桌面,可以访问相同的媒体文件。 两者都使用GogglesMM。
问:我尝试将音乐播放器配置为将音乐数据以不变的形式传递给DAC。 看来GogglesMM确实在尝试避免重新采样,更改字长等。
答:是的,当我构建播放引擎时,我确保可以做您要完成的事情。
问:不少开源音乐播放器都使用 ; 有人告诉我,除非音量改变或输出设备不支持采样率或字长,否则不一定会干扰比特流,但仍然令我感到紧张的是,它可能会摆弄“看不见的东西” ”,因为我不知道某些奇怪的配置问题。
答:这可能只是开发人员的懒惰! 添加重新采样器并即时进行格式转换和/或重新映射频道需要花费时间。 随着PulseAudio的广泛部署,您不需要任何此功能(在播放器本身中)就可以使一个易于使用的音乐播放器正常工作。 GogglesMM引擎旨在避免工作。 因此,为我们提供浮点采样的Vorbis解码器将尽可能长时间地保持浮点,而提供16位采样的FLAC解码器将保持16位。 仅当输出设备需要其他东西时,我们才会尝试对其进行转换。
这也表明,缓慢的开发可能是一件好事,因为您一度认为需要的功能在上游实现时不再真正需要。
问:我对GogglesMM的真正欣赏是,即使在我古老的双核台式机上,它也是如此敏捷。 您能否告诉我们一些降低内存使用量并使GogglesMM快速响应的方法?
答:说实话,不是很多。 我肯定花了很多时间来确保SQL(ite)查询是快速的(尤其是那些经常使用的查询),并确保没有重复的信息存储在数据库中。 随着计算机变得越来越快,我已经不那么在意了,但是对我来说仍然很重要的是,启动应用程序时,它的显示和准备使用时间不会超过几秒钟。 它还可以帮助我使用已经快速且轻巧的FOX。 回到上一主题,添加对诸如任意标签之类的支持肯定会对性能产生影响,并且可能需要重写数据库设计。
问:您对GogglesMM有任何未来计划吗?
答:短期内没有,但是为了将来的发展,我一直在考虑包括对HDPI监视器,音频交叉淡入淡出,均衡器以及将我的audioconvert实用程序集成到GogglesMM中的支持。
问:audioconvert(音频同步和转换实用程序)有什么计划? 要将内容带入播放器,进行播放,在便携式设备上管理其他格式的收藏夹,还是其他?
答:最初,将它包含在同一软件包中会很方便,因为它可以共享相同的内部FOX库。 坦白说,也许某些代码库可以重用以管理便携式设备上的集合,尽管我认为并不需要那么大的需求。 例如,我的主要音乐收藏存储为FLAC,我将这些文件的副本以Opus和MP3格式保存在单独的文件夹中,这些文件夹使用audioconvert进行同步。 (这很简单;只需运行audioconvert --flac = opus / data / music / flac / data / music / opus即可 。)我使用文件管理器将所需的文件复制到便携式设备上。
我喜欢与Sander的交谈,并了解了有关GogglesMM内部工作的一些有趣细节。 这是一款出色的音乐播放器,特别是对于希望对到DAC的处理管道进行可靠控制的任何人而言。
几天前,我正在播放一张从我在美国知名咖啡连锁店购买的CD翻录的专辑,那是在他们曾经出售音乐CD的那天,我偶然发现了几首鼓舞了我的歌曲,寻找艺术家并购买一些专辑下载。
第 。 引导我进入Joi的歌曲是“ ”,将南亚音乐与电子音乐完美融合。 我真的很喜欢它的其余部分。 我从Linux友好的下载那里购买了FLAC格式的好东西。
第二个是收购的 ,也从7digital收购。 我遇到的第一首作品是《 会》( ,显然是为一个特别的唱片项目创作的,该唱片项目融合了一群非常强大的音乐家。 他们的音乐出现在1990年代我遇到的一些合辑中,我很想听听他们的更多信息。
最后,桑德在我们的谈话中提出了一个很好的建议: 。 他说:“他们是来自纽约的一个小乐队,刚刚发行了他们的最新专辑Gold (这是他们上一张专辑的曲目 )。”
翻译自:
c++编写音乐播放器
转载地址:http://uvbzd.baihongyu.com/