Aktualności multimedialne w Chrome 62

François Beaufort
François Beaufort

Trwałe licencje na Androida

Trwała licencja w rozszerzeniach zaszyfrowanych multimediów (EME) oznacza, że może być przechowywana na urządzeniu, dzięki czemu aplikacje mogą wczytywać ją w pamięci bez wysyłania kolejnego żądania licencji do serwera. Tak działa odtwarzanie offline w EME.

Do tej pory ChromeOS był jedyną platformą obsługującą licencje trwałe. Już nie jest prawdziwa. Odtwarzanie chronionych treści przy użyciu EME, gdy urządzenie jest offline, jest teraz możliwe również na Androidzie.

const config = [{
  sessionTypes: ['persistent-license'],
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'SW_SECURE_DECODE' // Widevine L3
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content while being offline when
  // license is stored locally on device and loaded later.
})
.catch(error => {
  // Persistent licenses are not supported on this platform yet.
});

Możesz samodzielnie wypróbować licencje trwałe, korzystając z przykładowej aplikacji PWA dla multimediów i wykonując te czynności:

  1. Wejdź na https://biograf-155113.appspot.com/ttt/episode-2/
  2. Kliknij „Udostępnij w trybie offline” i poczekaj, aż film zostanie pobrany.
  3. Włącz tryb samolotowy.
  4. Kliknij przycisk „Odtwórz” i obejrzyj film!

Widevine L1 na Androida

Jak być może wiesz, wszystkie urządzenia z Androidem muszą obsługiwać Widevine poziomu bezpieczeństwa 3 (Widevine L3). Istnieje jednak wiele urządzeń obsługujących najwyższy poziom zabezpieczeń: Widevine Security Level 1, w którym wszystkie procesy przetwarzania, kryptografii i kontroli treści odbywają się w zaufanym środowisku wykonawczym (Trusted Execution Environment, TEE).

Mamy dobrą wiadomość. Chrome na Androida obsługuje teraz Widevine L1, dzięki czemu multimedia mogą być odtwarzane w najbezpieczniejszy sposób. Pamiętaj, że była ona już obsługiwana w systemie operacyjnym Chrome.

const config = [{
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'HW_SECURE_ALL' // Widevine L1
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content in the most secure way.
})
.catch(error => {
  // Widevine L1 is not supported on this platform yet.
});

Shaka Player, biblioteka JavaScript dla adaptacyjnych formatów multimediów (np. DASH i HLS), zawiera demonstrację, którą możesz wypróbować Widevine L1:

  1. Otwórz stronę https://shaka-player-demo.appspot.com/demo/ i gdy pojawi się prośba, kliknij „Zezwól”.
  2. Wybierz „Angel One (multicodec, multilingual, Widevine)”.
  3. Wpisz HW_SECURE_ALL w polu „Niezawodność wideo” w sekcji „Konfiguracja”.
  4. Kliknij przycisk "Wczytaj" i oglądaj film!

Optymalizacje ścieżki wideo w tle (tylko MSE)

Zespół Chrome stale szuka nowych sposobów na wydłużenie czasu pracy na baterii i Chrome 62 nie jest wyjątkiem.

Chrome wyłącza teraz ścieżki wideo, gdy film jest odtwarzany w tle (np. na niewidocznej karcie), jeśli film korzysta z rozszerzeń źródła multimediów (MSE). Aby dowiedzieć się więcej, przeczytaj poprzedni artykuł.

Dostosuj zakres do przewijania w transmisjach MSE na żywo

Jak już zapewne wiesz, atrybut seekable zawiera zakresy zasobów multimedialnych, które przeglądarka może wyszukać. Zwykle zawiera on pojedynczy zakres czasowy, który zaczyna się od 0 i kończy w czasie trwania zasobu multimedialnego. Jeśli jednak czas trwania jest niedostępny (np. w przypadku transmisji na żywo), zakres czasu może się stale zmieniać.

Dobra wiadomość jest taka, że teraz możesz efektywniej dostosowywać logikę zakresu seekable za pomocą rozszerzeń Media Source Extensions (MSE), dostarczając lub usuwając 1 przewijany zakres połączony z bieżącymi zakresami buforowanymi. Jeśli czas trwania źródła multimediów to +Infinity, powstaje 1 przewijany zakres, który pasuje do obu tych elementów.

W poniższym kodzie źródło multimediów jest już dołączone do elementu multimedialnego i zawiera tylko jego segment inicjujący:

const mediaSource = new MediaSource();
...

mediaSource.duration = +Infinity;
// Seekable time ranges: { }
// Buffered time ranges: { }

mediaSource.setLiveSeekableRange(1 /* start */, 4 /* end */);
// Seekable time ranges: { [1.000, 4.000) }
// Buffered time ranges: { }

// Let's append a media segment that starts at 3 seconds and ends at 6.
mediaSource.sourceBuffers[0].appendBuffer(someData);
// Seekable time ranges: { [1.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

mediaSource.clearLiveSeekableRange();
// Seekable time ranges: { [0.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

Jest wiele przypadków, których nie omówiłem, dlatego proponujemy użycie oficjalnej próbki, by sprawdzić, jak zbuforowane i możliwe do przeszukiwania zakresy czasu reagują na różne zdarzenia MSE.

Prośba o wysyłkę | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

FLAC w MP4 dla MSE

Bezstratne kodowanie dźwięku FLAC jest obsługiwane w przypadku zwykłego odtwarzania multimediów od Chrome 56. Niedługo potem dodaliśmy format FLAC w standardzie ISO-BMFF (nazywany również FLAC w MP4). Teraz w Chrome 62 dostępny jest format FLAC w formacie MP4 dla rozszerzeń multimediów (MSE).

Informacje o tym, że to użytkownicy Firefoksa opracował i wdrożyli obsługę specyfikacji kodowania FLA w formacie MP4, a BBC eksperymentuje z użyciem tej funkcji z MSE. Aby dowiedzieć się więcej, przeczytaj post BBC „Delivering Radio 3 Competition Sound”.

Aby sprawdzić, czy format FLAC w MP4 jest obsługiwany przez MSE:

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

Jeśli chcesz zobaczyć pełny przykład, zobacz naszą oficjalną próbkę.

Prośba o wysyłkę | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Po obróceniu urządzenia automatyczny film wyświetla się w trybie pełnoekranowym.

Jeśli obrócisz urządzenie do orientacji poziomej, gdy film jest odtwarzany w widocznym obszarze, odtwarzanie automatycznie przełączy się na tryb pełnoekranowy. Obrót urządzenia do orientacji pionowej przywraca tryb okna. Więcej informacji znajdziesz w naszym poprzednim artykule.