들어가기 전에

 

  앞서 StreamLive 글에서 DRM을 어디서 처리하는지에 대한 이야기가 나왔다. 결론부터 말하면 DRM은 StreamPackage 단계에서 적용된다. StreamPackage는 StreamLive로부터

  트랜스코딩된 스트림을 받아 패키징하고, DRM 암호화를 적용한 뒤 CDN이 가져갈 수 있는 오리진 엔드포인트를 제공하는 서비스다. AWS 파이프라인에서 MediaPackage가 담당하는

  역할과 동일하다.

 

  파이프라인에서의 위치

 

  전체 흐름에서 StreamPackage의 위치는 아래와 같다.

 

  인코더

    └→ (Streamlink) → StreamLive → [StreamPackage] → CSS/CDN → 시청자

 

  StreamLive가 트랜스코딩과 다중 출력을 담당한다면, StreamPackage는 그 결과물을 받아 HLS 또는 DASH로 패키징하고 오리진 역할을 수행한다. CDN은 이 오리진 엔드포인트를 통해

  스트림을 가져가 시청자에게 전달한다. StreamLive 없이 외부 인코더나 다른 소스로부터 직접 입력을 받아 독립적으로 사용하는 것도 가능하다.

 

  [아키텍처 다이어그램 삽입]

 

  채널 구조와 엔드포인트

 

  StreamPackage도 채널(Channel) 단위로 구성된다. 하나의 채널에는 입력, 엔드포인트, 인증 설정이 포함된다.

 

  입력(Input)

 

  StreamPackage 채널은 아래 두 가지 포맷의 입력을 지원한다.

 

  ┌───────────┬────────────────────┐

  │ 입력 포맷 │        설명       

  ├───────────┼────────────────────┤

  │ HLS       │ TS 세그먼트 기반  

  ├───────────┼────────────────────┤

  │ DASH      │ fMP4 세그먼트 기반 │

  └───────────┴────────────────────┘

 

  각 채널에는 Primary와 Backup 두 개의 입력 주소가 제공된다. 두 경로로 동시에 스트림을 푸시해두면, Primary 입력에 문제가 생겼을 때 자동으로 Backup으로 전환된다.

  StreamLive의 출력 그룹을 StreamPackage 타입으로 구성하면 이 이중화가 자동으로 연결된다.

 

  엔드포인트(Endpoint)

 

  하나의 채널에서 여러 엔드포인트를 생성할 수 있다. 각 엔드포인트는 독립적인 URL을 가지며, DRM 설정이나 인증 방식을 엔드포인트 단위로 다르게 구성할 수 있다. 예를 들어

  동일한 채널에서 DRM 적용 엔드포인트와 미적용 엔드포인트를 병행 운영하는 구성이 가능하다.

 

  엔드포인트 보안에는 다음과 같은 인증 방식이 지원된다.

 

  ┌───────────────────┬─────────────────────┐

      인증 방식           적용 대상     

  ├───────────────────┼─────────────────────┤

  │ IP 허용/차단 목록 │ 특정 IP 범위 제한  

  ├───────────────────┼─────────────────────┤

  │ Authkey 검증      │ URL 서명 기반 인증 

  ├───────────────────┼─────────────────────┤

  │ HTTP 헤더 검증    │ 요청 헤더 기반 인증 │

  └───────────────────┴─────────────────────┘

 

  [해당 콘솔 캡쳐 삽입]

 

  DRM과 콘텐츠 보호

 

  DRM은 엔드포인트 단위로 설정한다. 지원하는 DRM 방식은 FairPlay, Widevine, PlayReady이며, HLS 엔드포인트와 DASH 엔드포인트에서 각각 적용 가능한 방식이 다르다.

 

  ┌─────────────┬──────────────────┬───────────────────────┐

  │ 암호화 방식 │ 지원 엔드포인트      주요 플레이어    

  ├─────────────┼──────────────────┼───────────────────────┤

  │ FairPlay    │ HLS              │ Safari (macOS, iOS)  

  ├─────────────┼──────────────────┼───────────────────────┤

  │ Widevine    │ HLS (fMP4), DASH │ Chrome, Firefox, Edge │

  ├─────────────┼──────────────────┼───────────────────────┤

  │ PlayReady   │ HLS (fMP4), DASH │ Microsoft Edge       

  └─────────────┴──────────────────┴───────────────────────┘

 

  키 관리는 TencentDRM, SDMC DRM, Custom DRM Key 방식 중 선택할 수 있다. 엔드포인트 하나에 여러 DRM 방식을 동시에 설정해 멀티 DRM 구성을 만드는 것도 가능하다. 이렇게 하면

   플레이어가 지원하는 DRM 방식에 따라 자동으로 적절한 라이선스를 발급하게 된다.

 

 

 

 

  SSAI와 부가 기능

 

  서버 사이드 광고 삽입(SSAI)

  StreamLive에서 SCTE-35 마커가 포함된 스트림을 StreamPackage로 전달하면, StreamPackage가 광고 삽입 타이밍을 감지하고 광고 결정 서버(Ad Decision Server)에 요청해 광고

  세그먼트를 수신한다. 이후 매니페스트를 수정해 콘텐츠 세그먼트 사이에 광고 세그먼트를 삽입한 형태로 플레이어에 제공한다. VAST/VMAP 응답을 처리하며, 광고 재생 후 임프레션

   및 인게이지먼트 지표를 트래킹 서버에 리포트하는 기능도 포함된다.

 

 

 

 

  Harvest Job

  특정 시간 구간의 라이브 스트림을 VOD 콘텐츠로 추출하는 기능이다. 방송 중에 하이라이트 클립을 만들거나, 특정 프로그램 단위로 아카이브를 생성할 때 활용한다.

 

 

 

 

  Linear Assembly

  여러 VOD 콘텐츠 소스를 조합해 FAST(Free Ad-Supported Streaming TV) 채널을 구성하는 기능이다. 별도 인코더 없이 StreamPackage 내에서 채널 편성을 처리할 수 있다.

 

 

 

 

  마치며

 

  StreamPackage는 단순한 패키져가 아니다. DRM 적용, 오리진 이중화, SSAI, Harvest Job, Linear Assembly까지 포함한 미디어 오리진 플랫폼이다. StreamLive가 스트림을 처리하는구간이라면, StreamPackage는 그 결과물을 안전하게 보호하고 CDN에 안정적으로 공급하는 구간이다. Tencent Cloud 미디어 파이프라인에서 두 서비스의 역할 분리를 이해하면 전체 아키텍처 설계가 훨씬 명확해진다.

+ Recent posts