2013-02-12 92 views
0

我能夠使用公共流媒體API從Grooveshark流式傳輸歌曲。 我用jPlayer(jplayer.org)使用它,它正確地播放歌曲。Grooveshark公共流媒體API與jPlayer

但問題是,在Firefox(查了最新版本)的歌曲不斷從00:00提高到全曲長度的充分時間。基本上整首歌曲的持續時間爲是緩衝的歌曲數量

例如, 一首長度爲04:00的歌曲分鐘開始緩衝。現在,當它緩衝歌曲的季度(即01:00分鐘),jPlayer將歌曲持續時間顯示爲01:00分鐘,而它應該是04:00分鐘。

截圖:(這首歌打了總長度05:06分鐘)

http://i.stack.imgur.com/wzxPx.png

在谷歌瀏覽器(在最新版本檢查)歌曲的整個持續時間顯示 jplayer表明,即使從歌曲開始,整首歌曲都會被緩衝。

截圖:(鉻顯示,整首歌被緩衝,但它仍然是緩衝)

http://i.stack.imgur.com/PSkct.png

jPlayer首先使用HTML5和回落到閃存如果不支持HTML5。 Google Chrome支持使用HTML5播放mp3(Grooveshark流是一個mp3)。 但Firefox不支持HTML5中的mp3。

所以很明顯,Firefox使用的是Flash,而Chrome使用的是HTML5

現在我要解決的問題是: -

  • 獲取歌曲的整個持續時間在Firefox和保持一切喜歡它。
  • 在Chrome中保留歌曲的全部時間並顯示正確的歌曲緩衝量。

所有這些應該是可能的,因爲grooveshark網站本身也使用相同的stream.php文件。

Grooveshark也提供它自己的Flash播放器,但它沒有足夠的功能,特別是它不是HTML5。

如果jPlayer無法實現,那麼請給我一個更好的選擇,它支持HTML5並且適用於流媒體。

+0

看看http://stackoverflow.com/questions/13170411/audio-element-with-controls-trackbar-not-moving類似問題 – Baba 2013-02-12 08:13:09

+0

@Baba我沒有控制stream.php,因爲它是在Grooveshark的結局。 當我檢查Firebug中的stream.php的標頭時, Content-Length的標頭已經設置。 – 2013-02-12 08:40:56

回答

0

Grooveshark有時候可以做的一件事就是獲取歌曲的當前長度並將其除以加載的百分比。除了可能的VBR文件之外,這會給你一個很好的估計文件的實際持續時間。您也可以嘗試查看ID3標籤。

+0

謝謝詹姆斯。我使用這些方法,並且Javascript無法讀取ID3標籤,因爲該鏈接是跨域。使用PHP,我只能通過將歌曲通過curl臨時下載到本地目錄然後獲取ID3標籤來獲取ID3標籤。這種方法長期來看不會有好處。當試圖使用currentLength/percentLoaded方法。這不會返回一個確切的值,並且相差0-6秒。 Grooveshark API中是否有任何方法可以返回歌曲持續時間,或者將來是否可以使用這種方法? – 2013-02-13 12:13:24

+0

好的問題。我正在檢查currentLength/percentLoaded方法的文件是VBR,正如你所說的,它不適用於VBR文件。檢查了Grooveshark.com上的同一首歌,並且時間也顯示在那裏。 CBR文件工作正常。標記爲正確答案...非常感謝!如果Grooveshark API返回歌曲持續時間和其他歌曲信息來解決VBR文件的這個問題,那將會更好。 – 2013-02-15 09:35:55

+0

不幸的是,我們沒有在後端的歌曲持續時間。對於某些文件,我們可以估計持續時間,以及我們何時可以使用估計持續時間。您應該從API獲取我們有估計持續時間的文件。 – 2013-02-16 20:10:34