javascript - 使用 Javascript 将图像序列转换为视频

标签 javascript html css

我有 7 张图片,每张图片有 25 帧。我需要做的是逐帧浏览每个图像并将其显示为视频,可以通过播放、暂停和停止按钮控制。

我能做的是制作一个视频播放器,我可以轻松地导入视频并在其中播放、暂停、停止。我已经设计好了,但不知道如何从图像列表制作视频。

您可以在这些 URL 中查看图像:

- http://storage.googleapis.com/alyo/assignments/images/0.jpg - http://storage.googleapis.com/alyo/assignments/images/6.jpg

我们将不胜感激。

最佳答案

您可以使用 javscript setTimeout() 方法和像这样的 div 元素来实现它:

var left = 0;
            var top = 0;
            var minLeft = -512;
            var minBottom = -288;
            var xDecrement = 128;
            var yDecrement = 72;
            var myImage = document.getElementById("myImage");
            var imgIndex = 0;
            let imageList = ['http://storage.googleapis.com/alyo/assignments/images/0.jpg','http://storage.googleapis.com/alyo/assignments/images/6.jpg'];
            var playbackStates = {"INIT":0, "RUNNING": 1 , "PAUSE":2};
            var activeState = playbackStates.INIT;
    
            myImage.style.backgroundPositionX = "0px";
            myImage.style.backgroundPositionY = "0px";
            var timerHandler = null;
            var play = function(){
                
                if(timerHandler){
                    clearTimeout(timerHandler);
                    if(activeState === playbackStates.PAUSE){
                        return;
                    }
                }
    
                timerHandler = setTimeout(function(){
                    let pos =parseFloat(myImage.style.backgroundPositionX.replace("px",""));
                    myImage.style.backgroundPositionX = ( pos - xDecrement) + "px";  
                    if(pos <= -512){
                        myImage.style.backgroundPositionX ="0px";
                        pos =parseFloat(myImage.style.backgroundPositionY.replace("px",""));
                        myImage.style.backgroundPositionY = ( pos - yDecrement) + "px";
                        if(pos <= -288){
                            myImage.style.backgroundPositionY = "0px";
                            imgIndex ++;
                            if(imageList.length <= imgIndex) return;
                            myImage.style.backgroundImage = "url("+imageList[imgIndex]+")";
                        }
                    }
                    play();
                }, 160)
            
            };
            
            myImage.style.backgroundImage = "url("+imageList[imgIndex]+")";
            play();
            activeState = playbackStates.RUNNING;
            
            function pause(){
                activeState = playbackStates.PAUSE;
            }
    
            function resume(){
                activeState = playbackStates.RUNNING;
                play();
            }
<div style="width:128px;height:72px;" id="myImage"></div>
<input type="button" onclick="pause()" value="Pause"/>
<input type="button" onclick="resume()" value="Resume"/>

您可以将所有图片 url 添加到“imageList”数组中,还可以通过修改超时间隔来调整速度。

关于javascript - 使用 Javascript 将图像序列转换为视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101399/

相关文章:

javascript - JavaScript 的完整铁路/语法图

javascript - jQuery append 问题

javascript - getPixelFromCoordinate 返回 null

css - 我如何将 css 应用于元素的内部级别?

javascript - ReadAsDataURL() 不起作用

css - 如何将此 CSS 转换为 SASS(选择器中的算术)?

javascript - 将参数传递给 url 时转义 JavaScript 中的正斜杠

html - 覆盖继承的@media 查询

html - "fa fa-commenting"和 "fa fa-user-plus"这两个类不起作用

css - Shinydashboard:使 sidebarPanel 覆盖在 mainPanel 上