모든 기기에서 동영상을 매끄럽게 재생합니다.
Media Capabilities API를 사용한 실험에서 YouTube는 게재된 동영상의 평균 해상도가 0.4% 감소하고만 MTBR이 7.1% 증가했습니다.
문제
일반적으로 미디어 사이트에는 다양한 프레임 속도, 해상도, 코덱으로 인코딩되어 사용자에게 표시할 수 있는 각 동영상의 여러 변형이 있습니다. 최근까지는 웹 개발자가 각 변형이 개별 사용자의 브라우저에서 재생될 수 있는지 확인하기 위해 isTypeSupported()
또는 canPlayType()
에만 의존해야 했습니다.
이를 통해 개발자는 미디어가 재생될 수 있는지 여부를 알 수 있었지만 프레임 드롭이나 기기 배터리 소모와 같은 재생 품질은 나타내지 않았습니다. 이 정보가 없으면 개발자는 자체 휴리스틱을 만들거나 기기가 코덱/해상도 조합을 재생할 수 있다면 전력 효율로 원활하게 재생할 수 있다고 가정해야 했습니다.
성능이 낮은 기기를 사용하는 사용자의 경우 불만족스러운 경험으로 이어지는 경우가 많습니다.
솔루션
Media Capabilities API를 사용하면 웹사이트에서 클라이언트의 동영상 디코딩 성능에 관한 자세한 정보를 얻고 사용자에게 제공할 코덱과 해상도에 관해 정보에 입각한 결정을 내릴 수 있습니다. 특히 이 API는 개발자에게 특정 코덱과 해상도 조합의 부드러움과 전력 효율성에 관한 추정치를 제공합니다. 이를 통해 개발자는 클라이언트의 재생 환경이 저하될 가능성이 있는 시나리오를 피할 수 있습니다.
Chrome에서 Media Capabilities API는 이전 재생의 측정항목을 사용하여 향후 동일한 코덱 및 동일한 해상도의 재생이 원활하게 디코딩될지 예측합니다.
YouTube 우수사례
YouTube는 적응형 비트 전송률 알고리즘이 기기에서 원활하게 재생할 수 없는 해상도를 자동으로 선택하지 못하도록 Media Capabilities API를 사용했습니다.
실험 그룹에 속한 사용자의 경우 리버퍼링 빈도가 줄었습니다(리버퍼링(MTBR) 사이의 평균 시간이 7.1% 증가한 반면, 동영상 높이로 측정된 평균 해상도는 0.4%만 감소했습니다. 평균 해상도가 약간 감소하고 MTBR이 크게 증가한다는 것은 이전에 열악한 환경을 경험했던 일부 사용자의 품질이 크게 향상되었음을 나타냅니다.
사이트에 Media Capabilities API 구현
Decoding Info API의 작동 방식은 공식 샘플을 참고하세요.