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
フレームが変わるたびに関数が呼び出されるわけではないようです。あまり頻繁に呼び出されません。
外部ウィンドウにビデオをフル品質で表示するにはどうすればよいですか?