99 votes

Détecter si l'élément HTML5 Video est en cours de lecture

J'ai parcouru quelques questions pour savoir si un élément HTML5 joue, mais je ne trouve pas la réponse. J'ai consulté la documentation du W3 et il existe un événement nommé "playing", mais je n'arrive pas à le faire fonctionner.

Voici mon code actuel :

var stream = document.getElementsByTagName('video');

function pauseStream() {
  if (stream.playing) {
    for (var i = 0; i < stream.length; i++) {
      stream[i].pause();
      $("body > header").addClass("paused_note");
      $(".paused_note").text("Stream Paused");
      $('.paused_note').css("opacity", "1");
    }
  }
}

118voto

Samuel Cole Points 858

Il me semble que tu pourrais juste vérifier si !stream.paused .

40voto

Raees Bhatti Points 1114

Ma réponse à Comment savoir si un élément <video> est en cours de lecture ? :

MediaElement n'a pas de propriété qui indique si elle joue ou non. Mais vous pouvez définir une propriété personnalisée pour cela.

Object.defineProperty(HTMLMediaElement.prototype, 'playing', {
    get: function(){
        return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2);
    }
})

Vous pouvez maintenant l'utiliser sur video ou audio des éléments comme celui-ci :

if(document.querySelector('video').playing){
    // Do anything you want to
}

37voto

tracevipin Points 8987

Note : Cette réponse a été donnée en 2011. Veuillez consulter la documentation mise à jour sur la vidéo HTML5 avant de poursuivre.

Si vous voulez simplement savoir si la vidéo est en pause, utilisez l'indicateur stream.paused .

Il n'y a pas de propriété pour l'élément vidéo permettant d'obtenir le statut de lecture. Mais il existe un événement "playing" qui sera déclenché lorsque la lecture commencera. L'événement "ended" est déclenché lorsque la lecture s'arrête.

La solution est donc

  1. décalque d'une variable videoStatus
  2. ajouter des gestionnaires d'événements pour les différents événements de la vidéo
  3. mise à jour videoStatus en utilisant les gestionnaires d'événements
  4. utiliser videoStatus pour identifier l'état de la vidéo

Cette page vous donnera une meilleure idée des événements vidéo. Lisez la vidéo sur cette page et voyez comment les événements sont déclenchés.
http://www.w3.org/2010/05/video/mediaevents.html

21voto

geilt Points 320
jQuery(document).on('click', 'video', function(){
        if (this.paused) {
            this.play();
        } else {
            this.pause();
        }
});

17voto

Ajoutez des eventlisteners à votre élément multimédia. Les événements possibles qui peuvent être déclenchés sont : Événements médiatiques audio et vidéo

<!DOCTYPE html> 
<html> 
<head>  
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Html5 media events</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head> 
<body >
    <div id="output"></div>
    <video id="myVideo" width="320" height="176" controls autoplay>
        <source src="http://www.w3schools.com/tags/mov_bbb.mp4" type="video/mp4">
        <source src="http://www.w3schools.com/tags/mov_bbb.ogg" type="video/ogg">
    </video>
    <script>
        var media = document.getElementById('myVideo');

        // Playing event
        media.addEventListener("playing", function() {
            $("#output").html("Playing event triggered");
        });

        // Pause event
        media.addEventListener("pause", function() { 
            $("#output").html("Pause event triggered"); 
        });

        // Seeking event
        media.addEventListener("seeking", function() { 
            $("#output").html("Seeking event triggered"); 
        });

        // Volume changed event
        media.addEventListener("volumechange", function(e) { 
            $("#output").html("Volumechange event triggered"); 
        });

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

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