← Lekcje
HTML · lekcja 10

Audio i wideo w HTML

Własny film albo nagranie na stronie, bez YouTube

  1. Znacznik video: controls i kolejność źródeł w source
  2. Znacznik audio: to samo, bez obrazu
  3. Tekst zastępczy dla przeglądarek, które nie znają tych znaczników
  4. Ćwiczenie: nowa podstrona z filmem lub nagraniem
Rozgrzewka · 3 minuty

Trzy pytania z dodatkowych elementów

  1. Czym różni się div od span?
  2. Po co znacznik iframe ma atrybut title?
  3. Co się stanie, gdy w details zabraknie summary?
Wideo · znacznik video

Znacznik video

Film na stronie wstawiacie znacznikiem video, tak jak obraz znacznikiem img. Bez atrybutu controls film jest na stronie, ale użytkownik nie ma czym go obsłużyć: nie zatrzyma, nie przewinie, nie zmieni głośności.

1:23 / 4:10 play/pauza pasek postępu głośność pełny ekran

Cały ten pasek dodaje sama przeglądarka. Wy piszecie tylko jedno słowo: controls.

Ciekawostka z Wikipedii: znacznik video zaproponowała firma Opera Software w lutym 2007 roku. Twórcy przeglądarek szybko wpadli w spór o format: żaden kodek nie pasował wszystkim naraz, dlatego strony do dziś podają wideo w kilku formatach jednocześnie.

MDN: „<video> HTML video embed element” („the browser will offer controls to allow the user to control video playback, including volume, seeking, and pause/resume playback”) · developer.mozilla.org/docs/Web/HTML/Reference/Elements/video · ciekawostka: en.wikipedia.org/wiki/HTML5_video
Wideo · znacznik source

Kilka źródeł: przeglądarka wybiera sama

Nie każda przeglądarka odtwarza każdy format filmu. Dlatego zamiast jednego adresu w video, wstawiacie kilka znaczników source: przeglądarka sprawdza je po kolei i odtwarza pierwszy format, który rozpoznaje.

film.webm type="video/webm" nierozpoznany video.mp4 type="video/mp4" ten się odtwarza film.ogg pominięty, bo już jest odtwarzacz

Atrybut type mówi przeglądarce, jaki to format, zanim jeszcze zacznie ściągać plik. Bez adresu w samym video: <video controls><source src="video.mp4" type="video/mp4"><source src="film.ogg" type="video/ogg"></video>.

MDN: „the browser will go through the <source> elements and play the first one that it has the codec to support” · developer.mozilla.org/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio
Wideo · atrybuty odtwarzacza

Pięć atrybutów, które warto znać

controls pokazuje przyciski niemal zawsze wpisany ! autoplay start bez pytania używać oszczędnie loop po końcu gra od nowa muted dźwięk wyłączony na start poster obrazek, zanim film się wczyta

controls, autoplay, loop, muted piszecie bez wartości: samo słowo włącza. poster to wyjątek, bo dostaje adres obrazka: poster="miniatura.jpg".

MDN: „<video> HTML video embed element” (controls, autoplay, loop, muted, poster) · developer.mozilla.org/docs/Web/HTML/Reference/Elements/video
Audio · znacznik audio

Znacznik audio: to samo, bez obrazu

Nagranie dźwiękowe wstawiacie znacznikiem audio. Działa jak video: te same controls, autoplay, loop, muted, ten sam łańcuch source.

<audio controls>
  <source src="recording.mp3" type="audio/mpeg">
</audio>
MDN: „<audio> HTML embed audio element” · „The <audio> element doesn't support the width/height attributes… It also doesn't support the poster attribute” (Learn: HTML video and audio) · developer.mozilla.org/docs/Web/HTML/Reference/Elements/audio
Wideo i audio · tekst zastępczy

Tekst między znacznikami: dla starych przeglądarek

Cokolwiek wpiszecie między <video> a </video> (albo między audio), przeglądarka, która zna te znaczniki, po prostu pomija. Pokaże to tylko przeglądarka, która ich nie rozumie: to Wasza siatka bezpieczeństwa.

<video controls>
  <source src="video.mp4" type="video/mp4">
  Twoja przeglądarka nie obsługuje wideo.
  <a href="video.mp4">Pobierz film</a>.
</video>

Dobry tekst zastępczy zawiera zwykle łącze do samego pliku, żeby ktoś mógł go chociaż pobrać.

MDN: „this will be displayed if the browser accessing the page doesn't support the <video> element” (fallback content) · developer.mozilla.org/docs/Learn_web_development/Core/Structuring_content/HTML_video_and_audio
Audio i wideo · egzamin

Tak pytają na egzaminie

1. <video controls><source src="video1.mp4" type="video/mp4"><source src="video1.ogg" type="video/ogg">Komunikat dotyczący video</video>
Zastosowana w dokumencie HTML definicja multimediów sprawi, że na stronie

  1. zostaną wyświetlone obok siebie dwa filmy z plików: video1.mp4 oraz video1.ogg.
  2. pod wyświetlanym filmem zostanie wyświetlony napis „Komunikat dotyczący video”.
  3. wyświetlony film zostanie automatycznie uruchomiony zaraz po załadowaniu strony internetowej.
  4. zostanie wyświetlony film z pliku video1.mp4 lub w przypadku nierozpoznania formatu MPEG-4 – video1.ogg.

2. W języku HTML atrybutem znacznika video, który włącza tryb odtwarzania w kółko, jest

  1. loop
  2. muted
  3. poster
  4. controls
CKE, EE.09 styczeń 2023, zad. 37 · CKE, E.14 styczeń 2019, zad. 17
Ćwiczenie · przy komputerze · 15 minut

Ćwiczenie: podstrona z multimediami

  1. Nowy plik pages/media.html (skopiuj head z innej podstrony).
  2. Dopisz łącze „Multimedia” w menu na wszystkich swoich stronach.
  3. Wrzuć krótki własny plik video.mp4 albo recording.mp3 do folderu media, potem <video controls> albo <audio controls> z source src="../media/video.mp4".
  4. Między znacznikami: tekst zastępczy, jedno zdanie i łącze do pobrania tego pliku.
  5. Zapisz, F5, sprawdź pasek z przyciskami.

Ma się pojawić: odtwarzacz z przyciskami, gra po kliknięciu play. Ctrl+U: w kodzie jest source i tekst zastępczy, którego nie widać na stronie.

Plik do ćwiczenia: dowolne krótkie własne nagranie w folderze media
Pytania kontrolne

Trzy pytania na koniec

  1. Po co niemal zawsze dopisujecie atrybut controls?
  2. Co zrobi przeglądarka, gdy żadnego z Waszych source nie rozpozna?
  3. Jakich trzech atrybutów nie ma audio, choć ma je video?

To ostatnia lekcja o HTML: wyglądem strony zajmuje się kurs CSS.

Z realnych wdrożeń

A jak to wygląda w produkcji?

Na lekcjiW produkcjiStatus
Kilka formatów w sourceFormat MP4 (kodek H.264) rozpoznaje ok. 97% przeglądarek na świecie, więc wiele stron wstawia tylko jeden source.upraszczane
Własny plik na serwerzeDuże serwisy trzymają wideo na osobnych serwerach przeznaczonych do tego celu (np. YouTube, Vimeo) zamiast we własnym htdocs: mniej transferu, gotowy odtwarzacz.zastępowane
Wbudowany pasek controlsFirmy dorabiają własny wygląd paska przez JavaScript (np. biblioteka Video.js), żeby wyglądał tak samo w każdej przeglądarce.nadbudowane
Atrybut autoplayPrzeglądarki (np. Chrome) uruchamiają autoplay z dźwiękiem tylko po wcześniejszym kliknięciu na stronie; bez dźwięku (muted) puszczają zawsze.ograniczone przez przeglądarkę
caniuse.com/mpeg4 (obsługa MPEG-4/H.264) · developer.chrome.com/blog/autoplay („Muted autoplay is always allowed”)