Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

491
Visualizações
Video HTML5: pausa cuando llega a la mitad del video

Objetivo: el videoclip consta de 2 partes: la primera mitad del contenido es la reproducción hacia delante, la segunda mitad es la primera mitad hacia atrás. El video se reproduce cuando se pasa el mouse por encima y luego se detiene en la mitad de la etapa. En el mouseout n.º 1, si se detiene a mitad de camino, se reanuda y se reproduce hasta el final: n.º 2, si se retira el mouse antes de que se detenga, saltará a la marca de tiempo correspondiente en la segunda mitad y se reproducirá, por ejemplo, si el video es de 10 segundos y el mouse se encuentra en la marca de 3 segundos. saltará a 7 segundos y reproducirá desde allí hasta el final. Consulte Fiddle para ver un ejemplo aproximado:

https://jsfiddle.net/cucocreative/1n3Lyqd5/422/

o vea este sitio para lo que estamos tratando de replicar:

https://www.polestar.com/uk/polestar-2/ (primera sección debajo del banner de héroe)

Fiddle tiene la última versión del código (no a continuación).

 var myVideo=document.getElementById("video"); var halfway=0; document.getElementById("halfway").innerHTML=halfway; function Rewind() { var duration = video.duration; var currentTime = video.currentTime; var jumpto = duration - currentTime; var pause = duration/2; document.getElementById("jumpto").innerHTML=jumpto; myVideo.currentTime = jumpto; myVideo.play(); } function Play() { if (myVideo.paused) var duration = video.duration; var pause = duration/2; document.getElementById("pause").innerHTML=pause; myVideo.play(); this.on('timeupdate', function () { console.log(this.currentTime()); }); } $("#video").on( "timeupdate", function(event){ var duration = video.duration; var pause = duration/2; onTrackedVideoFrame(this.currentTime, this.duration); // Pause when hit the halfway stage // check to see if halfway yet // can't get the below to play nice with the rewind function if(this.currentTime >= pause) { //this.pause(); //var halfway = 1; //document.getElementById("halfway").innerHTML=halfway; } }); function onTrackedVideoFrame(currentTime, duration){ $("#current").text(currentTime); //Change #current to currentTime $("#duration").text(duration) }

Después de muchos callejones sin salida, descubrí el efecto de rebobinado y puedo hacer una pausa en la etapa intermedia, PERO cuando ambos bloques de código están juntos, no funcionan bien juntos, así que he comentado el código de pausa por el momento ( ver líneas 36-40).

No puedo descifrar la lógica para obtener la función de rebobinado para saber si el video ha llegado a estar en pausa todavía.

Entonces, actualmente, siempre que mueva el mouse hacia afuera antes de la marca de 2 segundos, funciona, después de eso necesito ayuda.

actualización: pensé que poner una declaración if en la línea 12 para verificar si el tiempo actual es> = que la duración funcionaría, pero no lo es.

 if(this.currentTime >= pause) { myVideo.currentTime = pause; } else { myVideo.currentTime = jumpto; }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Me las arreglé para conseguir que una solución aproximada funcionara, aunque probablemente necesite un poco de ajuste.

HTML

 <div style="text-align:center" onmouseenter="Play()" onmouseleave="Rewind()"> <video id="video" onended="onVideoEnd()" class="video" width="480"> <source src="https://www.cucostaging.co.uk/side-reversed.mp4" type="video/mp4" /> Your browser does not support HTML5 video. </video> </div>

Guion

 //var myVideo=document.getElementById("video"); const myVideo = document.getElementById('video') var status = 'STOP' // STOP | PLAY | REWIND function Rewind() { var currentTime = myVideo.currentTime; var duration = myVideo.duration; myVideo.currentTime = duration - currentTime; status = 'REWIND' myVideo.play(); } function Play() { var currentTime = myVideo.currentTime; var duration = myVideo.duration; let tempCurrent = status === 'STOP' ? 0 : duration - currentTime; myVideo.currentTime = tempCurrent; status = 'PLAY' myVideo.play(); setTimeout(() => { if(status === 'PLAY') myVideo.pause()}, (2 - tempCurrent) * 1000) } function onVideoEnd() { status = 'STOP' }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda