我将提供有关 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 依赖性。