web-dev-qa-db-fra.com

'AbortError: l'opération a été annulée.' - Erreur lors de l'ajustement de HTML 5 video.currentTime dans Firefox

Lorsque vous utilisez Firefox et modifiez la position d'une vidéo à l'aide de la vidéo HTML5. Quelqu'un at-il un aperçu de ce qui cause cela? 

Voici mes idées:

  1. Réglage sur une valeur de temps qui n'a pas de cadre correspondant - j'ai essayé de toujours le définir sur une heure où un cadre existe pour contrer cela
  2. La trame vidéo ne se charge pas au moment où la trame suivante est demandée - afin de tester ceci, j'ai réglé le délai d'attente à 5 ms, cela supprime définitivement le nombre d'erreurs, ce qui est une preuve que c'est la source de l'erreur. . 

J'ai fait curseur qui ajuste le temps vidéo qui reproduit l'erreur:

var vid = $('#v0')[0];
var slider = document.getElementById('vidSlider')
linkVideoToSlider();

vid.onplay = vid.onclick = function() {
  vid.onplay = vid.onclick = null;

  setTimeout(function() {
    vid.pause();
    slider.value = vid.currentTime / vid.duration * 100
    vid.currentTime += (1 / 29.97);

  }, 12000);

  setInterval(function() {
    $('#time').html((vid.currentTime * 29.97).toPrecision(5));
    slider.value = vid.currentTime / vid.duration * slider.max;
  }, 100);
};

function linkVideoToSlider() {
  var adjustVideoTime = function() {
    //Note that we attempt to adjust to a time that has a frame.
    setTimeout(function() {
      vid.currentTime = Number.parseFloat(slider.value / 29.97).toFixed(4);
    }, 5);
  }
  slider.oninput = adjustVideoTime
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Frame number:
<p id="time"></p>
<video id="v0" controls tabindex="0" autobuffer preload>
    <source type="video/webm; codecs=&quot;vp8, vorbis&quot;" src="http://www.html5rocks.com/tutorials/video/basics/Chrome_ImF.webm"></source>
    <source type="video/ogg; codecs=&quot;theora, vorbis&quot;" src="http://www.html5rocks.com/tutorials/video/basics/Chrome_ImF.ogv"></source>
    <source type="video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;" src="http://www.html5rocks.com/tutorials/video/basics/Chrome_ImF.mp4"></source>
    <p>Sorry, your browser does not support the &lt;video&gt; element.</p>
</video>
<div class="slidecontainer">
  <p>Time of video slider:</p>
  <input type="range" min="0" max="1024" value="0" class="slider" id="vidSlider">
</div>

si vous préférez JSFiddle: https://jsfiddle.net/tehsurfer/9ahz5rmd/52/

9

Ceci est un bug signalé dans Firefox. 

AbortError: The operation was aborted

Est sorti vers la console quand soit:

  1. Un élément de recherche dans la vidéo est abandonné.
  2. La durée d'un élément vidéo est ajustée.

Certains développeurs disent que Firefox est beaucoup plus lent que Chrome ou Edge dans ces scénarios, mais je n'ai pas trouvé le moyen de valider personnellement une différence.

Je mettrai à jour cette réponse si un correctif de bogue ou une solution de contournement est trouvé.

Mettre à jour:

Après la mise à jour de Firefox vers 60.5.1esr, il semble être corrigé et les performances semblent s'être améliorées. Cependant, si vous utilisez Firefox Developer Edition, le bogue persiste même après la mise à jour.

5