【问题标题】:Node.js and HTML5 AudioNode.js 和 HTML5 音频
【发布时间】:2011-03-11 23:03:33
【问题描述】:

我正在尝试让我的 node.js 服务器为 HTML5 音频标签提供音频文件。目前我正在通过 express staticProvider 引用音频文件,但这将允许声音播放一次,然后再也不会播放。

根据我收集到的信息,为了让声音在搜索或循环中正常工作,我需要在请求我的音频文件时提供“Content-Range”标头。我非常怀疑 express staticProvider 是否为我执行此操作,因此我似乎需要使用自定义代码来提供文件。不幸的是,我对 node.js 还很陌生,像提供文件这样的东西仍然有点超出我的能力。谁能就如何为我的音频文件提供适当的元数据提供一些建议?

[编辑](删除旧的服务器代码,因为它不会对任何人有任何好处!)

抱歉,我通常不会问这么广泛的问题,但我真的不知道从哪里开始。有什么建议吗?

[解决方案]

因此,解决方案似乎只是使用更新的软件。我尝试使用 express 而不是内置的 connect HTTP 中间件,因为我认为 connect 没有正确地提供静态文件服务。事实证明,我只是在查看更新版本的 connect 的文档,而 node 附带的版本有点旧。一旦我更新了我的连接库(我只是使用 npm 来安装最新的,对于那些好奇的人),下面的效果很好:

var connect = require('connect');
var server = connect.createServer(
    // If your server errors on this line, saying it doesn't know what 
    // "static" is you need to get the latest connect!
    connect.static(__dirname + '/public')
);
server.listen(PORT);

【问题讨论】:

    标签: node.js html5-audio


    【解决方案1】:

    静态服务逻辑由底层连接服务器完成(使用其静态中间件)。有“Content-Range”标头的代码(请参阅here,关于第 148 行),但这些标头仅在底层客户端(在您的情况下,浏览器的 HTML5 实现)发送正确的请求标头时设置。

    也许来自 google 群组的 this post 可以帮助您。主题略有不同(视频流),但我认为问题的核心大致相同。

    【讨论】:

    • 我一直在阅读那篇文章并根据它拼凑出我能做的事情。不过,进展缓慢。不过,感谢您将我指向静态中间件!我什至没有想过要去看那里,回想起来这似乎很愚蠢。
    • 啊哈!这就是解决方案! node.js 中包含的连接中间件很旧,并且没有您指出的 Content-Range 代码。通过安装更新​​版本的连接,我能够让它工作!谢谢!
    • 这是在像 node.js 这样快节奏的环境中开发的诅咒/祝福;)很高兴我为您指明了正确的方向!
    猜你喜欢
    • 2011-09-29
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多