当我在iPod Touch上播放某些MP3文件(例如来自JapanesePod101.com的课程)时,嵌入在MP3文件中的歌词或抄本会显示在媒体播放器中。我相信,歌词在MP3元数据中存储为ID3 / ID4标签。
我发现这是一个非常有用的功能,我相信我并不孤单。尽管如此,Android媒体播放器和我从市场上下载的任何其他媒体播放器似乎都不支持这一点。我一直无法找到任何方法来获取我的Nexus One功能。
这个功能对我来说非常重要,我正在考虑学习Android开发,所以我可以编写一个简单的媒体播放器,显示嵌入的歌词或笔记。然而,似乎没有其他人这样做的事实让我想知道 - 它甚至可能吗? Android架构或API中是否存在难以或无法从MP3文件中读取和显示歌词信息的内容?我不想深入学习过程并找出我的内容瞄准不容易做到。 (我的意思是,如果所有其他方法都失败了,我认为我可以编写自己的MP3解码器,但这比我现在愿意经历的更麻烦。)
我已经在Android Enthusiasts Stack Exchange Beta Site上问了这个问题,但回想起来我觉得这更像是一个编程问题,并决定最好在这里问一下。
答案 0 :(得分:3)
是的,绝对是一个编程问题。根据我阅读ID3规范的简短经验,我认为解码ID3标签可能只是一个完整的PITA。我确信它可以完成,因为有适用于Android的MP3标签编辑应用程序(无论是否有任何支持歌词,我不知道)。
ID3v2.3似乎通过标头的SYLT和USLT帧支持同步和非同步歌词。我想这只是一个未充分利用的功能,大多数人都不值得努力。购买的MP3不包含这些信息(我一直想知道为什么不这样做?),所以他们必须手动添加(或通过歌词服务API自动添加,但是涉及的代码要多得多)。
Here是ID3v2.3规范,如果你想进一步研究它......(放弃希望所有进入这里的人)
答案 1 :(得分:1)
问题可能是大多数人都会使用内置的mp3播放机制,这既不支持歌词显示,也不容易与其他进行歌词显示的内容保持同步。
所以可能需要编写一些可以自己进行mp3解码的内容。
这很可能是希望在本机代码中完成的。另一方面,在Android上,音频输出(除非你使用opengl,视频显示)几乎必须从java完成。因此,您正在寻找相当多的工作来使用本机库解码数据,然后将其分发以便从java进行回放和显示。
所以回答你的问题 - 有可能吗?绝对
Android API是否易于使用? - 不是真的
答案 2 :(得分:1)
我刚刚添加了一项新功能请求,可以让Android支持在ID3标记中读取USLT。这将使本机和第三方音乐播放器能够显示歌词。如果您需要此功能,请在下方提出请求,并发表您的意见。