如何随机(和无缝)显示几个背景上的视频无尽的循环使用JavaScript

0

的问题

这里是我想要实现的:我有一堆的剪辑阵列,我想他们都是随机显示无缝地(使用预选项)作为背景的视频。 我花了一些代码,我找到另一个岗位,到目前为止,我已经能够做的第一个视频是随机选择的,但是然后他们其余的人继续显示在订单(如包括在阵列)。 你会如何修改这些代码这样他们所有人--不仅仅是第一个–是随机显示? 我想这应该是很容易解决这一问题的最你但我不是一个程序员,因此它将是巨大的,如果你能帮助我。 在此先感谢。 这是我目前代码:

    <script>
        var videoContainer = document.getElementById('videoContainer'),
            output = document.getElementById('output'),
            nextVideo,
            videoObjects =
            [
                document.createElement('video'),
                document.createElement('video')
            ],
            vidSources =
            [
                "clip1.mov",
                "clip2.mov",
                "clip3.mov",
                "clip4.mov",
            ],
            nextActiveVideo = Math.floor((Math.random() * vidSources.length));
            
        videoObjects[0].inx = 0; 
        videoObjects[1].inx = 1;

        initVideoElement(videoObjects[0]);
        initVideoElement(videoObjects[1]);

        videoObjects[0].autoplay = true;
        videoObjects[0].src = vidSources[nextActiveVideo];
        videoContainer.appendChild(videoObjects[0]);

        videoObjects[1].style.display = 'none';
        videoContainer.appendChild(videoObjects[1]);

        function initVideoElement(video)
        {
            video.playsinline = true;
            video.muted = false;
            video.preload = 'auto';

            video.onplaying = function(e)
            {
                nextActiveVideo = ++nextActiveVideo % vidSources.length;

                if(this.inx == 0)
                    nextVideo = videoObjects[1];
                else
                    nextVideo = videoObjects[0];

                nextVideo.src = vidSources[nextActiveVideo];
                nextVideo.pause();
            };

            video.onended = function(e)
            {   
                this.style.display = 'none';
                nextVideo.style.display = 'block';
                nextVideo.play();
            };
        }
    </script>
<body>
        <div id="videoContainer"></div>
</body>
video {
    object-fit: cover;
    width: 100vw;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
}
#videoContainer {
    display: inline-block;
}
arrays html5-video javascript preload
2021-11-14 12:49:13
1

最好的答案

0

也许在 video.onended,首先做 nextActiveVideo = Math.floor((Math.random() * vidSources.length)); 再次。

所以你可以accapet它:)

2021-11-15 13:48:16

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................