Skip to main content

CloudFront 미디어 스트리밍

Amazon CDN을 AWS Elemental 미디어 서비스와 함께 사용하여 두 가지 유형의 비디오 스트리밍을 구현할 수 있습니다. 먼저, Amazon S3에 저장된 콘텐츠의 온디맨드 스트리밍을 살펴보겠습니다.

온디맨드 스트리밍

온디맨드 스트리밍의 경우 비디오 콘텐츠가 Amazon S3에 저장됩니다. 시청자는 언제든 원하는 시간에 이를 시청할 수 있습니다. 전체 온디맨드 스트리밍 솔루션에는 일반적으로 스토리지를 위해 Amazon S3를, 파일 기반 비디오 처리를 위해 AWS Elemental MediaConvert를, 전송을 위해 Amazon CloudFront를 사용합니다.

Amazon S3는 비디오 자산을 위한 뛰어난 스토리지 공간입니다. 무제한으로 확장 가능하고 중복성을 기본적으로 제공하며 사용량에 따라 지불하는 요금제를 지원합니다. 몇 가지 방법으로 콘텐츠를 S3에 업로드할 수 있습니다. 볼륨이 적은 경우 AWS Management Console을 사용하여 시작하고 볼륨이 증가하면서 좀 더 자동화된 시스템으로 전환할 수 있습니다. 콘솔에서 S3를 사용하기는 매우 쉽습니다. AWS 계정을 생성하고, 로그인한 후 S3 버킷을 생성하고 콘텐츠를 업로드하면 됩니다. 자동화 시스템을 구현하려면 자체 스크립트에서 AWS 명령줄 인터페이스를 사용하거나 자체 코드에서 Amazon S3 API를 사용하면 됩니다.

업로드되면 비디오를 특정 TV 또는 연결된 디바이스에 필요한 크기, 해상 또는 형식으로 변환해야 할 수 있습니다. AWS Elemental MediaConvert를 사용하면 이를 자동으로 처리할 수 있습니다. MediaConvert는 S3의 콘텐츠를 처리하고 요청에 따라 트랜스코딩하고 결과를 다시 S3에 저장합니다. 트랜스코딩에서는 비디오 파일을 처리하고 우너래 콘텐츠의 압축 버전을 생성하여 크기를 줄이거나 형식을 변경하거나 재생 디바이스 호환성을 향상합니다.

콘텐츠가 안전하게 저장되고 사용자가 요청한 형식으로 제공할 수 있게 되면 다음 단계는 Amazon CloudFront를 통한 글로벌 전송입니다. Amazon 콘텐츠 전송 네트워크는 짧은 지연 시간과 높은 처리량으로 비디오를 전송하기 위해 엣지에 콘텐츠를 캐시합니다. 이 서비스는 원하는 양의 비디오를 제공할 수 있는 확장성을 갖추고 있습니다.

현재 사용할 수 있는 옵션은 두 가지입니다. 재생하기 전에 전체 비디오 파일을 디바이스로 전송하거나 디바이스로 스트리밍할 수 있습니다.

재생하기 전 전체 비디오 파일을 디바이스로 전송

첫 번째 옵션은 매우 쉽게 구현할 수 있고 모든 모바일 디바이스와 데스크톱에서 지원됩니다. 콘텐츠를 S3 버킷에 저장하고 해당 버킷을 가리키는 CloudFront 배포를 생성하기만 하면 됩니다. 그러면 사용자의 비디오 플레이어가 CloudFront URL(배포의 일부로 액세스 가능)을 사용하여 비디오 파일을 요청합니다. 이 요청은 사용자의 위치를 기반으로 최적의 엣지 로케이션으로 전달됩니다. CDN이 캐시에서 비디오를 제공하고 이미 캐시되지 않은 경우 S3 버킷에서 비디오를 가져옵니다. 이 옵션에는 몇 가지 단점이 있습니다. 시청자의 대역폭을 비효율적으로 사용합니다. 사용자가 전체 비디오를 보지 않아도 시청하지 않는 콘텐츠가 여전히 다운로드되며 이에 대한 비용을 지불하게 됩니다.

대부분 두 번째 옵션을 선호합니다. Apple의 HTTP Live Streaming (HLS), Dynamic Adaptive Streaming over HTTP (Dash), Microsoft의 Smooth Streaming (MSS) 및 Adobe의 HTTP Dynamic Streaming (HDS)를 비롯한 비디오 스트리밍 프로토콜 제품군은 사용자가 비디오를 시청함에 따라 이를 전송하고 일반적으로 필요한 시점보다 몇 초 먼저 콘텐츠를 가져오는 방식으로 사용자 경험을 향상합니다. 재생이 더 빨리 시작되고 빨리 감기가 효율적으로 수행되며 전반적으로 더 매끄러운 사용자 경험이 제공됩니다. 이 옵션을 사용하면 고객은 시청한 부분에 대해서만 비용을 지불하고 사용자의 대역폭을 낭비하지 않으며 사용자는 원하는 콘텐츠를 더 빨리 볼 수 있습니다.

두 번째 옵션을 구현하려면 고객이 몇 가지 작업을 수행해야 합니다. 먼저 MediaConvert를 사용하여 비디오 파일을 HLS 형식(가장 널리 지원되는 스트리밍 프로토콜)으로 변환합니다. 이 서비스는 비디오를 짧은 세그먼트로 분할하고 매니페스트 파일을 생성합니다. 그런 다음 CloudFront 배포가 매니페스트를 가리키게 합니다. 마지막으로 라이브 스트림을 재생하려면 사용자가 라이브 스트림 재생에 사용할 플레이어에 매니페스트 URL을 추가합니다. 예를 들어 매니페스트 파일이 myStream/playlist.m3u8이고 CloudFront 배포가 d111111abcdef8.cloudfront.net인 라이브 스트림을 재생하려면 http://d111111abcdef8.cloudfront.net/myStream/playlist.m3u8이라는 URL을 플레이어에 추가합니다.

라이브 스트리밍의 경우, 콘텐츠는 라이브 이벤트 또는 24x7 라이브 채널 전송에 해당합니다. 첫 번쨰의 경우라면 스포츠 경기, 시상식, 기조연설 및 시청률이 높은 라이브 이벤트를 스트리밍하는 방송사와 콘텐츠 수집자를 예로 들 수 있습니다.

두 번째의 경우라면 타사 배포 플랫폼 없이 직접 인터넷을 통해 시청자에게 라이브 선형 채널을 패키징하여 제공하려는 스튜디오, 방송사 및 유료 TV 서비스 사업자를 예로 들 수 있습니다.

몇 가지 간단한 단계를 따르면 AWS를 사용하여 비용 효율적으로 라이브 콘텐츠를 글로벌 시청자에게 브로드캐스트할 수 있습니다.

첫 번째 단계는 라이브 비디오 처리입니다. 이를 위해 라이브 비디오 스트림을 실시간으로 인코딩하는 AWS Elemental MediaLive를 사용하여 대규모 라이브 비디오 소스(예: AWS Elemental Live와 같은 온프레미스 인코더에서 수신됨)를 가져와 시청자에게 배포할 수 있는 더 작은 버전으로 압축할 수 있습니다.

두 번째 단계에서는 사용 사례에 따라 두 가지 옵션이 제공됩니다. AWS Elemental MediaPackage와 같은 JIPT(Just-In-Time Packaging) 오리진을 사용하여 비디오 콘텐츠를 단일 형식에서 여러 형식으로 변환하고 다양한 디바이스 유형에 맞춰 안전하게 패키징할 수 있습니다.

MediaPackage를 사용하면 시청자를 위해 DVR에서 주로 볼 수 있는 인기 있는 비디오 기능(다시 시작, 정지, 되감기 등)을 손쉽게 구현할 수 있습니다. 또한, DRM(Digital Rights Management)을 사용해 콘텐츠를 보호할 수 있습니다. 또는 인코더가 이미 모든 최종 시청자 대상 디바이스에 필요한 형식으로 콘텐츠를 보내는 경우, AWS Elemental MediaStore와 같은 확장 가능한 고성능 오리진을 사용할 수 있습니다. MediaPackage 및 MediaStore가 콘텐츠를 Amazon CloudFront로 전송하고 Amazon CloudFront가 라이브 이벤트를 시청하는 시청자에게 이를 라우팅합니다.

솔루션이 가동 및 실행되면 라이브 이벤트를 확장 가능하고 비용 효율적인 방식으로 전 세계로 브로드캐스트할 수 있습니다. CDN은 다양한 규모의 시청자를 수용할 수 있으며 "플래시 크라우드"를 처리할 수 있습니다.

note
  • 불안정한 네트워크 -> ABR (Adaptive bitrate streaming)
  • 다양한 패키지들의 생성, 저장, 전달 비용 -> JITP (Just-In-Time Packaging)

AWS Elemental MediaLive

추가적인 기능

  • 캡션 / 자막
  • 광고 삽입 (SCTE-35)
  • 광고 passthrough (SCTE-35)
  • 오디오 믹싱
  • 정적 키 암호화

AWS Elemental MediaPackage

  • JITP를 이용하여 디바이스에 맞는 컨텐츠를 보내고 DRM으로 보호
    • 하나의 소스에서 다양한 디바이스로 영상 전송
    • DRM 연동으로 콘텐츠 보호
    • DVR 기능 탑재

ABR + JITP ABR과 JITP를 한꺼번에 사용하면 mpeg-ts로 저장하고 mpeg dash의 경우 보이는 프로파일대로 전송이 가능하고 아이폰 같은 경우 아이폰에 맞게 hls 포맷을 맞춰 비트레이트도 조절을 해서 보내주게 됩니다.

media1

미디어 패키지는 이런 JITP를 지원하며 플레이어가 컨텐츠를 요청하면 미디어패키지는 클라이언트와 호환되는 형식으로 엔드포인트에서 직접 스트림을 할 수 있고 클라우드 프론트나 아니면 다른 CDN을 이용해서 캐시를 전달하게 할 수도 있습니다.

media2

미디어 패키지에 대해 조금 더 자세히 알아보면 미디어 패키지에는 채널이 있습니다. 채널은 미디어 라이브나 다른 인코더와 같은 소스에 라이브 컨텐츠 스트림을 수신해서 패키징한 후 엔드포인트로 보내는 통로라고 이해하면 좋습니다. 미디어 패키지는 인풋으로 애플 HLS만 허용을 하고 새로운 채널을 생성하면 Input URL이 만들어지게 됩니다.

media3

채널에는 리던던시를 위해서 두 개의 인풋을 만들 수 있습니다. 한 개의 인풋으로부터 세그먼트 듀레이션에 5초를 더한만큼 기다려도 아무런 세크먼트를 못받으면 자동으로 백업 소스로 전환하게 됩니다.

Endpoint 옵션

  • AD Markers
  • Time Delay
  • Startover Window
  • Segment Duration
  • Manifest Window

Endpoint 액세스 컨트롤 및 스트림 관련 기능

  • 액세스 컨트롤 설정
  • 스트림의 순서를 오름차순 내림차순
  • 임계값을 이용해서 재생할 수 있는 스트림 제한