通过带有HTML5 <audio>标签的stream式MP3文件进行search

希望有人能帮我解决这个问题。

我正在玩一个将audiostream到客户端的node.js服务器,我想创build一个HTML5播放器。 现在,我使用分块编码从节点stream式传输代码,如果直接访问URL,则效果很好。

我想要做的就是使用HTML5 <audio>标签embedded,如下所示:

 <audio src="http://server/stream?file=123"> 

其中/stream是节点服务器stream式传输MP3的端点。 HTML5播放器在Safari和Chrome中加载正常,但它不允许我寻求,Safari甚至说这是一个“直播”。 在/stream的头文件中,我包含文件大小和文件types,并且响应正常结束。

有关如何解决这个问题的任何想法? 我当然可以立即发送整个文件,但是这个播放器会一直等到整个文件被下载 – 我宁愿把它stream出来。

确保服务器接受范围请求,您可以检查Accept-Ranges是否在标题中。 在jPlayer中,这是Webkit(尤其是Chrome)浏览器在进步和寻求function方面的常见问题。

您可能不会使用jPlayer,但官方网站上的服务器响应信息可能有用。

http://www.jplayer.org/latest/developer-guide/#jPlayer-server-response

看看这里http://www.scottandrew.com/pub/html5audioplayer/ ,我用这个,它在下载文件的时候播放。 它稍微等待缓冲区,然后播放。 从来没有尝试过寻求,但我会开始尝试在代码中设置“aud.currentTime”,如果可以做到的话。

祝你好运

你发送一个Accept-Ranges( RFC 2616,Section 14.5)响应头吗?

根据我的理解,您希望播放器允许用户跳转到尚未缓冲的audio/video的某些部分,例如Vimeo / YouTube播放器所做的事情。Tbh我不确定这是否可行,因为我已经看了一些HTML5中间元素的例子,他们只是不允许我寻求无缓冲部分:(

如果你想通过缓冲部分寻找 – 那么这不是一个问题。 事实上 – 就我所知,你正在为自己创造一个问题。 你想传输文件,这样做会让玩家觉得你有某种直播。 如果你只是直接发送文件 – 你不会有这个问题,因为播放器将能够加载整个文件之前开始播放。 这与audio和video元素都正常工作,我已经在Chrome和FF中证实了这一行为:)

希望这可以帮助!

也许这个html5audio播放器的例子将解释和展示我们新的元素和它的.load,.play,.currentTime等方法。

我使用一个元素的数组,并可以设置currentTime当然位置。 我们也可以使用eventhandlers(例如'loadeddata')在允许查找之前等待。

ping和html5的乐趣:)

但是我有同样的问题。 它需要为媒体文件响应设置一些标题。

例如:

 Accept-Ranges:bytes Content-Length:7437847 Content-Range:bytes 0-7437846/7437847 

然后audio标签将能够寻求