我正在尝试设置一个网络服务器,该服务器将使用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/14270464 Accept-Ranges bytes Content-Length 14270464 Connection keep-alive Content-Type video/ogg
我已经检查了响应头,并且此代码似乎运行良好,但是存在两个问题:
是否有人对我可以通过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”);
众所周知,谷歌浏览器会先发出0-1024范围的请求,然后再请求“ 1024-”范围。
response.end(file.slice(start,chunksize),“ binary”);
然后:
通过将“连接”标头设置为“关闭”,我能够使视频在Firefox中正常播放
似乎您在错误地计算内容长度: var chunksize =(end-start)+1; 如果开始为0,结束为1,则您的chunksize为2,应为1。
似乎您在错误地计算内容长度:
var chunksize =(end-start)+1;
如果开始为0,结束为1,则您的chunksize为2,应为1。