Aktualności multimedialne w Chrome 63 i 64

François Beaufort
François Beaufort

Funkcje mediów – interfejs Decoding Info API

Obecnie deweloperzy stron internetowych niejednoznacznie polegają na isTypeSupported() lub canPlayType() czy niektóre multimedia można zdekodować. Prawdziwe pytanie powinno jednak brzmieć: „jaką skuteczność będzie działać na tym urządzeniu?”

To jeden z celów proponowanych możliwości medialnych. rozwiązuj: interfejs API do wysyłania zapytań o możliwości dekodowania urządzenia. takich jak kodeki, profil, rozdzielczość, szybkość transmisji bitów itp., ujawni informacje takie jak to, czy odtwarzanie powinno być płynne, energooszczędności na podstawie statystyk odtwarzania zarejestrowanych przez przeglądarkę.

Oto w skrócie, jak obecnie działa interfejs Decoding Info API. Zobacz oficjalna wersja.

const mediaConfig = {
  type: 'media-source', // or 'file'
  audio: {
    contentType: 'audio/webm; codecs=opus',
    channels: '2', // audio channels used by the track
    bitrate: 132266, // number of bits used to encode a second of audio
    samplerate: 48000 // number of samples of audio carried per second
  },
  video: {
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    width: 1920,
    height: 1080,
    bitrate: 2646242, // number of bits used to encode a second of video
    framerate: '25' // number of frames used in one second
  }
};

navigator.mediaCapabilities.decodingInfo(mediaConfig).then(result => {
  console.log('This configuration is' +
      (result.supported ? '' : ' NOT') + ' supported,' +
      (result.smooth ? '' : ' NOT') + ' smooth and' +
      (result.powerEfficient ? '' : ' NOT') + ' power efficient.');
});

Możesz wypróbować różne konfiguracje multimediów, aż znajdziesz najlepszą (smooth i powerEfficient) i używaj ich do odtwarzania odpowiednich multimediów . Przy okazji bieżąca implementacja Chrome opiera się zapisane informacje o odtwarzaniu. Definiuje smooth jako prawdziwe, gdy wartość procentowa utraconych klatek wynosi mniej niż 10%, a powerEfficient ma wartość prawda, jeśli więcej niż 50% klatek jest dekodowanych przez sprzęt. Małe ramki są zawsze uważanych za bardzo energooszczędne.

Zalecamy użycie fragmentu podobnego do podanego poniżej, aby wykryć lub wrócić do obecnej implementacji dla przeglądarek, które nie obsługują tego interfejsu API.

function isMediaConfigSupported(mediaConfig) {

  const promise = new Promise((resolve, reject) => {
    if (!('mediaCapabilities' in navigator)) {
      return reject('MediaCapabilities API not available');
    }
    if (!('decodingInfo' in navigator.mediaCapabilities)) {
      return reject('Decoding Info not available');
    }
    return resolve(navigator.mediaCapabilities.decodingInfo(mediaConfig));
  });

  return promise.catch(_ => {
    let fallbackResult = {
      supported: false,
      smooth: false, // always false
      powerEfficient: false // always false
    };
    if ('video' in mediaConfig) {
      fallbackResult.supported = MediaSource.isTypeSupported(mediaConfig.video.contentType);
      if (!fallbackResult.supported) {
        return fallbackResult;
      }
    }
    if ('audio' in mediaConfig) {
      fallbackResult.supported = MediaSource.isTypeSupported(mediaConfig.audio.contentType);
    }
    return fallbackResult;
  });
}

Dostępne w przypadku testowania origin

Chcąc uzyskać jak najwięcej opinii od deweloperów korzystających z narzędzia interfejsu API informacji (część funkcji medialnych). Dodaliśmy go jako wersję próbną origin w Chrome 64.

Okres próbny zakończył się w kwietniu 2018 roku.

Zamiar eksperymentowania | Zamiar wysyłki | Tracker Chromestatus | Błąd Chromium

Odtwarzanie filmów HDR w systemie Windows 10

Filmy High Dynamic Range (HDR) mają wyższy kontrast, jeszcze bardziej wyraziste cienie i oszałamiające podświetlenia. Poza tym obsługa szerokiej gamy kolorów sprawia, że kolory są bardziej żywe.

Porównanie symulowanego SDR z HDR (rzeczywiste wrażenia HDR wymagają wyświetlacza HDR)
Porównanie symulowanego SDR z HDR (rzeczywiste wrażenia HDR wymagają wyświetlacza HDR)

Ponieważ odtwarzanie 10-bitowe w profilu VP9 profilu 2 jest teraz obsługiwane w Chrome w systemie Windows 10 (jesienią) Aktualizacja dla twórców: Chrome dodatkowo obsługuje odtwarzanie filmów HDR w systemie Windows 10 jest w trybie HDR. Uwaga techniczna: Chrome 64 obsługuje teraz kolory scRGB. co z kolei umożliwia odtwarzanie multimediów w trybie HDR.

Możesz wypróbować tę funkcję, oglądając w YouTube The World in HDR in 4K (ULTRA HD). i zobacz, czy można ją odtwarzać w trybie HDR. W tym celu sprawdź ustawienie jakości odtwarzacza YouTube.

Ustawienie jakości odtwarzacza YouTube z HDR
Ustawienie jakości odtwarzacza YouTube z HDR

Na razie potrzebujesz tylko jesiennej aktualizacji dla twórców Windows 10, zgodnej z HDR karta graficzna i wyświetlacz (np. karta NVIDIA 10, telewizor lub monitor LG HDR), i włącz tryb HDR w ustawieniach wyświetlacza w systemie Windows.

Programiści stron internetowych mogą wykryć przybliżoną gamę kolorów obsługiwanych przez dane wyjściowe urządzenia z niedawnym zapytaniem o multimedia color-gamut i liczbą bitów użytych do pozwala wyświetlać kolor na ekranie za pomocą parametru screen.colorDepth. Oto jeden ze sposobów używania które pozwalają określić, czy standard HDR VP9 jest obsługiwany. Na przykład:

// Detect if display is in HDR mode and if browser supports VP9 HDR.
function canPlayVp9Hdr() {

  // TODO: Adjust VP9 codec string based on your video encoding properties.
  return (window.matchMedia('(color-gamut: p3)').matches &&
      screen.colorDepth >= 48 &&
      MediaSource.isTypeSupported('video/webm; codecs="vp09.02.10.10.01.09.16.09.01"'))
}

Ciąg kodeka VP9 z profilem 2 przekazany do isTypeSupported() w funkcji Powyższy przykład wymaga aktualizacji w zależności od właściwości kodowania wideo.

Pamiętaj, że nie można jeszcze zdefiniować kolorów HDR w arkuszach CSS, canvas, obrazów i treści chronionych. Zespół Chrome nad nim pracuje. Więcej informacji już wkrótce.

Licencje trwałe dla systemów Windows i Mac

Licencja trwała w rozszerzeniach zaszyfrowanych multimediów (EME) oznacza, że może muszą być zachowywane na urządzeniu, aby aplikacje mogły wczytać licencję bez wysyłania kolejnego żądania licencji do serwera. Jak to zrobić odtwarzanie offline jest obsługiwane w formacie EME.

Do tej pory ChromeOS i Android były jedynymi platformami, które obsługiwały trwałe licencji. To już nieprawda. Odtwarzaj treści chronione przez EME podczas urządzenie działa teraz w trybie offline również w Chrome 64 w systemach Windows i Mac.

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

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, sprawdzając Sample Media PWA. i wykonaj 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. Wyłącz połączenie z internetem.
  4. Kliknij przycisk „Odtwórz”. i ciesz się filmem!

Domyślne ustawienie wstępnego wczytywania multimediów to „metadane”.

Zgodność z adresami innych przeglądarek implementacji, Chrome na komputery ustawia teraz wartość domyślną wstępnie wczytaj wartość elementów <video> i <audio> na "metadata", aby zmniejszanie przepustowości i wykorzystania zasobów. Od wersji Chrome 64 to nowe zachowanie jest stosowane tylko w przypadkach, gdy nie ustawiono wartości wstępnego wczytywania. Pamiętaj, że atrybut wstępnego wczytywania podpowiedź jest odrzucana, gdy element MediaSource zostanie dołączony do elementu multimedialnego jako witryna obsługuje własne wstępne wczytywanie.

Oznacza to, że wartość wstępnego załadowania <video> wynosi teraz "metadata", a wartość wstępnego wczytywania <video preload="auto"> pozostaje na "auto". Wypróbuj oficjalną próbkę.

Zamiar wysyłki | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Nieobsługiwana wartość odtwarzania powoduje zgłoszenie wyjątku

Po zmianie specyfikacji HTML, gdy elementy multimedialne playbackRate jest ustawiona na wartość nieobsługiwaną przez Chrome (np. ujemną), "NotSupportedError" DOMException w Chrome 63.

const audio = document.querySelector('audio');
try {
  audio.playbackRate = -1;
} catch(error) {
  console.log(error.message); // Failed to set the playbackRate property
}

Przy okazji – obecna implementacja Chrome zgłasza ten wyjątek, gdy Parametr playbackRate jest liczbą ujemną, mniejszą niż 0, 0625 lub większą niż 16. Wypróbuj do oficjalnego sampla, aby zobaczyć, jak to działa.

Zamiar wysyłki | Narzędzie do śledzenia stanu Chrome | Błąd Chromium

Optymalizacje ścieżki wideo w tle

Zespół Chrome zawsze stara się znaleźć nowe sposoby na wydłużenie czasu pracy na baterii i Chrome 63 nie był wyjątkiem.

Jeśli film nie zawiera żadnych ścieżek audio, zostanie automatycznie wstrzymywane podczas odtwarzania w tle (np. na niewidocznej karcie) w Chrome na komputery (Windows, Mac, Linux i ChromeOS). To jest kontynuacja podobną zmianę, która miała zastosowanie tylko do filmów MSE w Chrome 62.

Błąd Chromium

Usuń wyciszenie z powodu nadmiernych współczynników odtwarzania

Przed wersją Chrome 64 dźwięk był wyciszony, gdy poziom playbackRate był niższy niż 0,5 lub powyżej 4 bo ich jakość znacznie się pogorszyła. Po przejściu Chrome na Metoda WSOLA (fale-podobne połączenie nakładania się) poprawiająca jakość dźwięku nie musi być już ignorowany. Oznacza to, że możesz odtwarzać dźwięk bardzo wolno, bardzo szybko.

Błąd Chromium