2012-11-09 48 views
0

我想捕捉和上传HTML5视频标签的缩略图,我想捕获和HTML5视频标签上传缩略图

这里是我的代码

var w = 135;//video.videoWidth * scaleFactor; 
    var h = 101;//video.videoHeight * scaleFactor; 
    var canvas = document.createElement('canvas'); 

    canvas.width = w; 
    canvas.height = h; 
    var ctx = canvas.getContext('2d'); 
    ctx.drawImage(_video, 0, 0, w, h); 
    canvas.toDataURL("image/jpg"); 
    var blob = canvas.msToBlob(); 

我得到这个例外“对象#有没有一种方法'msToBlob'“在铬浏览器。 任何人都可以帮忙,这里有什么不对?

回答

0

这是因为chrome还不支持toBlob方法。我检查了每晚的建筑物,看不到它。

它被讨论here一段时间,但没有什么脱落,并且Firefox仍在等待案件被更好地定义。

总而言之,chrome不支持这个功能,我认为它只在ie9中支持,所以最好不要在生产站点上使用它。

其他建议,如果你试图存储屏幕抓取的画布是maby探索使用canvas.toDataURL();然后将其存储为base64。

对不起,这不是一个更好的结果你

要看到最新的Chrome浏览器检查:

http://code.google.com/p/chromium/issues/detail?id=67587

+0

,但它也不适用于Android和iOS6的所有浏览器 – AzharTheGreat

+0

对不起,你可以澄清你的意思是它也无法在其他浏览器上工作,你是否仍然在谈论toBlob或toDataUrl –

+0

实际上,我想从移动投影html5上传视频到我的服务器,用户选择视频文件并按下上传按钮。 我正在使用mstoBlob,但我得到了同样的错误, – AzharTheGreat

0

ms代表微软,所以msToBlob将只可在IE中。其他浏览器(支持一次)也可能为其加上前缀(webkitToBlob),并最终切换到前缀前缀(toBlob

即使您使用各种前缀检查了支持,但支持仍然受限。 相反,你可以使用toDataURL返回编码的URI一个base64,你可以作为一个img元素的src属性使用:

var b64 = canvas.toDataURL("image/jpg"); 
//later... 
thumbnailImg.src = b64;