博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++编写音乐播放器_为什么此开发人员编写了快速响应的音乐播放器
阅读量:2535 次
发布时间:2019-05-11

本文共 3986 字,大约阅读时间需要 13 分钟。

c++编写音乐播放器

我 :“ GogglesMM一直是我最喜欢的玩家之一。” 因此,当我考虑采访开发和维护开源音乐播放器的开发人员时,Sander Jansen很快想到了。 桑德(Sander)是Goggles Music Manager( )的开发者和维护者,Goggles Music Manager是一款非常出色的开源音乐播放器,特别适合以非常透明的方式将音乐流从计算机传输到数模转换器(DAC)。

在本系列的第一篇文章中,我采访了Guyadeque音乐播放器的创建者 ; 以下是我与Sander对话的编辑版本。

认识GogglesMM开发人员Sander Jansen

问:您为什么决定创建和维护开源音乐播放器? GogglesMM对您真正重要的是什么?

答:当时对可用的播放器并不十分满意(他们使用了大量内存,或者启动缓慢,或者严重缺乏友好的用户界面),我想自己尝试一下。 首先,我主要关注音乐组织(典型的艺术家/专辑/曲目布局),同时保持较低的内存占用并保持快速。

问:您能否告诉我们更多有关您面临的组织问题的信息? 我知道很多有古典音乐爱好的人也想由作曲家订购; 这是你看过的东西吗? 并分离指挥,独奏家和乐队吗?

答:组织音乐收藏的一个限制因素一直是文件格式及其支持的标记选项。 我们将所有元数据存储在数据库中以便快速检索,但这仅反映了文件本身的内容。

我的理念一直是,您应该能够复制文件,并且仍然拥有所有元数据,而不必也复制数据库。 由于没有一种标准可以涵盖所有文件格式的元数据,因此尝试支持最常见的播放格式的播放器必须做出选择,通常在支持的标签方面倾向于最低的公分母。 像这样的格式支持多种元数据标签,并且可能会嵌入大多数文件中。 这听起来像是个好主意,但是您冒着中断其他软件或设备中播放的风险。 在GogglesMM中,在编写新标签时,本地标签格式将始终具有首选项。

GogglesMM确实支持导体和作曲家标签。 允许使用任意标签肯定会很好,但是从数据库设计到UI选项,这确实使事情变得更加复杂。 关于保持简单肯定有话要说。

GogglesMM UI
GogglesMM对FOX 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确实在尝试避免重新采样,更改字长等。

答:是的,当我构建播放引擎时,我确保可以做您要完成的事情。

  • 目前,GogglesMM不会重新采样。 有一些实验代码,但是它不完整,通常不会启用。
  • GogglesMM将尝试将任何解码后的数据原样传递到其任何输出插件(ALSA,Open Sound System [OSS],PulseAudio),这意味着解码器支持的任何本机格式。 对于无损编解码器,通常意味着原始数据采用的格式。
  • 如果输出插件/设备不支持特定的音频位深度或数据类型,则播放引擎将尝试将其转换为兼容的插件(精度损失最少)。
  • 之后,音频将传递到Pulse,ALSA或OSS。 对于普通用户,PulseAudio往往很简单,但是可能会对音频进行一些转换。 最好的选择是ALSA。
  • 根据您配置的ALSA设备,ALSA可能会进行某种转换。 GogglesMM中有一个选项可以禁用ALSA重采样。 另一种方法是直接指定“硬件”设备,而不是“默认”或“插头”设备。 这似乎是准确获得所需内容的最佳方法。 有关其请参见ALSA的文档。
  • 每当音频格式或采样率发生变化时,GogglesMM都会根据需要重新配置其输出设备,并且播放应继续正常进行。 如果发生这种情况,曲目之间可能会略微保持沉默。 (我们必须等待所有样本播放完毕,然后停止播放,重新配置设备,然后再恢复播放。)
GogglesMM preferences selecting ALSA output
查看更高级的调整选项并设置输入设备。

问:不少开源音乐播放器都使用 ; 有人告诉我,除非音量改变或输出设备不支持采样率或字长,否则不一定会干扰比特流,但仍然令我感到紧张的是,它可能会摆弄“看不见的东西” ”,因为我不知道某些奇怪的配置问题。

答:这可能只是开发人员的懒惰! 添加重新采样器并即时进行格式转换和/或重新映射频道需要花费时间。 随着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/

你可能感兴趣的文章
Ubuntu菜鸟入门(五)—— 一些编程相关工具
查看>>
Codeforces 279D The Minimum Number of Variables 状压dp
查看>>
打分排序系统漫谈2 - 点赞量?点赞率?! 置信区间!
查看>>
valgrind检测linux程序内存泄露
查看>>
Hadoop以及组件介绍
查看>>
1020 Tree Traversals (25)(25 point(s))
查看>>
第一次作业
查看>>
“==”运算符与equals()
查看>>
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>