web-dev-qa-db-fra.com

GIFV ne joue pas toujours la vidéo

Considérez ceci, "bon GIFV": http://i.imgur.com/SQXB06O.gifv

Considérez ceci, “GIFV bad”: http://i.imgur.com/MHfD9WX.gifv

Maintenant, les deux sont des téléchargements récents; 13 et 15 heures respectivement. Cependant on joue en vidéo et on joue en GIF. Vous pouvez le savoir car si vous cliquez avec le bouton droit de la souris GIFV bien , il est indiqué Pause , tandis que si vous faites un clic droit GIFV mauvais , il est indiqué Voir l'image .

Je sais que GIFV bad a une vidéo disponible:

$ wget --spider http://i.imgur.com/MHfD9WX.webm
HTTP request sent, awaiting response... 200 OK
Length: 542519 (530K) [video/webm]

Toutefois, si vous essayez http://i.imgur.com/MHfD9WX.webm , il vous redirige simplement vers le fichier GIFV et lit un fichier GIF.

Qu'est-ce qui cause ce comportement?

7
Steven Penny

selon le personnel d'Imgur :

nous faisons surface le GIF original s'il est inférieur à 2M


Ce que je souhaite vraiment chez Imgur, c'est que les médias se comportent comme des vidéos YouTube:

  • Jouer une fois
  • Rejouer au clic

J'ai pu accomplir cela. D'abord, j'ai arrêté la boucle GIF dans Firefox comme ceci:

image.animation_mode; once

Puis j'ai créé n bookmarklet pour faire le reste:

addEventListener('timeupdate', function(wh) wh.target.loop = 0, 1);
xr = document.querySelectorAll('img, video');
for (ya of xr) {
  zu = ya.style;
  zu.boxSizing = 'border-box';
  if (ya.play) {
    zu.border = 'thick solid Violet';
    zu.position = 'relative';
    zu.zIndex = 10;
    if (ya.duration) zu.display = 'block';
    ya.onmouseover = function() this.controls = 1;
    ya.onclick = function() {
      this.parentNode.replaceChild(this.cloneNode(1), this);
      this.src = '';
    };
  }
  else {
    ya.onclick = function() this.src = this.src;
    zu.border = /gif/.test(ya.src) ? 'thick solid green' : 'thick solid peru';
  }
}

Cela arrête les vidéos en boucle et permet de rejouer le contenu multimédia au clic.

6
Steven Penny