0

我可以使用公共流 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 并且适合流式传输。

4

1 回答 1

0

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

于 2013-02-12T20:21:27.457 回答