Chrome 70의 오디오/동영상 업데이트

François Beaufort
François Beaufort

PIP 모드를 사용하여 동영상 시청하기

PIP 모드를 사용하면 사용자가 플로팅 창(항상 다른 창 위에 표시)에서 동영상을 시청할 수 있으므로 다른 사이트나 애플리케이션과 상호작용하는 동안에도 시청 중인 콘텐츠를 계속 확인할 수 있습니다. 새로운 PIP 웹 API를 사용하면 웹사이트에서 동영상의 PIP를 시작하고 제어할 수 있습니다.

자세한 내용은 도움말을 참고하세요.

AV1 디코더

AV1은 Alliance for Open Media에서 개발한 차세대 코덱입니다. AV1은 현재 최첨단으로 여겨지는 동영상 코덱 VP9 대비 압축 효율성을 30%이상 높여줍니다. Chrome 70에서는 공식 비트스트림 사양에 따라 Chrome 데스크톱 x86-64에 AV1 디코더를 추가합니다. 현재 지원은 '기본' 프로필 0으로 제한되며 인코딩 기능은 포함되지 않습니다. 지원되는 컨테이너는 MP4 (ISO-BMFF)입니다(컨테이너에 관한 간략한 설명은 원시 동영상에서 웹용 동영상으로 참고).

AV1을 사용해 보려면 다음 단계를 따르세요.

  • YouTube TestTube 페이지로 이동합니다.
  • 원하는 AV1 해상도를 얻으려면 'SD에 AV1 사용' 또는 '항상 AV1 사용'을 선택하세요. 해상도가 높을수록 일부 기기에서 AV1 재생 성능 문제가 발생할 가능성이 높습니다.
  • AV1 베타 출시 재생목록에서 YouTube 클립을 재생해 보세요.
  • '전문 통계'에서 코덱 av01을 확인합니다.
YouTube의 AV1을 보여주는 전문 통계
그림 1. YouTube의 AV1을 보여주는 전문 통계

MSE에서 코덱 및 컨테이너 전환 지원

Chrome은 SourceBuffer에서 새로운 changeType() 메서드를 사용하여 미디어 소스 확장 프로그램 재생에서 교차 코덱 또는 교차 바이트 스트림 전환을 개선하기 위해 지원 기능을 추가합니다. 이를 통해 SourceBuffer에 추가된 미디어 바이트의 유형을 나중에 변경할 수 있습니다.

현재 버전의 MSE는 미디어의 적응형 재생을 지원합니다. 하지만 적응에는 SourceBuffer에 추가된 모든 미디어가 MediaSource.addSourceBuffer(type)를 통해 SourceBuffer를 처음 만들 때 제공된 MIME 유형을 준수해야 합니다. 해당 유형의 코덱과 이전에 파싱된 초기화 세그먼트는 전체적으로 동일하게 유지되어야 합니다. 즉, 웹사이트는 코덱이나 바이트 스트림 전환을 위해 명시적인 단계를 거쳐야 합니다 (여러 미디어 요소나 SourceBuffer 트랙을 사용하고 이들 간에 전환). 이로 인해 애플리케이션 복잡성과 사용자에게 보이는 지연 시간이 증가합니다. 이러한 전환에는 웹 앱이 렌더러 기본 스레드에서 동기 작업을 실행해야 합니다. 이 전환 지연 시간은 전환 시 미디어 재생의 매끄러움을 저해합니다.

새로운 changeType() 메서드를 사용하면 SourceBuffer가 다양한 바이트 스트림 형식과 코덱에서 재생을 버퍼링하고 지원할 수 있습니다. 이 새로운 메서드는 향후 MSE 코딩된 프레임 삭제 또는 제거를 제외하고 이전에 버퍼링된 미디어를 유지하며 기존 MSE 코딩된 프레임 처리 알고리즘의 스플라이싱 및 버퍼링 로직을 활용합니다.

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);
    }

전달된 유형이 브라우저에서 지원되지 않으면 이 메서드는 예상대로 NotSupportedError 예외를 발생시킵니다.

샘플을 확인하여 교차 코덱 및 교차 바이트 스트림 버퍼링과 오디오 요소 재생을 사용해 보세요.

출시 의도 | Chromestatus 추적기 | Chromium 버그

MSE용 MP4의 Opus

개방적이고 매우 다재다능한 오디오 코덱 Opus는 Chrome 33부터 <audio><video> 요소에서 지원되었습니다. ISO-BMFF의 Opus 지원(MP4의 Opus라고도 함)은 나중에 추가되었습니다. 이제 Chrome 70의 미디어 소스 확장 프로그램에서 MP4의 Opus를 사용할 수 있습니다.

다음과 같이 MSE에서 MP4의 Opus가 지원되는지 감지할 수 있습니다.

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

전체 예시를 확인하려면 공식 샘플을 참고하세요.

올바른 끝 자르기 및 사전 건너뛰기 값을 사용하여 MP4에서 Opus를 멀티플렉싱하는 도구가 부족하므로 이러한 정밀도가 중요한 경우 Chrome에서 SourceBuffer.appendWindow{Start,End}SourceBuffer.timestampOffset를 사용하여 샘플 정확한 재생을 얻어야 합니다.

출시 의도 | Chromestatus 추적기 | Chromium 버그

Android에서 기본적으로 보호된 콘텐츠 재생 허용

Android용 Chrome 70에서는 '보호된 콘텐츠' 사이트 설정의 기본값이 '먼저 묻기'에서 '허용됨'으로 변경되어 이러한 미디어 재생과 관련된 마찰이 줄어듭니다. 이러한 변경은 쿠키 및 사이트 데이터와 함께 미디어 라이선스를 삭제하기 위해 취해진 추가 단계 덕분에 가능합니다. 이를 통해 미디어 라이선스가 브라우징 데이터를 삭제한 사용자를 추적하는 데 사이트에서 사용되지 않습니다.

Android의 보호된 콘텐츠 설정
그림 2. Android의 보호된 콘텐츠 설정