Cuando llamo manualmente:
player.currentTime = player.duration (1) El video currentTime salta al final (deseado y esperado)
(2) El video comienza a reproducirse desde el principio cuando hago clic en reproducir (deseado y esperado)
(3) El video no se actualiza para mostrar el último cuadro (no deseado e inesperado)
Actualmente, tengo que hacer esto:
player.currentTime = player.duration - 0.0001 player.play()Lo que hace que el video salte cerca del final y luego reanuda la reproducción y luego se detiene casi inmediatamente cuando llega al final, lo que soluciona mi problema porque el video ahora muestra el último cuadro.
Sin embargo, esto se siente un poco extraño y no puede ser tan rápido como simplemente configurar la hora actual. ¿Hay una mejor solución? Gracias
NOTA: la operación de búsqueda para finalizar debe ser compatible con la ejecución de código programático (p. ej., ejecución de código en respuesta a un clic de botón). NO estoy usando la barra de búsqueda / fregado incorporada de los jugadores (que funciona bien).
Creo que encontré la respuesta, en la configuración de firefox player.currentTime = player.duration activa el evento "finalizado", por lo tanto, el video finaliza (sin espacio al final de la barra de búsqueda).
Pero en Chrome es diferente, en la configuración de Chrome player.currentTime = player.duration no activará el evento "finalizado" y hay una pequeña brecha al final de la barra de búsqueda (creo que esto es a lo que se refería). Enlace a mi prueba jsfiddle .
TL: DR El buen viejo problema del proveedor
Además, configurar player.currentTime = player.duration + 99999 en Chrome no activa el evento "finalizado" y la barra de búsqueda todavía tiene un espacio al final.
Entonces, el trabajo actual para este error es
stopButton.addEventListener('click', () => { player.currentTime = player.duration player.play() // trick for chrome }) // to verify player.addEventListener('ended', (e) => console.log(e.target.ended ? "ended" : "not ended"))Este código funciona tanto en Firefox como en Chrome y los resultados son exactamente los mismos.