我正在尝试使用带有此代码的画布在浏览器中从 HTML5 视频中生成一组缩略图:
var fps = video_model.getFps(); //frames per second, comes from another script
var start = shot.getStart(); //start time of capture, comes from another script
var end = shot.getEnd(); //end time of capture, comes from another script
for(var i = start; i <= end; i += 50){ //capture every 50 frames
video.get(0).currentTime = i / fps;
var capture = $(document.createElement("canvas"))
.attr({
id: video.get(0).currentTime + "sec",
width: video.get(0).videoWidth,
height: video.get(0).videoHeight
})
var ctx = capture.get(0).getContext("2d");
ctx.drawImage(video.get(0), 0, 0, video.get(0).videoWidth, video.get(0).videoHeight);
$("body").append(capture, " ");
}
捕获的数量是正确的,但问题是在 Chrome 中所有画布都显示为黑色,而在 Firefox 中它们总是显示相同的图像。
也许问题是循环太快而无法绘制画布,但我读到 .drawImage() 是异步的,因此,理论上,它应该让画布在跳转到下一行之前被绘制。
关于如何解决这个问题的任何想法?谢谢。