我video
在主窗口的一个元素中播放了一段视频。我想用 JavaScriptcavas
在一个窗口中显示视频。open()
(原始video
元素将被隐藏,但仍将负责播放声音。)
我正在这样做。
<video id='video' style='display: none;' autoplay>
<source src="http://media.w3.org/2010/05/sintel/trailer.mp4" type='video/mp4' />
<source src="http://media.w3.org/2010/05/sintel/trailer.webm" type='video/webm' />
<source src="http://media.w3.org/2010/05/sintel/trailer.ogv" type='video/ogg' />
</video>
我打开一个新窗口并创建一个canvas
元素。timeupdate
然后我在主窗口中为视频的每个事件添加一个回调。当它运行时,我将当前的视频帧复制到画布上。
video.addEventListener("play", function() {
var child = open("/echo/html/", "width=" + video.videoWidth + ",height=" + video.videoHeight);
child.addEventListener("load", function() {
var canvas = child.document.createElement("canvas"),
g2d = canvas.getContext("2d");
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
child.document.body.appendChild(canvas);
video.addEventListener("timeupdate", function() {
g2d.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
});
});
});
你可以在 jsfiddle 上看到这个工作,但它运行不顺畅。似乎timeupdate
每次帧更改时都不会调用函数。它很少被调用。
如何在外部窗口中以完整质量显示视频?