다이나믹 매니페스트와 HLS 재생 목록의 유연성

bc_campaign_editor_2의 사진
bc_campaign_editor_2
블로그 플레이스홀더 이미지

수년 동안 인터넷 스트리밍의 기본 모델에는 서버 기반 독점 기술인 RTMP 또는 프로그레시브 다운로드의 두 가지가 있었습니다. 서버 기반 스트리밍은 필요에 따라 전환할 수 있는 다중 비트레이트 스트림을 전송할 수 있지만 고가의 소프트웨어 라이선스가 필요합니다. 프로그레시브 다운로드는 Apache를 통해 수행할 수 있지만 비트레이트 전환 시 재생을 중지해야 합니다.

HLS 및 스무스 스트리밍과 같은 HTTP 기반 스트리밍 프로토콜의 등장으로 Apache와 같은 상용 서버 기술을 사용하는 표준 HTTP 연결을 통해 스트리밍 전송이 가능해졌고, 원활한 비트레이트 전환이 일반화되었으며, CDN을 통한 전송은 근본적으로 모든 파일을 HTTP로 전송하는 것과 동일하기 때문에 간단해졌습니다. HTTP 스트리밍은 고품질 스트리밍의 비용과 복잡성을 크게 줄이면서 스트리밍 미디어 전송에 혁명을 가져왔습니다.

동영상 플랫폼을 설계할 때 고려해야 할 사항은 무수히 많습니다. 하지만 가장 중요하면서도 흔히 간과되는 결정 중 하나는 HTTP 기반 매니페스트 파일을 처리하는 방법입니다.

정적 매니페스트 파일

실제 세계에서는 비디오를 구매할 때 포장을 살펴보고 상자를 들고 계산대로 가서 계산원에게 돈을 지불하고 집에 가서 플레이어에 삽입합니다.

대부분의 동영상 플랫폼은 매우 유사한 구조로 되어 있습니다. 기본적으로 메타데이터 그룹(상자)은 재생 가능한 미디어 항목(동영상)과 연결되어 있습니다. 대부분의 동영상 플랫폼은 메타데이터를 단일 MP4 동영상에 연결하는 단일 URL 개념으로 시작합니다. 동영상 플랫폼이 복잡해지면 여러 비트레이트, 해상도 또는 미리보기나 특수 기능과 같은 주요 항목과 관련된 다른 미디어를 나타내는 메타데이터에 연결된 여러 URL이 있을 수 있습니다.

물리적 모델을 HLS와 같은 HTTP 기반 스트리밍 프로토콜을 포함하는 온라인 스트리밍 세계로 확장하려고 하면 상황이 더 복잡해집니다. HLS는 매니페스트라고 하는 텍스트 파일로 서로 연결된 비디오 파일의 여러 조각을 기반으로 합니다. HLS를 구현할 때 가장 간단한 방법은 매니페스트 또는 m3u8 파일로 연결되는 URL을 추가하는 것입니다. 이 방법은 매우 쉽고 기본적으로 기존 모델에 적합하다는 장점이 있습니다.

단점은 HLS가 정적 미디어 항목과 다르다는 점입니다. 예를 들어 MP4는 DVD의 비디오 트랙과 매우 유사하며, 단일 해상도와 비트레이트의 단일 비디오입니다. HLS 매니페스트는 대부분 여러 비트레이트, 해상도, 수천 개의 조각난 비디오 조각으로 구성됩니다. HLS는 MP4보다 훨씬 더 많은 용량을 처리할 수 있는데 왜 똑같이 취급해야 할까요?

HLS 재생 목록

HLS 재생 목록에는 스트림의 기본 요소를 설명하는 일부 메타데이터와 동영상 조각에 대한 정렬된 링크 세트가 포함되어 있습니다. 각 조각 또는 비디오 세그먼트를 다운로드하여 순서대로 재생하면 사용자는 하나의 연속 비디오처럼 보이는 것을 시청할 수 있습니다.

  • EXTM3U
  • #EXT-X-재생목록-유형:VOD
  • #EXT-X-TARGETDURATION:10
  • #EXTINF:10,
  • file-0001.ts
  • #EXTINF:10,
  • file-0002.ts
  • #EXTINF:10,
  • file-0003.ts
  • #EXTINF:10,
  • file-0003.ts
  • #EXT-X-ENDLIST

위는 기본 m3u8 재생 목록입니다. 4개의 동영상 세그먼트로 연결됩니다. 이 데이터를 프로그래밍 방식으로 생성하려면 첫 번째 항목의 파일 이름, 세그먼트의 목표 지속 시간(이 경우 10초), 총 세그먼트 수만 있으면 됩니다.

HLS 매니페스트

HLS 매니페스트는 재생 목록에 대한 정렬되지 않은 일련의 링크입니다. 재생 목록이 여러 개 있는 이유는 다양한 비트레이트 제공과 백업 재생 목록 제공이라는 두 가지입니다. 다음은 각 .m3u8이 다른 HLS 재생목록에 대한 상대 링크인 일반적인 재생목록입니다.

  • #EXTM3U
  • #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2040000
  • file-2040k.m3u8
  • #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1540000
  • file-1540k.m3u8
  • #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1040000
  • file-1040k.m3u8
  • #EXT-X-스트림-정보:프로그램-ID=1,대역폭=640000
  • file-640k.m3u8
  • #EXT-X-스트림-정보:프로그램-ID=1,대역폭=440000
  • file-440k.m3u8
  • #EXT-X-스트림-정보:프로그램-ID=1,대역폭=240000
  • file-240k.m3u8
  • #EXT-X-스트림-정보:프로그램-ID=1,대역폭=64000
  • file-64k.m3u8

재생 목록은 네트워크 상태에 관계없이 원활한 재생을 제공하기 위해 다양한 비트레이트와 해상도로 구성됩니다. 매니페스트를 생성하는 데 필요한 것은 각 재생 목록의 비트레이트와 상대 경로뿐입니다.

빈칸 채우기

온라인 동영상 플랫폼이 인코딩된 각 동영상 자산에 대해 캡처해야 하는 중요한 정보는 동영상 코덱, 오디오 코덱, 컨테이너, 총 비트레이트 등 여러 가지가 있습니다. 단일 동영상 항목에 대해 저장되는 데이터는 시청자에게 의미 있고(설명, 평점, 출연자), 플랫폼에 의미 있고(재생 시간, 조회수, 참여도), 애플리케이션에 의미 있는(포맷, 해상도, 비트레이트) 데이터여야 합니다. 이 데이터를 통해 시청자는 시청할 콘텐츠를 결정하고, 시스템은 프로그래밍 방법을 결정하고, 애플리케이션은 재생 방법을 결정할 수 있습니다.

재생 목록, 매니페스트 및 각 재생 목록에 대한 코덱 정보를 프로그래밍 방식으로 생성하는 데 필요한 데이터를 캡처하면 요청마다 매니페스트와 재생 목록이 생성되는 시스템을 갖출 수 있습니다.

예 - 첫 번째 재생 목록

HLS 사양은 매니페스트에서 가장 먼저 오는 재생 목록이 재생할 첫 번째 항목으로 선택되도록 결정합니다. 이전 섹션의 예시에서는 목록의 첫 번째 항목도 최고 음질의 트랙이었습니다. 인터넷 연결이 빠르고 안정적인 사용자에게는 괜찮지만 연결 속도가 느린 사용자에게는 재생이 시작되는 데 시간이 걸립니다.

디바이스의 인터넷 연결 상태가 양호한지 확인한 다음 그에 따라 재생 목록을 사용자 지정하는 것이 좋습니다. 다행히도 동적 매니페스트 생성을 사용하면 시스템이 바로 이러한 작업을 수행할 수 있도록 설정되어 있습니다.

이 연습에서는 비트레이트의 정렬된 배열로 매니페스트 요청이 이루어진다고 가정합니다. 예를 들어 [2040,1540,1040,640,440,240,64]를 요청하면 이전 섹션의 재생 목록과 동일한 재생 목록이 반환됩니다. iOS에서는 사용자가 Wi-Fi를 사용 중인지 아니면 셀룰러 연결을 사용 중인지 확인할 수 있습니다. 비트 전송률, 해상도 및 기타 매개 변수를 포함하여 각 재생 목록에 대한 데이터가 캡처되었으므로 앱은 매니페스트의 순서를 지능적으로 결정할 수 있습니다.

예를 들어, 사용자가 와이파이를 사용하는 경우 800~1200kbps, 셀룰러 연결을 사용하는 경우 200~600kbps 사이에서 시작하는 것이 가장 좋다고 판단할 수 있습니다. 사용자가 와이파이를 사용하는 경우 앱은 다음과 같은 배열을 요청합니다: [1040,2040,1540,640,440,240,64]. 앱이 셀룰러 연결만 감지했다면 [440,2040,1540,1040,640,240,64]를 요청할 것입니다.

예시 - 레거시 디바이스

Android에서 동영상 지원은 다소 까다로운 편입니다. 수년 동안 공식 Android 문서는 특정 모델이 1080p를 처리할 수 있음에도 불구하고 640×480 기준 h.264 mp4 비디오 사용만 지원했습니다. HLS의 경우 지원은 훨씬 더 세분화되어 있고 이해하기 어렵습니다.

다행히도 Android는 소수의 대표 기기가 주도하고 있습니다. 동적 매니페스트를 통해 앱은 시작하기에 가장 좋은 재생 목록을 타겟팅할 수 있을 뿐만 아니라 호환되지 않는 것으로 판단되는 재생 목록은 제외할 수 있습니다.

미디어 항목은 해상도 및 코덱 정보와 같은 데이터도 캡처하기 때문에 특정 디바이스를 대상으로 지원할 수 있습니다. 앱이 모든 렌더링을 전송하도록 결정할 수 있습니다: [2040,1540,1040,640,440,240,64]. 또는 720p까지만 지원하는 구형 디바이스에서는 가장 높은 렌더링을 제거할 수 있습니다: [1540,1040,640,440,240,64]. 또한 모바일 디바이스 외에도 앱이 커넥티드 TV인 경우 가장 낮은 화질의 렌더링이 제거될 수 있습니다: [2040,1540,1040,640].

동적 또는 정적

정적 매니페스트 모델을 선택하는 것도 괜찮습니다. 유연성은 다소 떨어지지만 단순성이라는 장점이 있습니다. 특히 사용자 제작 콘텐츠 세계에서 많은 사용 사례는 동적 생성과 관련된 복잡성을 필요로 하지 않지만, 동적 매니페스트 생성은 과감하게 도전하려는 사람들에게 많은 가능성을 열어줍니다.

매니페스트를 처리하는 방법은 동영상 플랫폼의 장기적인 유연성에 큰 영향을 미치므로 상주 압축 전문가와 논의해야 할 사항입니다.

공유 

태그

브라이트코브는 한 진단 장비 제조업체가 수업 시간과 비용을 줄이면서 성공을 개선할 수 있도록 지원했습니다.
브라이트코브는 가장 유명한 자동차 시장에서 방대한 레거시 비디오 라이브러리를 관리하고 수익을 창출할 수 있도록 지원합니다....
브랜드 무결성을 유지하기 위해 리테일 브랜드는 색상, 글꼴 등을 조정할 수 있는 맞춤형 동영상 플레이어가 필요합니다.

시작할 준비가 되셨나요?

브라이트코브로 영상 마케팅 성과와 ROI를 높이는 방법을 알아보세요. 지금 문의하시면 자세히 상담해드립니다.