私は、いくつかのパターンを使用して連結された複数の他のビデオで構成されたビデオ(コンポジットビデオと呼ぶ)を持っています。一つのメイン、大きな、ビデオを:しかし、私はそれを異なって表示する必要が複数の同じビデオを表示<video>タグ
:たとえば、それぞれ2および他の4つのビデオ、作曲、以下のビデオのスクリーンショットを見ますN-1
ビデオのサムネイル。N
は動画の総数です。私は私の方が大きいのdivにしたいビデオを配置するHTMLとCSSの組み合わせを使用していますメインを表示するには
:ここでは上記の動画に対応し、この他の表示があります。コンポジットビデオのビデオの数に関係なく、スムーズに動作します。サムネイルを表示するには
、私は私がしたい部分を描画する<canvas>
を使用しています:
video.addEventListener('play', function() {
(function loop() {
drawThumbnails();
setTimeout(loop, 1000/30); // drawing at 30fps
})();
}, false);
function drawThumbnails() {
for (var i = thumbs.length - 1; i >= 0; i--) {
drawThumbnail(thumbs[i]);
};
}
function drawThumbnail(thumb) {
var thumbNumber = Number(thumb.id.match(/\d+/g));
var canvasContext = thumb.getContext('2d');
var thumbCoordinates = getVideoCoordinates(thumbNumber);
var srcX = thumbCoordinates.column * videoWidth;
var srcY = thumbCoordinates.row * videoHeight;
canvasContext.drawImage(
video, srcX, srcY, videoWidth, videoHeight, // Source
0, 0, thumb.width, thumb.height); // Destination
}
それは3(時には4)動画のためによく働いていました。しかし、コンポジットビデオのビデオの数が増えると、サムネイルのビデオが凍結して滑らかに動かなくなります。これはおそらく、あまりにも多くの画像処理が同時に行われているために起こります。
私はそれを行う適切な方法は、どういうわけか、<video>
とビデオのための特定の方法を使用して、イメージではないと思う。また、複数の<video>
タグ(サムネイルごとに1つ)に同じsrc
タグを使用しようとしましたが、eventListeners
を追加すると、メインビデオの再生/一時停止後にサムネイルでビデオを再生/一時停止します。これはあまり効率的ではありません。特に、ビデオのシーク/バッファリングが時々同期外れすることがあります。
複数の<video>
タグに1つのビデオしか使用しない方法はありますか(私の場合、メインビデオを含むもの)のみを使用して他のすべてを制御しますか?場合は、それを行う方法はありませんが、私の問題のための代替のアプローチはありますか?
どうもありがとう、
P.S.私の状況では、複数の別々のビデオを選ぶことはできません。入力ビデオを処理して複数のビデオに分割するには、非常に時間がかかります。
私は仕事でDOMを操作することができないので、Webワーカーは限られています。したがって、ボトルネックはメインスレッドに残ります。しかし、ありがとう! –