通过node.js使用HTML 5进行视频流传输
我正在尝试设置一个网络服务器,该服务器将使用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请求,类型是“ application / ogg”或“ video / ogg”(我都尝试过),而“
file”是已从文件系统读取的.ogv文件。这是响应头:
Content-Range bytes 0-14270463/14270464Accept-Ranges bytes
Content-Length 14270464
Connection keep-alive
Content-Type video/ogg
我已经检查了响应头,并且此代码似乎运行良好,但是存在两个问题:
- 该视频在本地网络上的加载速度似乎非常慢。据我所知,使用Firebug检查响应时,文件似乎以约150 kb / sec的速度流传输。
- 该视频完全无法播放。即使我等待整个加载,HTML 5视频标签也只会显示一个大的“ x”,而不是firefox中的电影。
是否有人对我可以通过node.js进行视频流传输有什么想法?
谢谢!
克里斯
回答:
我可以在nodejs论坛的一些帮助下使它起作用:
http://groups.google.com/group/nodejs/browse_thread/thread/8339e0dc825c057f/822b2dd48f36e890
Google网上论坛主题集锦:
众所周知,谷歌浏览器会先发出0-1024范围的请求,然后再请求“ 1024-”范围。
response.end(file.slice(start,chunksize),“ binary”);
然后:
通过将“连接”标头设置为“关闭”,我能够使视频在Firefox中正常播放
然后:
似乎您在错误地计算内容长度:
var chunksize =(end-start)+1;
如果开始为0,结束为1,则您的chunksize为2,应为1。
以上是 通过node.js使用HTML 5进行视频流传输 的全部内容, 来源链接: utcz.com/qa/421180.html