Код ниже, кажется, работает для меня.Единственное изменение - вызов функции setTimeout должен иметь оболочку для правильной передачи параметров в IE.Демонстрации в http://html5doctor.com/video-canvas-magic/, кажется, прекрасно работают с этим изменением.
document.addEventListener('DOMContentLoaded', function () {
var v = document.getElementById('video');
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var cw = Math.floor(canvas.clientWidth);
var ch = Math.floor(canvas.clientHeight);
canvas.width = cw;
canvas.height = ch;
v.addEventListener('play', function () {
draw(this, context, cw, ch);
}, false);
}, false);
function draw(v, c, w, h) {
if (v.paused || v.ended) return false;
c.drawImage(v, 0, 0, w, h);
setTimeout(function(){ draw(v, c, w, h) }, 20);
}