Aktualizacje dźwięku i wideo w Chrome 70

François Beaufort
François Beaufort

Oglądanie filmu w trybie obrazu w obrazie

Obraz w obrazie (PIP) umożliwia oglądanie filmów w pływającym oknie (zawsze na wierzchu innych okien), dzięki czemu użytkownicy mogą śledzić oglądane treści podczas korzystania z innych witryn lub aplikacji. Dzięki nowemu interfejsowi Picture-in-Picture Web API możesz inicjować i kontrolować tryb obrazu w obrazie w przypadku filmów na swojej stronie.

Więcej informacji znajdziesz w naszym artykule.

Dekoder AV1

AV1 to kodek nowej generacji opracowany przez Alliance for Open Media. AV1 poprawia kompresję o ponad 30% w stosunku do kodeka wideo VP9. W Chrome 70 dodaliśmy dekoder AV1 do Chrome na komputery stacjonarne x86-64 na podstawie oficjalnej specyfikacji strumienia bitów. Obecnie obsługa jest ograniczona do profilu 0 „Głównego” i nie obejmuje możliwości kodowania. Obsługiwany kontener to MP4 (ISO-BMFF) (krótkie wyjaśnienie kontenerów znajdziesz w artykule Od surowego wideo do formatu gotowego do publikacji w internecie).

Aby wypróbować AV1:

  • Otwórz stronę YouTube TestTube.
  • Wybierz „Preferuj AV1 w transmisjach SD” lub „Zawsze preferuj AV1”, aby uzyskać żądaną rozdzielczość AV1. Pamiętaj, że przy wyższych rozdzielczościach odtwarzanie w formacie AV1 może powodować problemy z wydajnością na niektórych urządzeniach.
  • Spróbuj odtworzyć klipy z YouTube z playlisty wprowadzającej AV1 w wersji beta.
  • Sprawdź kodek av01 w „Statystykach dla nerdów”.
Statystyki dla nerdów z AV1 w YouTube.
Rysunek 1. Statystyki dla nerdów z AV1 w YouTube.

Obsługa przełączania kodeków i kontenerów w MSE

Chrome dodaje obsługę ulepszonych przejść między kodekami lub strumieniami bajtów w Media Source Extensions za pomocą nowej metody changeType() w SourceBuffer. Umożliwia to późniejszą zmianę typu bajtów multimediów dołączonych do parametru SourceBuffer.

Obecna wersja MSE obsługuje adaptacyjne odtwarzanie multimediów, ale adaptacja wymaga, aby wszystkie multimedia dołączane do elementu SourceBuffer były zgodne z typem MIME podanym podczas początkowego tworzenia elementu SourceBuffer za pomocą interfejsu MediaSource.addSourceBuffer(type). Kodeki tego typu i wszystkie wcześniej przeanalizowane segmenty inicjujące muszą pozostać takie same. Oznacza to, że witryna musi podjąć wyraźne kroki, aby przełączyć kodek lub strumień bajtów (używając wielu elementów multimedialnych lub SourceBufferścieżek i przełączając się między nimi), co zwiększa złożoność aplikacji i opóźnienie widoczne dla użytkownika. (Takie przejścia wymagają od aplikacji internetowej podjęcia synchronicznego działania w głównym wątku renderowania). Ten czas oczekiwania na przejście pogarsza płynność odtwarzania multimediów podczas przejść.

Dzięki nowej changeType() metodzie SourceBuffer może buforować i obsługiwać odtwarzanie w różnych formatach strumieni bajtów i kodekach. Ta nowa metoda zachowuje wcześniej buforowane multimedia, z wyjątkiem przyszłego usuwania lub usunięcia zakodowanych klatek MSE, i wykorzystuje logikę łączenia i buforowania w istniejącym algorytmie przetwarzania zakodowanych klatek MSE.

Oto jak używać metody changeType():

    const sourceBuffer = myMediaSource.addSourceBuffer('video/webm; codecs="opus, vp09.00.10.08"');
    sourceBuffer.appendBuffer(someWebmOpusVP9Data);

    // Later on...
    if ('changeType' in sourceBuffer) {
      // Change source buffer type and append new data.
      sourceBuffer.changeType('video/mp4; codecs="mp4a.40.5, avc1.4d001e"');
      sourceBuffer.appendBuffer(someMp4AacAvcData);
    }

Zgodnie z oczekiwaniami, jeśli przekazany typ nie jest obsługiwany przez przeglądarkę, ta metoda zgłasza wyjątek NotSupportedError.

Zapoznaj się z przykładowym kodem, aby poeksperymentować z buforowaniem i odtwarzaniem elementu audio w różnych kodekach i strumieniach bajtów.

Intent to Ship | Chromestatus Tracker | Chromium Bug

Opus w MP4 dla MSE

Otwarty i wszechstronny kodek audio Opus jest obsługiwany w elementach <audio><video> od Chrome 33. Później dodaliśmy obsługę Opus w ISO-BMFF (czyli Opus w MP4). Od wersji 70 przeglądarki Chrome format Opus w MP4 jest dostępny w Media Source Extensions.

Aby sprawdzić, czy Opus w MP4 jest obsługiwany w przypadku MSE:

if (MediaSource.isTypeSupported('audio/mp4; codecs="opus"')) {
  // TODO: Fetch data and feed it to a media source.
}

Jeśli chcesz zobaczyć pełny przykład, zapoznaj się z naszym oficjalnym przykładem.

Ze względu na brak narzędzi do multipleksowania Opus w MP4 z prawidłowym przycinaniem końcowym i wartościami preskip, jeśli taka precyzja jest dla Ciebie ważna, musisz użyć SourceBuffer.appendWindow{Start,End} i SourceBuffer.timestampOffset w Chrome, aby uzyskać odtwarzanie z dokładnością do próbki.

Intent to Ship | Chromestatus Tracker | Chromium Bug

Domyślne zezwalanie na odtwarzanie treści chronionych na Androidzie

W Chrome 70 na Androida domyślna wartość ustawienia witryny „treści chronione” zmienia się z „Najpierw pytaj” na „Dozwolone”, co zmniejsza trudności związane z odtwarzaniem takich multimediów. Ta zmiana jest możliwa m.in. dzięki dodatkowym działaniom podjętym w celu usuwania licencji na multimedia wraz z plikami cookie i danymi witryn. Dzięki temu witryny nie mogą używać licencji na multimedia do śledzenia użytkowników, którzy usunęli dane przeglądania.

Ustawienie treści chronionych na Androidzie.
Rysunek 2. Ustawienie treści chronionych na Androidzie.