Java音乐播放器:歌曲信息和播放[关闭]

2024-04-03

在Android中,我们可以使用媒体播放器在设备上播放歌曲,并使用光标来获取曲目信息(操作系统跟踪的信息)。我的问题是,这些的 Java 等价物是什么?

注意:我见过有人提到JavaFX,但是默认情况下它似乎没有随JVM一起安装,因此我的程序将不再是跨平台的。

有什么建议么?

注意:这些都是本地文件,尽管它们可以是任何音频文件类型。


我将提供有关 Java 音乐播放器的 JavaFX 相关解决方案的信息,因为我认为这是用于此任务的一项很好的技术。

支持的平台和格式

它们可以是任何音频文件类型。

JavaFX 支持的音频类型记录在javafx.scene.media javadoc http://docs.oracle.com/javafx/2/api/javafx/scene/media/package-summary.html。 JavaFX 2.2 支持的格式是各种容器中的 MP3、AAC 和 PCM,例如 mp3、mp4 和 wav 文件。不支持 Ogg Theora 等其他格式 - 因此,如果您需要此类格式,您将需要与 JavaFX 2.2 不同的解决方案。

我看到有人提到 JavaFX,但是默认情况下它似乎没有随 JVM 安装,因此我的程序将不再是跨平台的

由于 Java 7 update 6 和 JavaFX 2.2 在 OS X、Windows 和 Linux 上运行,因此默认情况下,JavaFX 随 Oracle Java 运行时一起安装。目前还没有在移动平台上运行 JavaFX 的广泛可用的解决方案(尽管将来可能会改变)。

有关在 Java 7 中使用 JavaFX 的更多信息,请参阅我的回答使用 JavaFX 2.1 编译并运行 https://stackoverflow.com/questions/10888367/compiling-and-running-with-javafx-2-1以及JavaFX 部署指南 http://docs.oracle.com/javafx/2/deployment/jfxpub-deployment.htm.

获取轨道信息(操作系统跟踪的信息)

大多数曲目信息实际上编码在媒体文件中,而不是操作系统数据库中。你可以检索元数据 http://docs.oracle.com/javafx/2/api/javafx/scene/media/Media.html#getMetadata%28%29来自 JavaFX 播放的媒体文件。支持从媒体文件中解析有限数量的元数据,如媒体文档 http://docs.oracle.com/javafx/2/api/javafx/scene/media/package-summary.html。请注意,并非所有媒体都包含所有元数据。我测试过来自亚马逊的免费 mp3 文件 https://rads.stackoverflow.com/amzn/click/com/B005NVXSGO并能够成功地从中提取大量元数据。来自 iTunes 的测试 aac 编码 m4a 文件的元数据大部分为空。因此结果取决于所使用的媒体文件。

示例播放器

我创建了一个示例音乐播放器 https://gist.github.com/jewelsea/1446612在 JavaFX 中播放目录中的音频文件,显示每首歌曲的元数据。

java2s也托管媒体播放器的来源 http://www.java2s.com/Code/Java/JavaFX/Mp3playerwithmetadataviewandcontrolpanel.htm由作者创建Pro JavaFX 2 书 http://www.apress.com/9781430268727/。这可能是比我的代码更好的参考,因为我的代码是一个快速破解,而专业源代码来自一本专业出版的书籍。

其他问题

对于我们这些在 Linux 上不使用 Oracle JRE 的人有什么建议吗?

Oracle JRE 可在 Linux 上使用,但如果您不想使用它,您可以构建openjfx https://wiki.openjdk.java.net/display/OpenJFX/Main for openjdk http://openjdk.java.net/并使用它,或者您可以使用 Oracle JRE 开发您的应用程序并使用 JavaFX 打包工具将其作为独立的应用程序 http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm所以它没有外部 JRE 依赖性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java音乐播放器:歌曲信息和播放[关闭] 的相关文章

随机推荐

  • 使用速记运算符进行类型转换

    byte b 12 b gt gt 2 Why is this legal why does it automatically typecasts b b gt gt 2 Why is this illegal if the above i
  • 如何使用 C/C++ 写入/创建大于 2GB 的文件

    我尝试使用 write 函数将一大块内存写入文件 超过 2GB 但从未成功 有人可以好心告诉我该怎么做吗 假设是 Linux https users suse com aj linux lfs html https users suse c
  • 如何在 Flutter 中添加图标的增加/配置粗细/粗体(FontWeight)

    我的 Flutter 应用程序中有一个图标 具体是后退图标 它看起来更轻 我想出于某种原因让它变得大胆 增加重量 Container child Icon Icons arrow back color Color 0xffffffff pa
  • 在jquery中获取选定tr的td值

    下面是我的桌子 table tr class chargeTR td charge1 td td charge2 td tr table 下面是我的 jQuery 调用 chargeTR each function this line wo
  • 跨域ajax请求后保留cookie

    一个 JavaScript 应用程序运行在10 0 0 1尝试通过跨域 ajax 调用来验证其用户 该请求如下所示 function test again ajax type GET url http example com userinf
  • 简单框架:重复注释(不同的命名空间)

    我有一个 Rss 提要 我想使用简单框架在 Java 中解析它 我遇到了两个同名元素的问题 但其中一个元素分配了命名空间 下面是一个 xml 示例
  • ActionScript 3 分析器和内存分析工具

    我正在使用 Adob e Flash CS 4 想知道是否有可用的分析器或内存分析工具 动作脚本 3 我知道有适用于 Flex 的工具 但是有适用于 Flash CS 4 的工具吗 谢谢 我确信那里有一个程序 仍在寻找我自己 但我 大多数
  • 如何从 Angular2 和 ng-bootstrap 组件中的 NgbTabSet 访问“select”方法?

    使用 Angular 2 3 1 和 ng bootstrap 1 0 0 alpha 18 我正在尝试以编程方式根据组件中的 ID 而不是模板内的 ID 选择选项卡 目标是从 url 中提取参数并使用它来选择 ngOnInit 中的选项卡
  • 在 Javascript 中从本地数据保存文件

    场景如下 用户来到我的网站并打开一个带有一些 JavaScript 功能的网页 用户通过javascript编辑数据 用户单击保存按钮来保存数据 事情是 他们似乎不需要下载这些数据 因为它已经在本地计算机上的 JavaScript 中 是否
  • 用于检测 .NET CF 3.5 并安装它的 Windows Mobile Cab 设置

    我使用 NET CF 3 5 等目标框架和 professional 6 SDK 开发了 windows mobile 6 professional 应用程序 还创建了其 SmartDeviceCab 文件 当我将其安装在没有 CF 3 5
  • 如何控制.NET SoapFormatter中的命名空间?

    我正在编写一些需要向后兼容使用 SOAP 序列化某些对象的现有远程处理代码的代码 我的困难是我必须将一些对象移动到新程序集 因此远程处理被破坏 例如 我使用 NET SoapFormatter 序列化一个对象 如下所示 Person p n
  • vim 正则表达式用于替换引号内的空格

    我有以下格式的文本 ERR OUT OF MEM ERR OUT OF MEM ERR SOMETHING BAD ERR SOMETHING BAD 我想用下划线替换文本中引号内的所有空格 ERR OUT OF MEM ERR OUT O
  • MVVM 最佳实践:视图模型之间的通信

    我的简化程序结构如下所示 public class Manager public Item MyItem get set public void Recalculate public class Item public string Som
  • 每对观测值的马氏距离

    我正在尝试计算数据集的每个观测值之间的马哈拉诺比斯距离dat 其中每行是一个观察值 每列是一个变量 该距离定义为 我写了一个函数来做到这一点 但我觉得它很慢 在 R 中是否有更好的方法来计算它 生成一些数据来测试该功能 generateDa
  • 这个正则表达式不应该发生灾难性的回溯

    有人可以解释为什么 Java 的正则表达式引擎会在此正则表达式上进入灾难性的回溯模式吗 据我所知 每个交替都与其他每个交替相互排斥 s s Text p o de a car itaucard mastercard platinum SUS
  • 如何在Python 3.6中执行2个协程

    我无法让两个协程在我的 Python 3 6 程序中并行执行 这是一个例子 import asyncio time def main loop asyncio get event loop loop run until complete s
  • 查找C++静态初始化顺序问题

    我们遇到了一些问题静态初始化顺序惨败 http www parashift com c faq lite static init order html 并且我正在寻找方法来梳理大量代码以查找可能发生的情况 关于如何有效地做到这一点有什么建议
  • Cypher 查询 JSON 格式的结果

    在演员 电影演示图上 cypher 在单独的数组中返回列名称 MATCH n Person RETURN n name as Name n born as Born ORDER BY n born LIMIT 5 results colum
  • Mysql查询查找具有相同列值的字段之和

    我有一张这样的桌子 id invent id order 1 95948214 70 2 46018572 30 3 46018572 20 4 46018572 50 5 36025764 60 6 36025764 70 7 95948
  • Java音乐播放器:歌曲信息和播放[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在Android中 我们可以使用媒体播放器在设备上播放歌曲 并使用光标来获取曲目信息 操作系统跟踪的信