홈 › 2장 미디어 파일 이해

2.4 MPEG Transport Stream - 방송 전송과 녹화 파일

188바이트 패킷, PID, PAT/PMT, PCR로 이루어진 MPEG-TS의 구조와 M2TS, HLS 세그먼트와의 관계, 손상에 강한 이유를 설명합니다.

최종 수정 2026-10-28 · 읽는 시간 약 3분 · 운영 프리즘(Prism) · 편집 원칙

#MPEG-TS는 "파일"이 아니라 "스트림"

MPEG-2 Transport Stream(MPEG-TS, TS) 은 방송 신호처럼 끊임없이 흘러오는 데이터를 전송하기 위해 설계된 형식입니다. 파일 앞부분에 전체 목차를 두는 MP4와 달리, 어느 지점에서 잘라도 그 지점부터 재생을 시작할 수 있게 만들어져 있습니다. 디지털 방송 수신기, 셋톱박스, 위성/케이블 송출, IPTV, 방송 녹화 장비가 모두 TS를 사용합니다.

#188바이트 패킷

TS의 가장 기본 단위는 188바이트 고정 길이 패킷입니다.

헤더 4B 0x47 … 페이로드 184B (또는 적응 필드 + 페이로드) PES 패킷 조각 / PSI 테이블(PAT, PMT) Sync Byte 0x47 · PID 13비트 · 연속성 카운터 총 188바이트가 한 패킷 — 이것이 계속 반복됩니다

헤더 4바이트의 주요 필드는 다음과 같습니다.

  • Sync Byte(0x47): 패킷의 시작 표시. 데이터가 깨져도 이 값을 188바이트 간격으로 찾아 다시 동기화합니다.
  • PID(Packet Identifier, 13비트): 이 패킷이 어떤 스트림(영상, 오디오, 테이블)에 속하는지 나타냅니다.
  • Continuity Counter(4비트): 같은 PID의 패킷에 붙는 순번. 번호가 건너뛰면 패킷이 유실된 것을 알 수 있습니다.

#프로그램 구성: PAT와 PMT

TS 안에는 여러 개의 방송 프로그램이 함께 실릴 수 있습니다. 어떤 PID가 무엇인지는 주기적으로 반복되는 두 개의 테이블이 알려줍니다.

  1. PAT(Program Association Table, PID 0): 이 스트림에 어떤 프로그램들이 있고, 각 프로그램의 PMT는 어느 PID에 있는지 알려줍니다.
  2. PMT(Program Map Table): 한 프로그램을 구성하는 영상·오디오·자막 스트림의 PID와 코덱 종류를 알려줍니다.
PAT  : 프로그램 1 → PMT는 PID 0x0100
PMT  : 영상(H.264) = PID 0x0101,  오디오(AAC) = PID 0x0102,  PCR = PID 0x0101

플레이어는 중간부터 들어와도 PAT/PMT가 곧 다시 나오므로, 그 순간부터 재생을 시작할 수 있습니다. 이 점이 방송 수신에 적합한 이유입니다.

#시간 동기: PCR, PTS, DTS

TS에는 영상과 소리를 맞추는 시간 정보가 별도로 있습니다.

  • PCR(Program Clock Reference): 송신 쪽 기준 시계(27MHz). 수신기가 이 값을 받아 자신의 시계를 맞춥니다.
  • PTS(Presentation Time Stamp): 이 프레임을 언제 화면에 보여줄지.
  • DTS(Decoding Time Stamp): 이 프레임을 언제 디코딩할지. B프레임이 있으면 PTS와 DTS가 달라집니다.

#녹화 파일로서의 TS

방송을 녹화하면 대부분 TS 파일이 만들어집니다. TS 파일의 특징은 다음과 같습니다.

특징 설명
손상에 강함 일부가 깨져도 Sync Byte부터 다시 동기화해 나머지를 재생 가능
녹화 중에도 재생 가능 파일 뒤에 이어 써도 앞부분은 이미 재생 가능한 상태
탐색이 불편함 전체 인덱스가 없어, 도구가 PCR/PTS를 스캔하며 위치를 추정
길이 정보 없음 전체 길이는 처음과 끝 PTS를 읽어 계산해야 함
오버헤드 188바이트 단위 패킷화로 용량이 다소 증가

M2TS(192바이트 패킷) 는 TS 패킷 앞에 4바이트 타임스탬프를 붙인 변형으로, 블루레이와 AVCHD 캠코더에서 쓰입니다. 확장자 .m2ts, .mts가 이에 해당합니다.

#HLS와의 관계

HTTP Live Streaming(HLS)은 영상을 수 초 단위의 TS 세그먼트(.ts)로 쪼개고 .m3u8 재생 목록으로 묶어 전달하는 방식입니다(현재는 fMP4 세그먼트도 널리 쓰입니다). TS 세그먼트가 각자 PAT/PMT를 포함하고 독립적으로 재생되는 구조가 HLS에 잘 맞았기 때문입니다.

#직접 확인하기

# 프로그램/스트림 구성 확인
ffprobe -v error -show_programs -of compact recording.ts

# TS를 MP4로 재래핑 (AAC 오디오인 경우)
ffmpeg -i recording.ts -c copy -bsf:a aac_adtstoasc -movflags +faststart out.mp4

#정리

  • TS는 188바이트 패킷의 연속이며, PID로 스트림을 구분하고 PAT/PMT로 구성을 알립니다.
  • 방송 수신과 녹화에 적합하지만, 길이·탐색 정보가 약해 MAM에서는 보통 정규화 변환 대상입니다.
  • M2TS(192바이트)와 HLS 세그먼트도 같은 계열입니다.