【问题标题】:Grooveshark Public Streaming API with jPlayer带有 jPlayer 的 Grooveshark 公共流 API
【发布时间】:2013-02-12 08:04:36
【问题描述】:

我可以使用公共流 API 从 Grooveshark 流式传输歌曲。 我将它与 jPlayer(jplayer.org) 一起使用,它可以正确播放歌曲。

但问题是 在 Firefox 中(查看最新版本)歌曲的完整持续时间不断从 00:00 增加到完整的歌曲长度。基本上完整的歌曲持续时间是歌曲缓冲的数量

例如长度为 04:00 分钟的歌曲开始缓冲。现在,当它缓冲了歌曲的四分之一(即 01:00 分钟)时,jPlayer 将歌曲持续时间显示为 01:00 分钟,而它应该是 04:00 分钟。

屏幕截图:(播放的歌曲总长度为 05:06 分钟)

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

在谷歌浏览器中(检查最新版本)显示歌曲的完整时长,jplayer 显示整首歌曲甚至从歌曲开始就被缓冲.

截图:(Chrome显示整首歌曲已缓冲但仍在缓冲中)

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

jPlayer 首先使用 HTML5,如果 HTML5 不支持,则回退到 Flash。 Google Chrome 支持使用 HTML5 播放 mp3(Grooveshark 流是一种 mp3)。 但是 Firefox 不支持 HTML5 中的 mp3。

所以很明显 Firefox 使用的是 flash 而 Chrome 使用的是 HTML5

现在我要解决的问题是:-

  • 在 Firefox 中获得完整的歌曲时长,并保持其他所有内容不变。
  • 在 Chrome 中保留歌曲的完整时长并显示缓冲的正确歌曲量。

所有这些都应该是可能的,因为grooveshark网站本身也使用相同的stream.php文件。

Grooveshark 也提供了自己的 Flash 播放器,但它没有足够的功能,特别是它不是 HTML5。

如果 jPlayer 无法实现,请向我推荐一个更好的替代方案,它支持 HTML5 并且适合流式传输。

【问题讨论】:

  • @Baba 我无法控制 stream.php,因为它位于 Grooveshark 的末尾。当我在 Firebug 中检查 stream.php 的标头时,已经设置了 Content-Length 的标头。

标签: php html streaming jplayer grooveshark


【解决方案1】:

Grooveshark 有时可以做的一件事是获取歌曲的当前长度并将其除以加载的百分比。这将使您对文件的实际持续时间有一个很好的估计,除了可能的 VBR 文件。您也可以尝试查看 ID3 标签。

【讨论】:

  • 谢谢詹姆斯。我使用了这些方法,Javascript 无法读取 ID3 标签,因为链接是跨域的。使用 PHP,我只能通过 curl 将歌曲临时下载到本地目录,然后获取其 ID3 标签来获取 ID3 标签。这种方法不会长期好。当尝试使用 currentLength/percentLoaded 方法时。这不会返回精确值,并且相差 0-6 秒。 Grooveshark API 中有没有可以返回歌曲时长的方法,或者将来有可能有这样的方法?
  • 好的,有问题了。我检查 currentLength/percentLoaded 方法的文件是 VBR,正如你所说,它不适用于 VBR 文件。在 Grooveshark.com 上检查了同一首歌曲,并且持续时间在那里也显示错误。 CBR 文件工作正常。标记为正确答案...非常感谢!如果 Grooveshark API 返回歌曲持续时间以及其他歌曲信息以解决 VBR 文件的这个问题,那就更好了。
  • 很遗憾,我们在后端没有歌曲时长。对于某些文件,我们有持续时间的估计,我们什么时候可以使用估计的持续时间。您应该从 API 中获取我们估计持续时间的文件。
猜你喜欢
  • 1970-01-01
  • 2018-08-18
  • 2010-12-12
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2015-10-12
相关资源
最近更新 更多