У меня есть элемент видео с наложением холста. Затем у меня есть настройка инструмента рисования, чтобы нарисовать видео и кнопку сохранения, которая делает drawImage как из видео, так и из холста, чтобы сохранить скомпилированный кадр. Однако, в первый раз, когда я нажимаю «Сохранить», я получаю результат только от холста drawImage, видео не отображается. При последующих Сэйвах я получаю оба изображения, правильно слоистые. Я подумал, что это может быть проблемой при загрузке видеоизображения, но видео полностью загружено, прежде чем я удалю по нему, и может даже продвигать кадры и работать с ним на втором сохранении.HTML5 Холст drawImage из видео, не показывающегося при первом розыгрыше
Вот код ...
<div style="width:960px; height:540px; display:inline-block;">
<video id="video" src="media/_tmp/AA_017_COMP_v37.mov" width="960" height="540" ></video>
</div>
<canvas id="canvas" width="960" height="540" style="position:absolute; top:40px; left:9px; z-index:100;"></canvas>
<input type="button" value="save" id="btn" size="30" onclick="save()" style="float:left; padding:4px; margin-right:4px;" >
<div id="saved" style="border:1px solid #000; position:absolute; top:626px; left:10px; bottom:40px; width:958px; overflow:auto;">SAVED:</div>
function save() {
//COMP CANVAS OVER VIDEOFRAME
var video = document.getElementById("video");
var currentFrame = Math.floor((<?php echo $mov_frames ?>/video.duration) * video.currentTime);
var compCanvas = document.createElement('canvas');
compCanvas.width = video.width;
compCanvas.height = video.height;
compContext = compCanvas.getContext('2d');
compContext.drawImage(video, 0, 0);
compContext.drawImage(canvas, 0, 0);
var dataURL = compCanvas.toDataURL();
$("#saved").append('<div style="width:954px; border-bottom:1px solid #000; padding:2px 2px 0 2px;"><img id="compFrame_'+currentFrame+'" width="180" height="90" src="'+dataURL+'" />Frame: '+currentFrame+'</div>');
}
Можете ли вы предоставить jsfiddle показывая проблему? – Oriol
Вот ссылка [jsFiddle] (http://jsfiddle.net/zL8KC/) Единственная проблема, которую я не знаю для jsFiddle, - это кросс-видеоролик, который не будет рисовать на холсте ... но никогда код отсутствует. –
Ваш код запускается только после загрузки DOM? – GameAlchemist