2017-04-17 48 views
4

使用WebVTT插入文件,爲的MediaPlayer音軌我有一個.m3u8的URL(軌道)和.vtt URL(用於跟蹤詳細信息)。 我正在開發一個收音機,每個軌道的細節都附帶.vtt文件。如何在Android的

所以我的問題是我如何可以同步在MediaPlayer兩個軌道url和.vtt網址。

我的收音機播放的不錯,但我無法獲得曲目的詳細信息。

問:什麼是需要使用.vtt的文件?

Ans。因爲收音機包含無限的歌曲,每首歌都有自己的細節。這就是爲什麼需要同步軌道及其細節。

這是我的.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 
... 
... 

如果有誰知道怎麼樣了,請回答。

在此先感謝。

回答

0

MediaPlayer沒有很好的支持這一點。考慮ExoPlayer

+0

我試圖Exoplayer它說,它的支持,但我沒有得到與音軌(.m3u8格式)字幕的任何〔實施例。如果你有,那麼請給我。 –

0

我同意,這是很好的落實ExoPlayer。你可以看到支持的格式 這裏:

https://google.github.io/ExoPlayer/supported-formats.html

您可以跟進開發人員指南。這有點令人困惑,但實際上很容易繼續前進。不要忘了看看演示應用程序的源代碼:

https://github.com/google/ExoPlayer/blob/release-v2/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java

+0

我沒有看到任何使用外部WebVTT URL播放的示例。 在此示例中,它具有支持HLS的視頻,其中有字幕但位於跟蹤URL(.m3u8)內部,而不是外部。您能否提供任何播放音樂的示例,以及來自URL的WebVTT同步。 –

2

如果.vtt文件將是一致的,我想你只需要解析的跟蹤VTT文件中沒有,開始 - 結束時間,歌曲,藝術家和縮略圖網址。然後,您可以輕鬆實現trak細節之間的同步。

+0

是的,從所有的解決方案失敗後,我只是手動解析它。 它解析成功,但我仍然遇到問題。我嘗試通過步驟解釋問題.....第1步:創建處理程序,而MediaPlayer開始播放,然後啓動該處理程序....第2步:從媒體播放器獲取當前位置,並將其發送到我的課,解析它之前和根據當前的位置它給我的軌道的標題和藝術品。但問題在步驟2中提出,即收音機開始播放第二首曲目後,媒體播放器將我作爲當前位置返回0,然後我的解析器再次給出相同標題 –

+0

不知道我是否理解正確,但是「MediaPlayer.getCurrentPosition()」返回播放位置,而不是曲目號碼。所以你應該實施你自己的解決方案來跟蹤跟蹤號碼。一個簡單的解決方案是創建一個自定義類作爲軌道列表處理程序,它將保留可用軌道的列表,並且媒體播放器將請求來自該類的下一個軌道。 – koray1396