중요 개념

파일 패키징 및 언패키징 in OTT 및 RTC: MP4, FLV 및 TS 컨테이너 이해하기

10 분 읽기
Feb 18, 2025

오버 더 톱(OTT) 및 실시간 통신(RTC) 기술의 세계에서 파일 패키징과 언패키징은 오디오-비주얼 콘텐츠를 관리하고 전송하는 데 중요한 역할을 합니다. 이 블로그 게시물에서는 패키징과 언패키징의 개념을 다루고, MP4, FLV 및 TS라는 세 가지 인기 있는 컨테이너 형식에 중점을 둡니다.

패키징의 필요성

오디오 및 비디오 데이터가 각자의 인코더를 통과한 후, 우리는 일반적으로 AAC 스트림(오디오)과 H.264 스트림(비디오)의 두 개의 별도의 데이터 스트림을 얻게 됩니다. 이러한 스트림은 서로 다른 출처(오디오는 마이크, 비디오는 카메라)에서 발생하며, 서로 다른 구성 요소에 의해 처리되기 때문에 분리되어 있습니다.

그러나 실제 애플리케이션에서는 오디오와 비디오 스트림이 독립적으로 사용되는 경우가 드뭅니다. 동일한 장면의 사운드와 비주얼을 동기화하기 위해서는 오디오와 비디오 데이터를 하나의 파일로 패키징해야 합니다.

패키징이란?

패키징, 또는 다중화(muxing)는 여러 데이터 스트림을 하나의 컨테이너 파일로 결합하는 과정입니다. 패키징의 주요 목적은 다음과 같습니다:

  1. 동일한 장면의 정보를 통합하기 위해.
  2. 오디오-비디오 동기화 및 통합 구성을 용이하게 하기 위해.

결과적으로 패키징된 파일은 컨테이너라고 불립니다. 일반적인 컨테이너 형식에는 MP4, FLV, TS, AVI 및 MKV가 포함됩니다.

컨테이너, 비디오 스트림, 오디오 스트림, 메타데이터, OTT, 실시간 통신, 파일 패키징, MP4, FLV, TS, 오디오-비주얼 콘텐츠, 동기화

메타데이터: 효율적인 재생의 열쇠

컨테이너는 다양한 크기의 상자와 같으며, 어떤 것은 다양한 코덱 형식을 지원하고(MKV처럼), 어떤 것은 적은 수만 지원합니다(AVI처럼). 효율적인 재생을 가능하게 하기 위해 컨테이너는 메타데이터를 포함합니다 - 패키징된 미디어에 대한 정보입니다.

메타데이터에는 일반적으로 다음이 포함됩니다:

  • 오디오 및 비디오에 대한 코덱 정보
  • 해상도
  • 프레임 속도
  • 비트 전송률
  • 샘플 속도
  • 비트 깊이
  • 오디오 채널 수

미디어 플레이어가 파일 재생을 시작하면 먼저 메타데이터를 읽어 어떤 코덱을 사용할지 및 재생을 시작하기 전에 얼마나 많은 버퍼 공간을 할당할지를 결정합니다.

온라인 스트리밍의 경우 "다운로드 중 재생" 기능과 같은 기능을 갖추려면 파일의 시작 부분에 메타데이터가 있어야 합니다. 일부 패키징 형식은 메타데이터를 끝에 배치하여, 메타데이터를 이동하기 위해 트랜스코딩하거나 재생을 시작하기 전에 전체 파일을 다운로드해야 합니다.

인기 있는 컨테이너 형식

OTT 및 RTC 시스템에서 사용되는 세 가지 인기 있는 컨테이너 형식을 살펴보겠습니다:

1. MP4 (MPEG-4 Part 14)

MP4는 다양한 유형의 데이터를 포함할 수 있는 다재다능한 미디어 파일 구조 표준입니다. 대부분의 MP4 파일은 H.264 또는 MPEG-4 인코딩 비디오와 AAC 인코딩 오디오를 포함합니다.

MP4 파일은 일련의 중첩된 "박스"로 구조화되어 있습니다. 여기 몇 가지 일반적인 박스 유형이 있습니다:

미디어 컨테이너의 메타데이터: 효율적인 재생의 열쇠

- 미디어 재생에서 메타데이터의 정의 및 중요성
- 일반적인 컨테이너 형식: MP4

박스 유형설명
ftyp파일 유형, 파일 형식을 나타냄
moov메타데이터 컨테이너, 파일 메타데이터 저장
mvhd영화 헤더, 파일 헤더 정보 포함
trak트랙 컨테이너, 오디오/비디오 트랙 정보 보유
tkhd트랙 헤더, 트랙 헤더 정보 포함
mdia미디어 정보
mdhd미디어 헤더, 미디어 헤더 정보 정의
hdlr핸들러, 트랙 유형(비디오/오디오/힌트) 지정
minf미디어 정보, 미디어 데이터 포함
stbl샘플 테이블, 샘플 매핑 정보 저장
mdat미디어 데이터 컨테이너, 실제 미디어 데이터 보유

2. FLV (플래시 비디오)

FLV는 Adobe에서 개발한 인기 있는 웹 비디오 컨테이너 형식입니다. 단순한 구조와 쉬운 디코딩으로 인해 온라인 비디오에 이상적이며, Adobe의 RTMP 프로토콜과 결합될 때 특히 그렇습니다.

FLV 파일은 FLV 헤더와 FLV 본체로 구성됩니다:

FLV 헤더 | 태그0 | 태그0 데이터 | 태그1 | 태그1 데이터 | ... | 태그N | 태그N 데이터

FLV 본체는 여러 태그로 구성되어 있으며, 이는 오디오, 비디오 또는 스크립트(키워드 또는 파일 정보용)일 수 있습니다.

FLV 헤더 구조:

필드설명
서명(3B)항상 "FLV" (0x46 0x4C 0x56)
버전(1B)버전 번호, 일반적으로 0x01
플래그(1B)비트 5-7: 0, 비트 6: 오디오 태그 존재, 비트 7: 비디오 태그 존재
헤더 크기(4B)FLV 헤더의 크기, 일반적으로 9

FLV 본체 구조(각 태그에 대해):

필드설명
이전 태그 크기이전 태그의 크기
태그 유형오디오(0x08), 비디오(0x09) 또는 스크립트(0x12)
데이터 크기태그의 데이터 부분 크기
타임스탬프태그의 타임스탬프
스트림 ID스트림 식별자
태그 데이터실제 미디어 데이터

3. TS (전송 스트림)

TS는 MPEG-2 표준에 의해 정의되며, 디지털 비디오 방송 및 HTTP 라이브 스트리밍(HLS) 프로토콜에서 일반적으로 사용됩니다.

TS 패키징 과정:

  1. 초기 스트림(ES) - 원시 인코딩된 오디오 또는 비디오 데이터
  2. 패킷화된 초기 스트림(PES) - ES 데이터를 PES 패킷으로 패키징
  3. 전송 스트림(TS) - PES 패킷을 TS 패킷으로 다중화

TS 패킷은 188 바이트의 고정 크기를 가지며, 헤더와 페이로드로 구성됩니다.

결론

파일 패키징과 언패키징을 이해하는 것은 OTT 및 RTC 기술에서 작업하는 모든 사람에게 매우 중요합니다. 각 컨테이너 형식은 강점이 있으며, 다양한 사용 사례에 적합합니다:

  • MP4는 인터넷 비디오 온디맨드 서비스에 널리 사용됩니다
  • FLV는 라이브 스트리밍과 비디오 온디맨드 모두에 인기가 있습니다
  • TS는 HTML5 비디오 전송을 위한 HLS에서 일반적으로 사용됩니다

디지털 미디어 분야가 계속 발전함에 따라 이러한 컨테이너 형식과 그 응용 프로그램에 대한 최신 정보를 유지하는 것이 효율적이고 고품질의 오디오-비디오 스트리밍 솔루션을 개발하는 데 필수적입니다.