代码之家  ›  专栏  ›  技术社区  ›  Joshua Carmody

Android体系结构或API中是否存在阻止人们创建读嵌入式歌词的MP3播放器的功能?

  •  2
  • Joshua Carmody  · 技术社区  · 14 年前

    当我播放某些MP3文件(例如 JapanesePod101.com )在我的iPod touch上,MP3文件中嵌入的歌词或文字记录将显示在媒体播放器中。我相信歌词在MP3元数据中存储为ID3/ID4标签。

    我发现这是一个非常有用的特性,我相信我并不孤单。尽管如此,无论是股票安卓媒体播放器还是我从市场上下载的任何其他媒体播放器似乎都不支持这一点。我只是找不到任何方法来获取我的NexusOne的功能。

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

    我已经问过这个问题了 Android Enthusiasts Stack Exchange Beta Site 但回想起来,我觉得这更像是一个编程问题,我觉得最好在这里提问。

    3 回复  |  直到 12 年前
        1
  •  3
  •   Kevin Coppock    14 年前

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

    ID3v2.3似乎支持通过标题的sylt和uslt帧同步和非同步歌词。我认为这只是一个未充分利用的特性,不值得尽最大努力去做。购买的MP3不携带这些信息(我一直想知道为什么不携带?),所以它们必须手动添加(或者通过一个LyricServiceAPI自动添加,但这涉及到更多的编码)。

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

        2
  •  1
  •   Chris Stratton    14 年前

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

    所以可能需要写一些东西,它自己做MP3解码。

    这很可能需要在本机代码中完成。另一方面,在Android上,音频输出(除非你使用OpenGL,视频显示)几乎必须从Java完成。因此,您正在查看一个相当数量的工作,用本地库解码数据,然后将其发送给Java进行回放和显示。

    所以回答你的问题-有可能吗?一定地

    Android API使它变得容易吗?-不是真的

        3
  •  1
  •   Luke    12 年前

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

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