Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我怎样才能毫不延迟地循环webm视频?_Javascript_Html_Loops_Video_Webm - Fatal编程技术网

Javascript 我怎样才能毫不延迟地循环webm视频?

Javascript 我怎样才能毫不延迟地循环webm视频?,javascript,html,loops,video,webm,Javascript,Html,Loops,Video,Webm,大家好,我想从桌面(从pc)在浏览器中运行webm视频。现在,我用我找到的.js文件循环了webm: // ==UserScript== // @name Webm Looper // @namespace com.whatisthisimnotgoodwithcomputers.webmlooper // @author WhatIsThisImNotGoodWithComputers // @description A userscript which autom

大家好,我想从桌面(从pc)在浏览器中运行webm视频。现在,我用我找到的.js文件循环了webm:

// ==UserScript==
// @name        Webm Looper
// @namespace   com.whatisthisimnotgoodwithcomputers.webmlooper
// @author      WhatIsThisImNotGoodWithComputers
// @description A userscript which automatically enables looping on Webm videos in your browser.
// @include       *.webm
// @run-at      document-start
// @version     1.0
// @grant       none
// ==/UserScript==

var vids = document.getElementsByTagName("video");
for (i = 0; i < vids.length; i++) 
 vids[i].setAttribute("loop", "true");
webm在第一次运行后停止

javascript设置显示video.play();不是一个函数,与addeventlistener相同

也许你能帮我解决这个问题。我能改进什么?我是否需要安装其他设备或进行更改

不幸的是,我只是一个编程新手

提前谢谢


关于

您需要做的是跟踪
currentTime
属性(您可以使用
timeupdate
事件进行跟踪),当它接近结束时(
duration
属性),您可以将其重置回开始

在下面的示例中,它使用
loadedmetadata
事件来了解脚本的持续时间,并启动视频播放,将侦听器连接到
timeupdate
,然后跟踪
currentTime

<html>
<head>
<title>Video Looper Page</title>
</head>
<body>

<video id="video" muted preload="metadata" controls>
    <source src="video.mp4" type="video/mp4" />
</video>

<script>
video = document.getElementById("video")
video.addEventListener("loadedmetadata",init)

function init() {
    video.removeEventListener("loadedmetadata",init)
    video.play()
    video.addEventListener('timeupdate', 
        funcloop=function(){
            if (video.currentTime >= (video.duration - 1)) {
                video.currentTime = 1;
                video.play()
            }
        }, false);
    }
</script> 

</body>
</html>

视频活套页面
视频=document.getElementById(“视频”)
video.addEventListener(“loadedmetadata”,init)
函数init(){
video.removeEventListener(“loadedmetadata”,init)
视频播放()
video.addEventListener('timeupdate',
funcloop=函数(){
如果(video.currentTime>=(video.duration-1)){
video.currentTime=1;
视频播放()
}
},假);
}
第二个版本,演示如何使用setInterval控制循环。允许更小的测试间隔

<html>
<head>
<title>Video Looper Page</title>
</head>
<body>

<video id="video" muted preload="metadata" controls>
    <source src="video.mp4" type="video/mp4" />
</video>

<script>
video = document.getElementById("video")
video.addEventListener("loadedmetadata",init)

function init() {
    video.removeEventListener("loadedmetadata",init)
    video.play()
    t = setInterval(looper, 100);
}

function looper() {
    console.log(video.currentTime);
    if (video.currentTime >= (video.duration - 0.1)) {
        video.currentTime = 0.2;
        video.play()
    }
}

</script> 
</body>
</html>

视频活套页面
视频=document.getElementById(“视频”)
video.addEventListener(“loadedmetadata”,init)
函数init(){
video.removeEventListener(“loadedmetadata”,init)
视频播放()
t=设定间隔(活套,100);
}
函数活套(){
console.log(video.currentTime);
如果(video.currentTime>=(video.duration-0.1)){
video.currentTime=0.2;
视频播放()
}
}

有没有不使用
标记本身的
循环
属性的原因?原因是延迟。如果视频再次以代码的循环属性开始,则会有一个小的延迟,但它不起作用。代码看起来很合理D我已经在greasemonkey中复制了代码,greasemonkey已启用,并且正确的脚本处于活动状态。我必须激活一些东西吗?它在Chrome中可以工作-请看-为什么你要在Greasemonkey中运行它,而不是将其保存为网页并在浏览器中打开?如果我这样做了,那么它在Firefox/Safari中也能工作(由于某些原因,它们不能在小提琴中工作),在这个例子中,视频被命名为explicit。我可以运行这个吗?在这个示例中,视频名为explicit。source src=”“我可以在任何视频中运行此功能,还是每次都必须更改源?浏览器只打开视频文件而不打开代码中的其他内容是否正确。我只想在浏览器中查看视频。对于“初学者”的问题,我很抱歉。我希望你继续帮助我如何将此保存为网页,以便我只需双击桌面上的视频打开它,然后它就可以运行?我很高兴再次得到答复D
<html>
<head>
<title>Video Looper Page</title>
</head>
<body>

<video id="video" muted preload="metadata" controls>
    <source src="video.mp4" type="video/mp4" />
</video>

<script>
video = document.getElementById("video")
video.addEventListener("loadedmetadata",init)

function init() {
    video.removeEventListener("loadedmetadata",init)
    video.play()
    t = setInterval(looper, 100);
}

function looper() {
    console.log(video.currentTime);
    if (video.currentTime >= (video.duration - 0.1)) {
        video.currentTime = 0.2;
        video.play()
    }
}

</script> 
</body>
</html>