2

当我在我的 iPod Touch 上播放某些 MP3 文件(例如来自JapanesePod101.com的课程)时,嵌入在 MP3 文件中的歌词或脚本会显示在媒体播放器中。我相信歌词是作为 ID3/ID4 标签存储在 MP3 元数据中的。

我发现这是一个非常有用的功能,我相信我并不孤单。尽管如此,库存的 Android 媒体播放器和我从 Market 下载的任何其他媒体播放器似乎都不支持这一点。我只是无法找到任何方法来获得我的 Nexus One 的功能。

这个功能对我来说非常重要,我正在考虑学习 Android 开发,这样我就可以编写一个简单的媒体播放器来显示嵌入的歌词或注释。然而,似乎没有其他人这样做的事实让我想知道——这甚至可能吗?Android 架构或 API 中是否存在使从 MP3 文件中读取和显示歌词信息变得困难或不可能的东西?我不想深入学习过程并找出我的目标是不容易做到的。(我的意思是,如果一切都失败了,我假设我可以编写自己的 MP3 解码器,但这比我现在愿意经历的麻烦更多)。

我已经在Android Enthusiasts Stack Exchange Beta Site上问过这个问题,但回想起来,我认为这更像是一个编程问题,并决定在这里问更好。

4

3 回答 3

3

是的,绝对是一个编程问题。仅从我阅读 ID3 规范的简短经验来看,我认为可能只是解码 ID3 标签是一个完整的 PITA。我确信可以做到,因为有适用于 Android 的 MP3 标签编辑应用程序(是否支持歌词,我不知道)。

ID3v2.3 似乎通过标头的 SYLT 和 USLT 帧同时支持同步和不同步的歌词。我想这只是一个未被充分利用的功能,以至于大多数人不值得为此付出努力。购买的 MP3 不携带此信息(我一直想知道为什么不?),因此必须手动添加它们(或通过歌词服务 API 自动添加,但其中涉及更多编码)。

如果您想进一步研究,这里是 ID3v2.3 规范......(放弃希望所有进入这里的人)

于 2010-11-24T21:16:05.773 回答
1

问题可能是大多数人会使用内置的mp3播放机制,这可能既不支持歌词显示,也很容易与其他做歌词显示的东西保持同步。

所以可能需要写一些东西来做它自己的 mp3 解码。

这很可能希望在本机代码中完成。另一方面,在android上,音频输出(除非你使用opengl,视频显示)几乎必须从java完成。因此,您正在寻找大量工作来使用本机库解码数据,然后将其分派以从 java 播放和显示。

所以回答你的问题 - 有可能吗?确实

android API 让这件事变得简单吗?- 并不真地

于 2010-11-24T21:37:43.440 回答
1

我刚刚添加了一个新的功能请求,它将为 Android 提供读取 ID3 标签中的 USLT 的支持。这将使本地和第 3 方音乐播放器能够显示歌词。如果您想要此功能,请在下面的请求中加注星标,并发表您的评论。

http://code.google.com/p/android/issues/detail?id=32547

于 2012-06-02T06:28:37.333 回答