我正在 Web 应用程序中开发一项功能,该功能使用户能够使用连接到设备的任何相机拍照。这主要用于带有 Google Chrome v28+ 的 Android v4.0+ 手机。
在台式机和手机中,我都可以设置一个视频标签,以使用getUserMedia
和正确显示来自设备相机的视频createObjectURL
。我的问题是,当我尝试从视频元素中绘制快照时,没有任何内容被复制到画布上:
var oVideo = jQuery('#myVideo');
var oCanvas = jQuery('#myCanvas');
var oContexto = oCanvas[0].getContext("2d");
var nAncho = oVideo.width();
var nAlto = oVideo.height();
//resizes the canvas: css
oCanvas.width(nAncho);
oCanvas.height(nAlto);
//resizes the canvas: image resolution
oCanvas[0].width = nAncho;
oCanvas[0].height = nAlto;
oContexto.fillRect(20, 20, 40, 40);
oContexto.drawImage(oVideo[0], 0, 0, nAncho, nAlto);
oContexto.fillRect(80, 80, 40, 40);
我添加了这两个fillRect
只是为了确保代码正在执行。结果是正在绘制两个黑色矩形,但未绘制快照。
该问题仅在适用于 Android 的 Google Chrome v28 中出现,但在适用于 Windows 的 Google Chrome 28(和 Firefox 22)中正常工作。
它是谷歌浏览器的错误吗(我在http://code.google.com/p/chromium/中找不到它)?有解决办法吗?或者我只是做错了什么?
我将不胜感激任何见解,以帮助我了解正在发生的事情。