태그 보관물: widevine

Safari에서 Disney+가 재생되지 않는다

Disney+에서 영화 목록들은 잘 보이다가 막상 재생을 하려니 검은색 화면이 뜨면서 아무런 동작도 하지 않았다. 이 증상을 검색해 보니 “Chrome을 쓰세요”라는 해결 방법이 많았고 실제로 그렇게 해서 동작이 되기는 했다. 다만 문제는 이 때의 해상도가 무척 낮아 보였는데, Chrome broswer에서 재공해 주는 chrome://media-internals/ 기능에 의하면 재생할 때의 해상도가 854×480 SD 화질이었다. 화질이 낮기는 해도 Chrome에서 되기는 하는 셈이다.

이런 의문이 들었다.

  1. Chrome에서는 왜 화질이 낮은가?
  2. Safari에서는 왜 재생이 안되는가?

Chrome에서 화질이 낮은 이유

Chrome에서는 DRM이 걸린 contents를 재생하기 위해 Widevine을 이용해서 decryption을 수행하는데 이 때, 고화질의 미디어를 모니터가 아닌 곳으로 빼내는 것을 막기위해서 미디어 컨탠츠 -> 메모리 -> 디스플레이 엔진 -> 케이블 -> 싱크디바이스(모니터)까지의 전과정에서 일반 메모리에 노출 없이 TEE(Trusted Execution Enivrionment)에서 이루어지면 level1으로 분류하고 이 때는 4K UHD까지의 해상도가 지원된다.

반면, TEE의 개입 없이 일반 시스템 메모리에서 decryption과 프레임 처리가 이루어지면 level3로 분류되는데 이 때는 최대 해상도가 720p로 제한된다. 이러한 DRM decryption 환경에 대한 정보는 source와 sink 디바이스간에 연결될 때 초기에 handshake 과정에서 결정 되기에 위에서 말한 디스플레이 경로상에 HDCP를 제대로 지원하지 못하는 문제가 있는 경우 480p와 같은 낮은 해상도로 재생이 이루어지게 된다.

Safari에서는 재생이 안되는 이유

DRM 걸린 컨텐츠를 재생하는 방법들 중에 Safari는 Chrome과 달리 Fairplay를 사용하는데 이 경우 재생 경로에 문제가 있으면 Widevine 처럼 해상도를 낮춰서 라도 재생하는 것이 아니라 아예 재생을 막아 버린다. 그러면 도대체 뭐가 문제여서 재생을 막아버리는 걸까?

USB3.0 HUB에 연결된 HDMI

나는 HDMI 모니터를 USB3.0 HUB를 통해서 맥북에 연결했는데, 이 경우 영상 신호가 USB로 변환되는 과정을 거쳐야 한다. 이 때 사용되는 DisplayLnik나 Silicon Motion 같은 frame을 greb, 압축해서 전달하는 메커니즘이 개입하게 되면 HDCP가 제대로 동작하지 않는다. 이 때문에 Widevine에서는 화질 저하 Fairplay에서는 재생 불가가 되는 것이다.

결론 및 해결책

가장 간단한 해결책은 HDMI cable을 맥북에 직접 연결하는 것이다. 이 경우 frame을 greb하는 경로가 없어지고, 따라서 Safari에서 Disney+가 재생되지 않는 문제가 해결된다. 또 다른 해결 방법은 frame breb 같은 방법 없이 모니터로 출력하는 DP ALT mode를 지원하는 dock 혹은 HUB 제품을 사용하는 것이다. 실제로 다른 종류의 USB type-C HUB나 HP Thunderbolt Dock G2로 확인해 보니 문제 없이 잘 재생되었다.