2012-03-31 21 views
8

Estoy tratando de usar el reproductor sin bordes de Youtube a través de la API JS y tengo problemas con la función seekto().Jugador de Youtube API JS seekTo function no funciona

El problema es que a veces (no puedo decir cuando surge el problema), llamando a la función seekTo() hacia atrás a un punto en el video que no está cargado no regresa y permanece en el tiempo actual.

Esto es lo que hago (imagino que el vídeo es de 240 segundos de longitud):

  1. comienzo a jugar un video -> loadVideoById().
  2. Avanzo hacia (digamos) la mitad del video -> seekTo (120)
  3. El video salta correctamente a la posición que solicité.
  4. trato de mover hacia atrás el tiempo al 25% del video -> seekTo (60)
  5. veces el video salta de nuevo a 60, pero más a menudo que sólo se remonta a 120.

Por lo tanto, es ¿Alguien más tiene este problema?

+0

Tengo este problema exacto. – wilsonpage

+0

+1. La sugerencia de Jimmery no lo corta. Parece que solo falla después de buscar una posición remota, después de que YouTube tiene que iniciar un nuevo buffer. – guidupuy

Respuesta

4

Publicar un código nos ayudará a ayudarlo, pero ha intentado player.seekTo(60, true); - el segundo parámetro es importante - establecerlo en verdadero hará que el jugador envíe una nueva solicitud al servidor para el video.

0

Tuve el mismo problema que usted ha descrito. Lo que descubrí es que si consultas la API por la duración del video y luego buscas la ubicación hacia atrás, parece que funciona.

Por ejemplo, esta es mi prueba:

var duration = ytplayer.getDuration(); 
ytplayer.seekTo(0, true); 

Me demostró que siempre vuelve a la posición inicial.

0

Tengo el mismo problema, pero ninguna de estas soluciones funcionó para mí. Terminé usando esto para conseguir que funcione con el visor de HTML 5 (Chrome y Firefox)

function onPlayerStateChange(event) { 
    if (event.data == YT.PlayerState.PLAYING){ // for Chrome and Firefox to "restart" properly 
     var ct = player.getCurrentTime(); 
     var dur = player.getDuration(); 

     if (ct > (dur-.5)){ 
      player.seekTo(0, true); 
     } 
    } 
} 
0

Atención, en el documento se dice:

"El jugador avanzará al fotograma clave más cercano antes de ese momento a menos que el jugador ya haya descargado la parte del video al que el usuario busca. En ese caso, el jugador avanzará al fotograma clave más cercano antes o después del tiempo especificado según lo dictado por el método seek() del reproductor Flash. Objeto NetStream. (Consulte la documentación de Adobe para obtener más información). "

https://developers.google.com/youtube/js_api_reference?hl=fr#seekTo

Cuestiones relacionadas