【发布时间】:2011-05-20 14:11:54
【问题描述】:
我正在尝试设置一个 Web 服务器,该服务器将支持使用 node.js 将视频流式传输到 HTML5 视频标签。到目前为止,这是我的代码:
var range = request.headers.range;
var total = file.length;
var parts = range.replace(/bytes=/, "").split("-");
var partialstart = parts[0];
var partialend = parts[1];
var start = parseInt(partialstart, 10);
var end = partialend ? parseInt(partialend, 10) : total-1;
var chunksize = (end-start)+1;
response.writeHead(206, { "Content-Range": "bytes " + start + "-" + end + "/" + total, "Accept-Ranges": "bytes", "Content-Length": chunksize, "Content-Type": type });
response.end(file);
“request”代表 http 请求,type 是“application/ogg”或“video/ogg”(我都试过了),“file”是从文件系统读取的 .ogv 文件。以下是响应标头:
Content-Range bytes 0-14270463/14270464
Accept-Ranges bytes
Content-Length 14270464
Connection keep-alive
Content-Type video/ogg
我检查了响应标头,这段代码似乎工作正常,但有几个问题:
- 由于在本地网络上,视频加载速度似乎很慢。据我所知,使用 firebug 检查响应,文件似乎以大约 150 kb/秒的速度流入。
- 视频根本无法播放。即使我等待整个加载,HTML 5 视频标签也只会显示一个大的“x”而不是 Firefox 中的电影。
有没有人知道我可以做些什么来让视频流通过 node.js 工作?
谢谢!
克里斯
【问题讨论】: