April 11th 2020
Contents
Stream Types
DRM (Digital Rights Management)
DRM Landscape
Implement Video Player
2000년대 초반부터 약 2010년 무렵까지 웹에서 비디오 재생을 하려면 플레시 플러그인을 설치해야만 했어요.
당시 브라우저는 플러그인 없이 비디오 재생을 할 수 없었기 때문에, flash나 silverlight와 같은 별도의 플러그인 설치가 필요했습니다. 이후 브라우저도 더 좋아지고 HTML5 에 비디오 태그가 도입되며, 플러그인 없이 오디오, 비디오를 재생 할 수 있게 되었습니다. 같은 무렵 Apple 의 Flash에 대한 미사용 입장도 겹쳐 이 기술이 더 널리 퍼지는 계기가 되었습니다.
이렇게 HTML5에 비디오 태그가 도입되며, 아래와 같이 좀 까다록운 작업도 웹에서 할 수 있게 되었습니다.
21세기 들어 기존의 전화선이 브로드밴드 인터넷 연결망으로 진화했습니다. 파일을 다운로드 하며 재생이 가능한 스트리밍 미디어가 생겨나고, 왓챠, 유투브, 넷플릭스와 같은 음악 서비스, 영상 스트리밍 서비스가 크게 성장했습니다.
기존의 전화선, 모뎀은 MP3나 영상과 같은 데이터를 전송하기에 매우 느렸습니다. 파일을 다운로드 하려면 매우 오랜 시간 기다려야 했어요. 90 년대 중반 들어 이에 대한 해결책이 고안 되었는데, 재생할 파일의 일부(약 몇 초)를 다운로드 한 후 바로 재생을 합니다. 그리고 재생을 하는 동안 다음 몇 초를 다운로드 합니다. 파일 전체를 다운로드 하지는 않고 파일의 일부 구간을 다운로드 이미 재생을 한 구간은 다음 구간의 다운로드를 위해 삭제합니다. 파일을 다운로드 하는 시간이 재생하는 시간보다 빠르면 끊김없이 음악이나 영상을 감상할 수 있고, 그렇지 않으면 버퍼링이 발생합니다.
DRM 이란 온라인 상 콘텐츠의 위조 및 불법 복제를 방지하기 위해 정당한 권리를 가진 유저에게만 콘텐츠에 접근을 허용하는 시스템입니다. DRM을 이용하면 콘텐츠 소유자가 자신의 콘텐츠 소비 방식을 결정할 수 있습니다. 왓챠, 넷플릭스, 유튜브와 같은 스트리밍 서비스가 크게 성장하고 있는데, 이러한 온라인 콘텐츠 서비스는 전문 업체가 제공하는 멀티 DRM 솔루션을 도입하고 있습니다.
DRM이라면 종종 암호화 기술과 동일시 하는 경우가 있습니다. DRM 은 주로 영상 콘텐츠에 대한 암호화 기술과 관련이 깊지만, 이 외에도 콘텐츠 접근에 대한 여러 기능을 제공하는 종합 시스템입니다. 암호화 및 복호화 키에 대한 배포, 정책 제어 및 오프라인 재생 정책의 기능을 포함한 라이센싱 백엔드 서버 등과 같은 솔루션을 제공합니다.
아래 그림은 DRM 흐름을 간략히 나타낸 그림입니다. 빨간원으로 된 1 ~ 2는 암호화 과정, 초록원으로 된 1 ~ 3은 콘텐츠의 복호화 과정을 나타냅니다.
AES는 Packager와 DRM에 널리 사용되는 대칭키 암호화 기술입니다. 암호화 과정과 키 사용 방식에 따라 CTR과 CBC 두 가지 방식이 있다고 하네요. 콘텐츠 암호화 시 고려할 점은 암호화 과정에 소요되는 시간 및 노력과 보안성 간 최적의 비율이라고 해요. 영상을 암호화 하는 작업은 시간이 소요되고, 라이브 영상 서비스의 경우 HD, 4K, HDR 등을 지원하게 되면 이동하는 데이터의 양이 많아져 이 비율을 잘 조정하는 것이 중요하다고 해요.
Licensing Server는 닩순히 복호확 키를 누구에게 전달하는 역할만 하는 것이 아니라, 콘텐츠가 소비되는 방식에 대해서도 결정을 합니다. 아래는 일반적인 DRM Policy의 예입니다.
앞서 살펴본 DRM은 스트리밍 포맷과는 상관이 없는 것처럼 보이지만, 실제로는 매우 밀접한 관계가 형성됐습니다. 스트리밍 포맷 개발자들은 자체적인 DRM 시스템을 만들어 DRM 이 스트리밍 포맷과 거의 동일시 되게 만들었으며, 더 나아가 특정 디바이스에 종속되는 경우도 있으며, 더 나아가 특정 디바이스에 종속되는 경우도 있습니다. 현재 주요 스트리밍 포맷은 각각의 DRM 시스템을 가지고 있습니다.
각 클라이언트 디바이스는 보통 하나의 스트리밍 포맷을 지원하고, 스트리밍 서비스 하는 입장에서 포괄적인 서비스를 구축하려면 여러 DRM 시스템을 지원해야 합니다. 자체적으로 이러한 라이센스 서버를 구축하던가, 아니면 아래와 같은 Multi-DRM 솔루션 업체의 서비스를 이용할 수 있습니다.
ClearKey DRM은 위의 DRM 시스템과 같지만, 조금 더 낮은 보안성을 취한다는 점에서 다릅니다. 일반적인 DRM 시스템이 가지고 있는 모든 기능을 필요로 하기 않기 때문에, 이 방식은 콘텐츠 소유자가 자신의 콘텐츠를 좀 더 경제적인 비용으로 유통하고 싶을 때 사용하기 좋습니다. ClearKey DRM 방식이 일반적인 DRM 방식과 다른 점은 아래와 같습니다.
클라이언트 측에서 요청과 동시에 상응하는 포맷으로 packaging 작업을 할 수 있는 여러 솔루션이 있습니다. 각 비디오 스트리밍 포맷은 특정 DRM 시스템과 연관이 있기 때문에, 이 방식은 요청과 동시해 콘텐츠의 암호화 작업을 하는 것을 포함합니다.
영상 요청을 받으면, 스트리밍 시스템은 요청 클라이언트를 확인 후 스트리밍 포맷과, 콘텐트 암호화 작업을 합니다. 그렇다면, "just-in-time" 말고, 위 왼쪽의 그림 처럼 사전에 DRM에 맞게 암호화 해 놓지 않는 이유는 무엇일까요? 콘텐츠 암호화 과정을 사전에 작업하고, 이 사본을 storage에 저장해 놓으면 요청 시 콘텐츠를 전달할 수 있습니다. 하지만, 라이브 콘텐츠는 즉각적인 repackaging과 암호화가 이루어 져야 하는데, 이 방식은 VOD 콘텐츠에만 유효하지만, 라이브 콘텐츠에는 사용할 수 없습니다.
HTML에서 영상 재생은 간단합니다. 비디오 태그를 추가하고, 브라우저가 비디오 태그의 소스로 받은 영상의 코덱을 지원한다면 영상을 재생할 수 있습니다. 비디오 태그가 제공하는 API를 사용하면 play, pause, seek 를 간단하게 구현할 수 있습니다.