2013-02-12 90 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