Tagi <video> i <source>

Masz już prawidłowo przygotowany plik wideo, który można wyświetlać w internecie. ma prawidłowe wymiary i rozdzielczość. Przygotowujesz nawet osobne pliki WebM i MP4 dla różnych przeglądarek.

Aby każdy mógł go obejrzeć, musisz dodać go do strony internetowej. Aby to zrobić, należy dodać 2 elementy HTML: <video> i <source>. Oprócz podstawowych informacji o tych tagach w tym artykule opisujemy atrybuty, które należy dodać do tagów, by zadbać o wygodę użytkowników.

Określ jeden plik

Chociaż nie jest to zalecane, możesz użyć samego elementu wideo. Zawsze używaj atrybutu type, jak pokazano poniżej. Na jego podstawie przeglądarka określa, czy może odtworzyć podany plik wideo. Jeśli to nie zadziała, wyświetli się tekst w załączniku.

<video src="chrome.webm" type="video/webm">
    <p>Your browser cannot play the provided video file.</p>
</video>

Określ wiele formatów plików

Przypomnij sobie Podstawowe informacje o plikach multimedialnych, że nie wszystkie przeglądarki obsługują te same formaty wideo. Element <source> umożliwia określenie wielu formatów reklam zastępczych na wypadek, gdyby przeglądarka użytkownika nie obsługiwała jednego z nich.

Umieszczony film pokazuje przykład poniżej.

<video controls>
  <source src="https://storage.googleapis.com/web-dev-assets/video-and-source-tags/chrome.webm" type="video/webm">
  <source src="https://storage.googleapis.com/web-dev-assets/video-and-source-tags/chrome.mp4" type="video/mp4">
  <p>Your browser cannot play the provided video file.</p>
</video>

Wypróbuj w usłudze Glitch

Zawsze dodawaj atrybut type do zdarzenia w tagu <source>, chociaż jest on opcjonalny. Dzięki temu przeglądarka pobiera tylko te pliki, które może odtworzyć.

To podejście ma kilka zalet w porównaniu z obsługą różnych skryptów HTML lub skryptów po stronie serwera, zwłaszcza na urządzeniach mobilnych:

  • Formaty możesz wymienić według preferencji.
  • Przełączanie po stronie klienta skraca czas oczekiwania, bo wysyłane jest tylko jedno żądanie pobrania treści.
  • Umożliwienie przeglądarce wyboru formatu jest prostsze, szybsze i bardziej niezawodne niż baza danych pomocy po stronie serwera z wykrywaniem klienta użytkownika.
  • Określenie typu źródła pliku poprawia wydajność sieci. Przeglądarka może wybrać źródło filmu bez konieczności pobierania fragmentu filmu, aby „wywąchać” jego format.

Są one szczególnie ważne w przypadku urządzeń mobilnych, gdy przepustowość i opóźnienia są bardzo duże, a użytkownik może mieć ograniczoną cierpliwość. Pominięcie atrybutu type może pogorszyć wydajność w przypadku wielu źródeł z nieobsługiwanymi typami.

Szczegóły możesz poznać na kilka sposobów. Na stronie A Digital Media Primer for Geeks dowiesz się więcej o działaniu treści wideo i audio w internecie. W Narzędziach deweloperskich możesz też użyć zdalnego debugowania, aby porównać aktywność w sieci za pomocą atrybutów typu i bez atrybutów typu.

Określ czas rozpoczęcia i zakończenia

Oszczędź przepustowość i zwiększ szybkość reagowania witryny: użyj fragmentów multimediów, aby dodać czas rozpoczęcia i zakończenia do elementu wideo.

Aby użyć fragmentu multimediów, dodaj do jego adresu URL ciąg #t=[start_time][,end_time]. Aby na przykład odtwarzać film od 5 do 10 sekund, podaj:

<source src="video/chrome.webm#t=5,10" type="video/webm">

Możesz też podać godziny w polu <hours>:<minutes>:<seconds>. Na przykład #t=00:01:05 rozpoczyna odtwarzanie filmu w 1 minucie i 5 sekundach. Aby odtworzyć tylko pierwszą minutę filmu, wybierz #t=,00:01:00.

Za pomocą tej funkcji możesz zapewnić wiele wyświetleń tego samego filmu, np. punkty wstawienia reklamy na płycie DVD, bez konieczności kodowania i udostępniania wielu plików.

Aby ta funkcja działała, serwer musi obsługiwać żądania dotyczące zakresu, a ta możliwość musi być włączona. Większość serwerów domyślnie włącza żądania dotyczące zakresów. Ponieważ niektóre usługi hostingowe je wyłączają, sprawdź, czy żądania zakresu są dostępne do użycia fragmentów w Twojej witrynie.

Na szczęście możesz to zrobić za pomocą narzędzi dla programistów w przeglądarce. Na przykład w Chrome znajduje się on w panelu Sieć. Odszukaj nagłówek Accept-Ranges i sprawdź, czy zawiera on tekst bytes. Narysowałam czerwoną ramkę dookoła tego nagłówka. Jeśli nie widzisz wartości bytes, skontaktuj się z dostawcą usług hostingowych.

Zrzut ekranu z Chrome DevTools: Accept-Ranges: bajty.
Zrzut ekranu z Chrome DevTools: Accept-Ranges: bajty.

Dołącz obraz plakatu.

Dodaj atrybut plakatu do elementu video, aby widzowie od razu wiedzieli, co się dzieje, gdy tylko element się wczyta, bez konieczności pobierania filmu ani uruchamiania jego odtwarzania.

<video poster="poster.jpg" ...>
  …
</video>

Plakat może też być reklamą zastępczą, jeśli film src jest uszkodzony lub nie jest obsługiwany żaden z podanych formatów. Jedyną wadą takich obrazów jest żądanie dodatkowego pliku, które zużywa trochę przepustowości i wymaga renderowania. Więcej informacji znajdziesz w artykule Efektywne kodowanie obrazów.

Nie
Film bez plakatu awaryjnego wygląda na uszkodzony.
Bez plakatu zapasowego film wygląda na uszkodzony.
Tak
Plakat zastępczy sprawia, że wygląda to tak, jakby została zarejestrowana pierwsza klatka.
plakat zastępczy sprawia, że wydaje się, że pierwsza klatka została zarejestrowana.

Zadbaj o to, aby filmy nie znajdowały się w kontenerach

Gdy elementy wideo są za duże dla widocznego obszaru, mogą wychodzić poza kontener, przez co użytkownik nie może zobaczyć treści ani użyć elementów sterujących.

Zrzut ekranu z Androida Chrome, orientacja pionowa: element wideo bez stylu wykracza poza widoczny obszar.
Zrzut ekranu z Chrome na Androida, pionowy: element wideo bez stylu wykracza poza widoczny obszar.
Zrzut ekranu z Androida Chrome, obraz w orientacji poziomej: element wideo bez stylu wykracza poza widoczny obszar.
Zrzut ekranu z Chrome na Androida, obraz w orientacji poziomej: element wideo bez stylu wykracza poza widoczny obszar.

Wymiarymi filmu możesz zarządzać za pomocą CSS. Jeśli CSS nie spełnia Twoich oczekiwań, pomocne mogą okazać się biblioteki i wtyczki JavaScript takie jak FitVids, nawet w przypadku filmów z YouTube i innych źródeł. Takie zasoby mogą zwiększać rozmiary ładunków sieciowych, co negatywnie wpływa na Twoje przychody i portfele użytkowników.

W prostych zastosowaniach, takich jak te, które tu opisuję, użyj zapytań o multimedia w CSS, aby określić rozmiar elementów w zależności od wymiarów widocznego obszaru. max-width: 100% jest Twoim znajomym.

W przypadku treści multimedialnych znajdujących się w elementach iframe (takich jak filmy w YouTube) wypróbuj podejście elastyczne (takie jak zaproponowane przez Johna Surdakowskiego).

CSS

.video-container {
    position: relative;
    padding-bottom: 56.25%;
    padding-top: 0;
    height: 0;
    overflow: hidden;
}

.video-container iframe,
.video-container object,
.video-container embed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

HTML

<div class="video-container">
  <iframe
    src="//www.youtube.com/embed/l-BA9Ee2XuM"
    frameborder="0"
    width="560"
    height="315"
  ></iframe>
</div>

Wypróbuj

Porównaj przykładową wersję elastyczną z wersją nieodpowiadającą. Jak widać, brak reakcji na stronie nie zapewnia użytkownikom satysfakcji.

Orientacja urządzenia

Orientacja urządzenia nie jest problemem w przypadku monitorów komputerowych ani laptopów, ale jest niezwykle ważna przy projektowaniu stron na urządzenia mobilne i tablety.

Safari na iPhonie dobrze sprawdza się przy przełączaniu się między orientacją pionową i poziomą:

Zrzut ekranu filmu odtwarzanego w Safari na iPhonie w orientacji pionowej.
Zrzut ekranu filmu odtwarzanego w Safari na iPhonie w orientacji pionowej.
Zrzut ekranu z filmu odtwarzanego w Safari na iPhonie w orientacji poziomej.
Zrzut ekranu z filmu odtwarzanego w Safari na iPhonie w orientacji poziomej.

Orientacja urządzenia na iPadzie i w Chrome na Androidzie może powodować problemy. Na przykład bez dostosowania film odtwarzany na iPadzie w orientacji poziomej wygląda tak:

Zrzut ekranu z filmem odtwarzanym w Safari na iPadzie, w orientacji poziomej.
Zrzut ekranu pokazujący film odtwarzany w Safari na iPadzie w orientacji poziomej.

Ustawienie filmu width: 100% lub max-width: 100% w CSS może rozwiązać wiele problemów z układem z orientacją ekranu urządzenia.

Autoodtwarzanie

Atrybut autoplay określa, czy przeglądarka natychmiast pobiera i odtwarza film. Sposób działania zależy od platformy i przeglądarki.

Nawet na platformach, które obsługują autoodtwarzanie, zastanów się, czy warto włączyć tę funkcję:

  • Użycie danych może być drogie.
  • Odtwarzanie multimediów, zanim użytkownik zechce zwiększyć przepustowość i CPU, oraz opóźnić renderowanie stron.
  • Użytkownicy mogą znajdować się w kontekście, w którym odtwarzanie wideo lub dźwięku jest uciążliwe.

Wczytaj wstępnie

Atrybut preload informuje przeglądarkę, ile informacji lub treści ma być wstępnie wczytanych.

Wartość Opis
none Użytkownik mógł nie zdecydować się na obejrzenie filmu, więc niczego nie wczytuj wstępnie.
metadata Metadane (czas trwania, wymiary, ścieżki tekstowe) powinny być wstępnie wczytane, ale z minimalną ilością filmu.
auto Natychmiastowe pobranie całego filmu jest uznawane za pożądane. Pusty ciąg daje ten sam wynik.

Atrybut preload ma różny wpływ na różne platformy. Na przykład Chrome buforuje 25 sekund filmu na komputerze, ale nie buforuje go na urządzeniach z iOS i Androidem. Oznacza to, że na urządzeniach mobilnych mogą występować opóźnienia w rozpoczynaniu odtwarzania, które nie występują na komputerach. Więcej informacji znajdziesz w artykułach o szybkim odtwarzaniu ze wstępnym wczytywaniem dźwięku i obrazu oraz na blogu Steve'a Soudersa.

Wiesz już, jak dodawać multimedia do strony internetowej. Teraz omówimy Ułatwienia dostępu do multimediów, w ramach których możesz dodawać do filmu napisy dla osób niedosłyszących lub gdy odtwarzanie dźwięku nie jest dobrym rozwiązaniem.