如何在Android中使用WebVTT文件与MediaPlayer播放音频轨道

4
我有一个.m3u8 URL(用于音轨)和一个.vtt URL(用于音轨详情)。我正在开发一款Android收音机应用,其中每个音轨的详细信息都由.vtt文件提供。
我的问题是如何在MediaPlayer中同步音轨URL和.vtt URL。
我的收音机正常播放,但我无法获得音轨的详细信息。
问:为什么需要使用.vtt文件?
答:因为电台包含无限的歌曲,每首歌曲都有自己的详细信息。因此需要同步音轨及其详细信息。
以下是我的.vtt文件结构。
WEBVTT

1
00:00:00.000 --> 00:03:22.176
NOW PLAYING: <b>Don&#39;t Go</b> - Jon Tarifa
NOTE https://play.unplug.de/images/artwork.php?id=113043444&w=400

2
00:03:22.176 --> 00:06:28.725
NOW PLAYING: <b>Treat You Better</b> - Shawn Mendes
NOTE https://play.unplug.de/images/artwork.php?id=112983776&w=400

3
00:06:28.725 --> 00:09:46.954
NOW PLAYING: <b>Used To Have It All</b> - Fais &amp; Afrojack
NOTE https://play.unplug.de/images/artwork.php?id=113044015&w=400

4
00:09:46.954 --> 00:13:45.330
NOW PLAYING: <b>Hurts</b> - Emeli Sandé
NOTE https://play.unplug.de/images/artwork.php?id=113029897&w=400
...
...

如果有人知道如何做,请回答。

提前致谢。

3个回答

2
如果.vtt文件是一致的,我认为您只需要解析vtt文件以获取曲目编号、起始-结束时间、歌曲、艺术家和缩略图url。然后,您可以轻松地实现曲目细节和曲目之间的同步。

在尝试了所有解决方案失败后,我只能手动解析它。 它成功解析了,但仍然存在问题。我尝试通过以下步骤来解释问题.....第1步:创建处理程序,并在MediaPlayer开始播放时启动该处理程序....第2步:从Media Player获取当前位置并将其发送到之前解析过的类中,根据当前位置,它会向我发送该曲目的标题和艺术品。但问题出现在第2步,即当电台开始播放第二首曲目时,媒体播放器将0作为当前位置返回给我,然后我的解析器再次给出相同的标题。 - Vishal Chhodwani
我不确定我是否理解正确,但是'MediaPlayer.getCurrentPosition()'返回的是播放位置,而不是曲目编号。因此,您应该实现自己的解决方案来跟踪曲目编号。一个简单的解决方案是创建一个自定义类作为曲目列表处理程序,它将保持可用曲目的列表,并且媒体播放器将从该类请求下一个曲目。 - koray1396

0

MediaPlayer并不具备良好的支持。考虑使用ExoPlayer


我尝试了Exoplayer,它说支持字幕,但我没有找到任何带有音轨的字幕示例(.m3u8格式)。如果您有,请发送给我。 - Vishal Chhodwani

0

我没有看到任何播放外部WebVTT URL的示例。 在这个样例中,它支持HLS视频并带有字幕,但是在Track URL(.m3u8)内部而不是外部。请问您能否提供一个播放音乐并从URL同步WebVTT的示例? - Vishal Chhodwani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接