我有一个视频(让我们称之为复合视频)由多个其他视频连接使用某种模式组成。例如,请参见下面的视频的屏幕截图,由通过两个和四个其它影片,分别为:显示多个相同的视频<video>标签
然而,我需要不同地显示它:一个主要的,更大,视频和N-1
视频缩略图,其中N
是视频的总数。下面是对应于视频高于这个其他显示:
要显示我使用的HTML和CSS的组合,我想要的视频位置在较大DIV为主。无论合成视频中的视频数量如何,它都能流畅运行。
要显示缩略图,我使用<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>
标记中使用相同的src
标记(每个缩略图一个标记),并添加eventListeners
以在主视频播放/暂停后播放/暂停缩略图中的视频。这不是非常有效,特别是因为在寻找/缓冲时,视频有时会失去同步。
是否有一种方法只使用多个<video>
标签中的一个视频,并只使用其中的一个(在我的情况下,包含主视频的视频)来控制所有其他视频?如果没有办法做到这一点,是否有替代方法来解决我的问题?
非常感谢,
附:在我的情况下,拥有多个分开的视频不是一种选择。处理输入视频并将其分成多个视频需要很长时间。
Web工作人员受到限制,因为我无法在其任务上操作DOM。因此,主线仍然存在瓶颈。但是,谢谢! –