1
私はキャンバスで新しく、私は数時間グーグルで行ってきましたが、私は立ち往生しています。HTML5キャンバス(動画)要素を細かく分割する
私がしたいのは、キャンバス要素にビデオをレンダリングし、分割し、アニメーション化することです。私は途中でそこにいます(参照:http://jsbin.com/riduxadazi/edit?html,css,js,console,output)が、私が質問のカップルしている:私は物事を正しく
- をやっている、またはこれがめちゃめちゃ非効率的ですか?
- 私はビデオのフルスクリーンを使用したいと思います。私が試してみると、キャンバスグリッド+ビデオはサイズに合っていないようです。
- 動画のアニメーションを作成したいと思いますが、どのように対処するべきかわかりません。何らかの並べ替えをして、1つ1つずつアニメーションすることはできますか?
My JSはこのように見えます。私は最も重要な部分にコメントを追加しようとしました。少なくとも、私が最も重要な部分だったと思う何;)
var video = document.getElementById('video'); // Get the video
var ctx = canvas.getContext('2d'),
columns = 6,
rows = 4,
w, h, tileWidth, tileHeight;
// Start video and add it to canvas
video.addEventListener('play', function() {
var $this = this; //cache
(function loop() {
if (!$this.paused && !$this.ended) {
ctx.drawImage($this, 0, 0,window.innerWidth,window.innerHeight);
calcSize(); // Divide video
setTimeout(loop, 1000/30); // drawing at 30fps
}
})();
}, 0);
function calcSize() {
video.width = w = window.innerWidth;
video.height = h = window.innerHeight;
tileWidth = w/columns;
tileHeight = h/rows;
ctx.strokeStyle = '#000';
render();
}
function render() {
for(var x = 0; x < columns; x++) {
ctx.moveTo(x * tileWidth, 0);
ctx.lineTo(x * tileWidth, h);
}
for(var y = 0; y < rows; y++) {
ctx.moveTo(0, y * tileHeight);
ctx.lineTo(w, y * tileHeight);
}
ctx.stroke();
}
今、あなたはビデオの上にグリッドを描いていますか?実際に動画を分割するには、セルの座標を[drawImage](https://developer.mozilla.org/ja/docs/Web/API/CanvasRenderingContext2D/drawImage)のクロッピングオプションで使用する必要があります。 – Kaiido