2010-05-09 82 views
22

希望有人能帮助我解决这个问题。通过HTML5流媒体MP3文件寻找<audio>标签

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

我希望做的是嵌入此使用HTML5 <audio>标签,就像这样:

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

其中/stream是节点服务器以流的MP3端点。 HTML5播放器在Safari和Chrome中加载正常,但它不允许我寻找,而Safari甚至说它是“直播”。在/stream的标题中,我包含文件大小和文件类型,并且响应正常结束。

有关如何解决此问题的任何想法?我当然可以立即发送整个文件,但是玩家会一直等到整个文件被下载 - 我宁愿将它下载。

+0

我也想这样做,但我发现的是,这仅由OGG和M4A格式的支持。所以我不确定这是可能的。但我仍在寻找。 – 2011-09-16 16:05:52

回答

2

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

好运

1

你发送接受-范围(RFC 2616, Section 14.5)响应头?

+1

也许我原来的问题并不太清楚:我只是想在视频的缓冲部分寻找,所以现在不需要字节范围请求。 – 2010-05-13 16:17:21

-1

从我了解你想要的球员,允许用户跳转到音频的部分/视频中的避风港”还没有缓存,就像Vimeo/YouTube的玩家所做的那样。Tbh我不确定这是否可能,因为我已经看过一些html5内侧元素的例子,他们只是不允许我寻求无缓冲的部分:(

如果你想通过缓冲部分寻找 - 那么这不是一个问题。事实上 - 你是就我所知,在这里为自己造成一个问题。你想传输文件,这样做会让玩家认为你有某种直播。如果你只是直接发送文件 - 你不会有这个问题,因为播放器将能够加载整个文件之前开始播放。这对于音频和视频元素都可以正常工作,并且我已经在Chrome和FF中确认了这种行为:)

希望这有助于您!

+0

由于本地策略,我无法直接向客户端播放器提供文件。当我重新开始播放或寻求开始时,没有新的请求正在进行,它从缓冲中播放。我无法在其他地方寻找。 – Qwerty 2015-05-07 08:55:59

-1

也许这html5 audio player example将解释和展示我们新元素及其.load,.play,.currentTime等方法。

我使用一个元素数组,并可以设置currentTime当然位置。 我们也可以使用事件处理程序(例如'loadeddata')在允许寻找之前等待。

ping和有乐趣HTML5 :)

5

确保服务器接受范围请求,你可以检查,看看是否Accept-Ranges是在头中。在jPlayer中,这是Webkit(特别是Chrome)浏览器在进步和寻求功能方面的常见问题。

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

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

+0

感谢您指出jplayer - 不敢相信我之前没有听说过它 – acatalept 2012-04-16 14:17:31

+0

非常棒!像魅力一样工作。 Seek并非在Chrome上工作,而是在Firefox和Safari上工作。在头中添加了接受范围,并开始寻找工作。 – 2015-02-02 02:05:42

-2

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

为例:

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

然后音频标签将能够寻求