Ciekawy przypadek tagu video

Dawno, dawno temu – kiedy jeszcze nie było neostrady… żeby odpalić video w na stronie, trzeba było mieć flash i kupę dodatkowych skryptów. Po tym jak pojawił się HTML5 sprawa się lekko uprościła i wystarczył tag VIDEO i mądre przeglądarki w teorii zaczęły odtwarzać video bez flasha.

Teoretycznie ten kod rozwiązuje nam sprawę. Jeśli przeglądarka obsługuje webm (czyli Chrome, Opera i podobne) to gramy zoptymalizowany format webm, wszystkie inne powinny poradzić sobie z mp4


Niestety ku naszemu zaskoczeniu w inspektorze pokaże nam się że przeglądarka na silniku Chromium i tak odpali .mp4 pomimo tego, że webm jest „lepszym” dla niej formatem.

Dlaczego? Bo mp4 jest podane jako pierwsze, więc najpierw zostanie rozpoznane jako „grywalny” format i odtworzone. Tyle w kwestii optymalizacji. Poprawny kod poniżej:


Druga ciekawa sprawa pojawia się, jak chcemy manipulować zawartością tagów z poziomu JavaScript:

  var video = document.getElementById('video');   
 
  // replace value in src tag
  var webmSrc = document.getElementById('webm');
  webmSrc.setAttribute('src','video.webm');  

  // load and play video
  video.load();
  video.play();
  
  

Rozwiązanie nie zadziała bez magicznego „video.load()” – pomimo tego, że video.play() odtworzy video w pierwszej kolejności.

  • Warto sprawdzić w inspektorze, czy nasz kod faktycznie robi to co powinien (odtwarza „optymalny format”)
  • Przeglądarki są głupie i wygodne – to po naszej stronie powinna leżeć kwestia optymalizacji rozwiązania.