Chrome 69의 미디어 업데이트

François Beaufort
François Beaufort

AV1 동영상 디코더

Chrome상태 추적기 | Chromium 버그

EME: 암호화 스키마 지원 쿼리

일부 플랫폼 또는 키 시스템은 CENC 모드만 지원하지만 다른 플랫폼 또는 키 시스템은 CBCS 모드. 두 가지를 모두 지원하는 앱도 있습니다. 이 두 가지 암호화 체계는 호환되지 않으므로 웹 개발자는 결정할 수 있습니다.

'알려진' 상태인지 확인하기 위해 사용 중인 플랫폼을 확인할 필요가 없도록 하기 위해 새로운 encryptionScheme 키가 추가 웹사이트에서 지정할 수 있는 MediaKeySystemMediaCapability 사전 암호화된 미디어 확장 프로그램 (EME)에서 사용할 수 있는 암호화 스키마에 대해 알아보십시오.

encryptionScheme 키는 다음 두 값 중 하나일 수 있습니다.

  • 'cenc' AES-CTR 모드 전체 샘플 및 동영상 NAL 서브 샘플 암호화입니다.
  • 'cbcs' AES-CBC 모드 부분 동영상 NAL 패턴 암호화입니다.

지정하지 않으면 모든 암호화 스키마가 허용됨을 나타냅니다. 참고 Clear Key가 항상 'cenc' 스키마를 지원한다는 점을 강조합니다.

아래 예는 서로 다른 두 구성을 쿼리하는 방법을 보여줍니다. 암호화 스키마가 있습니다. 이 경우 하나만 선택됩니다.

await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [
    {
      label: 'configuration using the "cenc" encryption scheme',
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cenc'
      }],
      audioCapabilities: [{
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cenc'
      }],
      initDataTypes: ['keyids']
    },
    {
      label: 'configuration using the "cbcs" encryption scheme',
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cbcs'
      }],
      audioCapabilities: [{
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cbcs'
      }],
      initDataTypes: ['keyids']
    },
  ]);

아래 예시에서는 2개의 서로 다른 암호화를 사용하는 구성 하나만 있습니다. 스키마가 쿼리됩니다 이 경우 Chrome은 모든 기능 객체를 삭제합니다. 지원할 수 없으므로 누적된 구성에 하나의 암호화가 포함될 수 있습니다. 스키마 또는 둘 다일 수 있습니다.

await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{
    videoCapabilities: [
      { // A video capability using the "cenc" encryption scheme
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cenc'
      },
      { // A video capability using the "cbcs" encryption scheme
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cbcs'
      },
    ],
    audioCapabilities: [
      { // An audio capability using the "cenc" encryption scheme
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cenc'
      },
      { // An audio capability using the "cbcs" encryption scheme
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cbcs'
      },
    ],
    initDataTypes: ['keyids']
  }]);

구현 의도 | Chrome상태 추적기 | Chromium 버그

EME: HDCP 정책 확인

오늘날 HDCP는 고해상도 스트리밍을 위한 일반적인 정책 요구사항입니다. 보호된 콘텐츠 HDCP 정책을 시행하려는 웹 개발자는 라이선스 교환이 완료될 때까지 기다리거나 스트리밍을 시작해야 합니다. 표시할 수 있습니다. 이는 HDCP 정책에서 규정하는 슬픈 상황입니다. Check API의 목표는 문제를 해결하는 것입니다.

이 제안된 API를 사용하면 웹 개발자가 특정 HDCP 정책이 적용되는지 최대 해상도에서 재생이 시작되도록 하기 위해 최상의 사용자 경험을 제공합니다. 이 함수는 포드의 상태를 쿼리하는 간단한 메서드로 가상의 키로, HDCP 정책과 관련된 MediaKeySession하거나 실제 라이선스를 가져옵니다. MediaKeys가 오디오나 동영상 요소에 첨부됩니다.

HDCP Policy Check API는 mediaKeys.getStatusForPolicy(): minHdcpVersion 키가 있는 객체 유효한 값이 있어야 합니다 지정된 버전에서 HDCP를 사용할 수 있는 경우 반환되는 프로미스가 'usable'MediaKeyStatus로 확인됩니다. 그렇지 않으면 프로미스 MediaKeyStatus다른 오류 값(예: 'output-restricted' 또는 'output-downscaled'입니다. 키 시스템이 HDCP 정책 확인을 전혀 지원하지 않는 경우 (예: Clear Key System) 프로미스가 거부됩니다.

현재 API가 작동하는 방식은 다음과 같습니다. 공식 샘플 확인하기 모든 버전의 HDCP를 사용해 보세요.

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

navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(mediaKeySystemAccess => mediaKeySystemAccess.createMediaKeys())
.then(mediaKeys => {

  // Get status for HDCP 2.2
  return mediaKeys.getStatusForPolicy({ minHdcpVersion: '2.2' })
  .then(status => {
    if (status !== 'usable')
      return Promise.reject(status);

    console.log('HDCP 2.2 can be enforced.');
    // TODO: Fetch high resolution protected content...
  });
})
.catch(error => {
  // TODO: Fallback to fetch license or stream low-resolution content...
});

오리진 트라이얼에 사용 가능

웹 개발자의 의견을 받기 위해 이전에 HDCP 정책을 추가했습니다. 데스크톱 (ChromeOS, Linux, Mac, Windows)용 Chrome 69의 API 기능을 확인합니다.

무료 체험판은 2018년 11월에 종료되었습니다.

실험 의도 | Chrome상태 추적기 | Chromium 버그

MSE PTS/DTS 규정 준수

버퍼링된 범위 및 길이 값이 이제 프레젠테이션 타임스탬프로 보고됩니다. 미디어에서 DTS(Decode Time Stamp, DTS) 간격이 아닌 (PTS) 간격 소스 확장 프로그램 (MSE).

MSE가 처음 출시되었을 때 Chrome의 구현은 WebM 및 MP3에서 테스트되었으며, PTS와 DTS 간에 차이가 없는 미디어 스트림 형식입니다. 또한 ISO BMFF (일명 MP4)가 추가될 때까지 잘 작동했습니다. 이 컨테이너는 시간 스트림을 디코딩하는 대신 잘못된 순서로 표시된 프레젠테이션을 포함하는 경우가 많음( H.264와 같은 코덱)으로 인해 DTS와 PTS가 달라집니다. 이로 인해 Chrome에서 다양한 버퍼링 범위와 지속 시간을 보고합니다 (보통 약간). 값을 찾을 수 있습니다. 이 새로운 동작은 Chrome 69에서 점진적으로 출시될 예정입니다. MSE 구현이 MSE 사양을 준수하도록 합니다.

<ph type="x-smartling-placeholder">
</ph> PTS/DTS <ph type="x-smartling-placeholder">
</ph> PTS/DTS

이 변경사항은 MediaSource.duration에 영향을 미치며 HTMLMediaElement.duration), SourceBuffer.buffered (결과적으로) HTMLMediaElement.buffered), SourceBuffer.remove(start, end)

버퍼링된 범위 및 기간을 보고하는 데 어떤 메서드가 사용되는지 확실하지 않은 경우 값이 있는 경우 내부 chrome://media-internals 페이지로 이동하여 'ChunkDemuxer: PTS의 버퍼링' 또는 'ChunkDemuxer: DTS에 의한 버퍼링' 를 할 수 있습니다

구현 의도 | Chromium 버그

Android Go에서 미디어 뷰 인텐트 처리

Android Go는 엔트리 레벨을 위해 설계된 경량 버전의 Android입니다. 있습니다. 그렇기 때문에 일부 미디어 조회와 함께 제공되지 않을 수도 있습니다. 사용자가 다운로드한 동영상을 열려고 하면 해당 인텐트를 처리할 애플리케이션이 없을 것입니다.

이 문제를 해결하기 위해 Android Go의 Chrome 69는 이제 미디어 보기 인텐트를 수신 대기합니다. 사용자는 다운로드한 오디오, 동영상, 이미지를 볼 수 있습니다. 다시 말해 볼 수 있습니다.

<ph type="x-smartling-placeholder">
</ph> ALT_TEXT_HERE <ph type="x-smartling-placeholder">
</ph> 미디어 인텐트 핸들러

이 Chrome 기능은 Android를 실행하는 모든 Android 기기에서 사용할 수 있습니다. RAM 1GB 이하 O 이상

Chromium 버그

'중단' 삭제 MSE를 사용하는 미디어 요소의 이벤트

'중단' 미디어 데이터 다운로드 시 미디어 요소에서 약 3초 동안 진행하지 못했습니다. 미디어 소스 확장 프로그램을 사용하는 경우 (MSE): 웹 앱이 다운로드를 관리하지만 미디어 요소가 이를 인식하지 못함 확인할 수 있습니다 이로 인해 Chrome에서 '지연' 오류가 발생했습니다. 부적절한 일정 웹사이트에서 새로운 미디어 데이터 청크를 SourceBuffer.appendBuffer()를 기록했습니다.

웹사이트에서 대량의 데이터를 낮은 빈도로 추가할 수 있기 때문에 버퍼링 상태에 대한 유용한 신호가 아닙니다. '중단' 삭제 일정: MSE를 사용하는 미디어 요소는 혼동을 줄이고 Chrome을 더 강력하게 만들어 줍니다 MSE 사양과 함께 사용할 수 있습니다 MSE를 사용하지 않는 미디어 요소는 계속해서 '중단됨' 상태를 할 수 있습니다.

지원 중단 및 삭제 인텐트 | Chrome상태 추적기 | Chromium 버그