2 votes

VideoJS currentTime() retourne toujours 0

Je utilise videoJs pour charger une vidéo dans une plateforme administrateur construite en react. J'ai configuré le lecteur ici :

else if (contentSource == 'arclight'){
  var options = {
    height:'216',
    sources :[{
    //src: this.state.video.url,
  //  type: 'video/mp4'
  }]
  }
  var player = videojs('player',options,function onPlayerReady() {
    videojs.log('Votre lecteur est prêt !');
  })
  this.setState({
    player:player,content: contentSource
  });
}

Ma vidéo est affichée dans cette balise :

Pour visionner cette vidéo, veuillez activer JavaScript et envisagez 
de passer à un navigateur web qui
 prend en charge la vidéo HTML5 

et enfin, j'essaie d'obtenir le temps actuel de la vidéo qui est en cours de lecture dans cette méthode

handleCurrentButton(inputId, event){
  event.preventDefault();
  var timeMark =0;
  if(this.state.content == 'vimeo'){
    this.state.player.getCurrentTime().then(function(seconds){console.log(seconds)
      timeMark=seconds;
      VideosActions.updateVideoAttribute(inputId, timeMark);
  }).catch(function(error){
  });
}
  else if(this.state.content == 'youtube') {
    timeMark = Math.round(this.state.player.getCurrentTime());
    VideosActions.updateVideoAttribute(inputId, timeMark);
}

else {
//  timeMark = this.state.player.currentTime();
  console.log(this.state.player.currentTime())
  VideosActions.updateVideoAttribute(inputId, timeMark);
}
}

Le problème est que l'appel player.currentTime() retourne toujours 0. Les deux autres getCurrentTime pour Vimeo et Youtube fonctionnent bien. Quelle est la raison derrière cela ? J'ai essayé de fournir suffisamment de contexte autour de ce problème pour que vous puissiez le résoudre. Merci pour votre aide d'avance !

1voto

Ryan Tuosto Points 150

Le problème est que getCurrentTime() renvoie une promesse, donc vous devez accéder à la valeur du temps lorsque la promesse est résolue en tant que rappel à la fonction .then() de la promesse.

else {

  this.state.player.currentTime().then(function(seconds){
    console.log(seconds)
    timeMark=seconds;
    VideosActions.updateVideoAttribute(inputId, timeMark);
  });

}

0voto

Eran Shlomo Points 1

Il est important de s'assurer que votre serveur renvoie une réponse 206 à la demande HTTP de la vidéo, sinon les lecteurs ne gèrent pas bien la recherche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X