Nodejs从CouchDBstreamvideo,并显示在video标签

我正在尝试使用NodeJS中的纳米中间件从CouchDBstream式传输video。 video在浏览器上收到。 我不知道如何在客户端上传输它,以及如何在HTML标签中显示它。

这里是我的NodeJS代码来读取从我从这里find的CouchDB的附件:

if (req.headers.range) { var stream = db.attachment.get(docid, docname, {Range: req.headers.range}); stream.on('response', function(response) { var start = req.headers.range.replace(/bytes=/, "").split("-")[0]; var end = response.headers['content-length']; res.writeHead(206, { 'ETag': response.headers.etag, 'Content-Range': 'bytes ' + start + "-" + (end - 1) + '/' + end, 'Accept-Ranges': 'bytes', 'Content-Length': end - start, 'Content-Type': response.headers['content-type'] }); }); } else { stream = db.attachment.get(docid, docname); } stream.pipe(res); stream.on('end', function() { res.end(); }); 

在客户端,我的ajax调用如下所示:

 jQuery.ajax({ url: '/getvideoattachment/?id=' + this.id + "&name=" + videoname, contentType: 'video/webm', type: 'GET', headers : { "Range" : 'bytes=0-3200' }, processData : false, success: function(content) { var oMyBlob = new Blob([content], { "type" : "video\/webm" }); var docURL = window.URL.createObjectURL(oMyBlob); var elVideo = document.getElementById("videoid" ); elVideo.addEventListener("load", function (evt) { window.URL.revokeObjectURL(docURL); }); elVideo.setAttribute("src", docURL); }, error : function(content) { Em.Logger.info('Model:', this.id, 'has no image', err); return ''; } }); 

在HTMLvideo标签是这样的:

 <video controls id="videoid" > <source src="" type="video/webm" /> </video> 

我不确定Blob是否是将videostream式传输到Video标记的正确方法。 我应该如何将stream添加到video标签?

编辑:

你是对的brianchirls。 有用! 我已经设置了videourl。 但是我在video标签中得到的是这样的:

 <video controls="" id="videoa" class="visible" data-bindattr-7="7"> <source src="/getvideoattachment/?id=a26de29ded4e33ad47205187f4000f46&amp;name=c.webm" data-bindattr-8="8" type="video/webm"> </video> 

但是当我点击播放它不播放video。 但是,当我点击从检查元素的链接,它在新的浏览器窗口播放video。

这个解决scheme几乎在那里。

@brianchirls的答案已经帮助。

通过改变video标签的src属性而不是源标签启动videostream。

谢谢!