Нашел проблему, надо дожидаться пока видео загрузится (хотя бы первый кадр) и все манипуляции надо производить уже после этого:
var v = document.createElement('video');
var canv = document.createElement('canvas');
v.setAttribute('src',el.src);
v.addEventListener('loadeddata',function() {
canv.setAttribute('height','300');
canv.setAttribute('width','300');
var context = canv.getContext("2d");
context.drawImage(this, 0, 0, 300,300);
var dataURL = canv.toDataURL();
}
Так что все четко работало, фото из нихрена, выглядит как нихрена. А если подождать пока повится первый кадр - соответственно будет первый кадр.