HLS 매니페스트와 비디오 연결하기

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

이 글은 HTTP 라이브 스트리밍(HLS)에 초점을 맞추고 있지만 기본 개념은 다른 HTTP 기반 스트리밍 프로토콜에도 유효합니다. HLS 프로토콜에 대한 자세한 설명은 이 글의 범위를 벗어나지만, 공개된 표준을 비롯한 다양한 정보를 온라인에서 확인할 수 있습니다: HTTP 라이브 스트리밍.

연결과 기존 방식

콘텐츠는 곧 가치이므로, 동영상 세계에서 더 많은 가치를 창출하는 한 가지 방법은 하나의 동영상을 촬영하고 다른 동영상과 혼합하여 새로운 콘텐츠를 만드는 것입니다. 이러한 작업은 여러 동영상을 연결하거나 여러 동영상을 이어 붙이는 기능을 통해 이루어지는 경우가 많은데, 이는 편집의 기본 형태입니다. 여기에 편집 목록을 통한 클립 생성 기능을 추가하면 비선형 편집기의 가장 기본적인 두 가지 기능을 사용할 수 있습니다.

연결은 유망해 보이지만 인프라와 운영 모두에 부담을 줄 수 있습니다. 소셜 비디오 포털을 상상해 보세요. 대상 디바이스에 따라 동영상당 몇 개에서 수십 개의 출력 형식이 있을 수 있습니다. 라이브러리의 가치를 확장하기 위해 여러 비디오를 연결하기로 결정하면 스토리지 비용과 자산 관리의 복잡성이 크게 증가하게 됩니다. 새로운 비디오 조합이 생성될 때마다 일련의 고정 자산이 생성되어 저장해야 합니다.

HTTP 라이브 스트리밍과 매니페스트 파일

매니페스트 기반 HTTP 기반 스트리밍 프로토콜의 도입으로 동적 시청 환경을 만들기 위한 완전히 새로운 패러다임이 만들어졌습니다. 기존에는 하나의 콘텐츠에서 여러 클립 조합을 전송할 수 있는 유일한 옵션은 편집, 즉 고정 자산 생성을 통한 것이었습니다. 재생 가능한 항목이 더 이상 비디오 파일이 아니라 단순한 텍스트 파일이기 때문에 HLS와 같은 기술을 사용하면 비디오를 편집하는 것은 워드 프로세서에서 문서를 편집하는 것과 동일합니다.

동영상 플랫폼의 경우, HLS m3u8 매니페스트 파일을 처리하는 방법에는 두 가지가 있습니다. 가장 간단하게는 m3u8 파일을 재생 가능한 개별 에셋으로 취급할 수 있습니다. 이 모델에서는 m3u8이 세그먼트화된 TS 파일과 함께 오리진 서버에 저장되어 디바이스에 전달됩니다. 결과는 간단하고 빠르게 구현할 수 있지만, m3u8 파일은 수동 프로세스를 통해서만 변경할 수 있습니다.

대신 매니페스트를 동적으로 생성되는 것으로 취급함으로써 시청자에게 사실상 무한한 클립 조합을 제공할 수 있습니다. 이 모델에서 m3u8은 즉석에서 생성되므로 서버에 저장되지 않고 요청이 있을 때마다 생성되어 전달됩니다.

동적 매니페스트 생성

매니페스트 파일이란 무엇인가요? 가장 기본적으로 매니페스트 파일은 일부 메타데이터와 동영상 세그먼트에 대한 링크의 조합입니다.

  • 예시 동영상 A
  • #EXTM3U
  • #EXT-X-MEDIA-SEQUENCE:0
  • #EXT-X-TARGETDURATION:10
  • #EXTINF:10,
  • Exemplary_A_segment-01.ts
  • #EXTINF:10,
  • Exemplary_A_segment-02.ts

위의 m3u8에는 각각 10초 길이의 동영상 세그먼트가 두 개 있으므로 총 동영상 길이는 20초입니다. 그런데 정말 훌륭한 동영상인 예시 동영상 A는 길이가 20초입니다. 이제 우리도 있다고 가정해 봅시다:

  • 예시 동영상 B
  • #EXTM3U
  • #EXT-X-MEDIA-SEQUENCE:0
  • #EXT-X-TARGETDURATION:10
  • #EXTINF:10,
  • Exemplary_B_segment-01.ts
  • #EXTINF:10,
  • Exemplary_B_segment-02.ts

또한 특정 시청자가 비디오 B를 먼저 실행하고 비디오 A를 두 번째로 실행하여 두 비디오를 조합하여 시청하는 것을 좋아할 것이라는 사실을 알고 있다고 가정해 보겠습니다:

  • 멋진 비디오
  • #EXTM3U
  • #EXT-X-MEDIA-SEQUENCE:0
  • #EXT-X-TARGETDURATION:10
  • #EXTINF:10,
  • Exemplary_B_segment-01.ts
  • #EXTINF:10,
  • Exemplary_B_segment-02.ts
  • #EXT-X-DISCONTINUITY
  • #EXTINF:10,
  • Exemplary_A_segment-01.ts
  • #EXTINF:10,
  • Exemplary_A_segment-02.ts

이제 원본에 저장해야 하는 영구 에셋을 만들지 않고, 새 에셋을 만들기 위해 편집기를 사용하지 않고도 즉시 비디오 B로 시작하여 비디오 A로 이어지는 새로운 비디오를 생성했습니다. 이 비디오는 마치 하나의 비디오인 것처럼 원활하게 재생됩니다.

m3u8에 작은 기능이 추가된 것을 눈치채셨을 겁니다:

EXT-X-불연속성

이 태그를 m3u8에 넣으면 플레이어가 다음 동영상 세그먼트가 이전 동영상과 다른 해상도 또는 다른 오디오 프로필을 가질 것으로 예상합니다. 동영상이 모두 동일한 해상도, 코덱 및 프로필로 인코딩된 경우 이 태그를 생략할 수 있습니다.

새 모델 확장

즉석에서 맞춤형 재생 경험을 제공할 수 있는 비디오 플랫폼을 만들기 위해서는 m3u8 매니페스트를 고정 자산이 아니라 요청에 따라 생성해야 하는 것으로 취급해야 합니다. 즉, 백엔드는 비디오의 모든 세그먼트의 위치, 항목당 총 세그먼트 수, 각 세그먼트의 길이를 알고 있어야 합니다.

이 작업을 더 간단하게 할 수 있는 방법이 있습니다. 예를 들어, 파일 이름을 일관되게 지정하면 모든 세그먼트에 대해 기본 파일 이름만 알면 되고 세그먼트 반복은 프로그래밍 방식으로 처리할 수 있습니다. 최종 세그먼트를 제외한 모든 세그먼트의 목표 길이가 같다고 가정할 수 있으므로 최종 세그먼트의 길이만 저장하면 됩니다. 따라서 여러 개의 동영상 세그먼트가 있는 단일 동영상 파일의 경우 기본 경로, 기본 파일 이름, 세그먼트 수, 평균 세그먼트 길이, 마지막 세그먼트 길이만 저장하면 됩니다.

긴 형식의 타이틀도 장면의 조합으로 간주하거나 더 나아가 장면을 샷의 조합으로 간주하면 동적 매니페스트 생성을 통해 얻을 수 있는 엄청난 양의 파워가 있습니다. 초기에 계획하고 구축하면 운영 또는 인프라 비용의 추가 증가 없이도 전송 플랫폼 아키텍처의 유연성을 크게 향상시킬 수 있습니다.

공유 

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

시작할 준비가 되셨나요?

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