MPEG 프로그램 스트림

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

MPEG 프로그램 스트림은 공통 시간 기준을 공유하는 하나 이상의 패킷화된 기본 스트림을 단일 스트림으로 결합하여 생성된다. 이는 디스크와 같이 비교적 신뢰할 수 있는 미디어를 위해 설계되었으며, 가변 크기 레코드와 시작 코드의 최소한의 사용을 특징으로 한다. MPEG-2 프로그램 스트림은 MPEG-1 및 MPEG-2 비디오 및 오디오, 그리고 MPEG-4 비디오 및 오디오를 포함할 수 있으며, 비표준 데이터를 위한 기능을 가지고 있다. 프로그램 스트림은 팩 헤더와 시스템 헤더로 구성되며, 헥사 에디터로 파일 구조를 확인할 수 있다.

MPEG 프로그램 스트림 - [IT 관련 정보]에 관한 문서
개요
{"caption":"여러 종류의 디지털 오디오, 비디오 및 데이터를 다중화하기 위한 컨테이너 형식"}
일반 정보
파일 확장자.mpg, .mpeg, .m2p, .ps
MIME 형식video/MP2P, video/MP1S, video/mpeg
유니폼 타입public.mpeg
개발MPEG
발표일1993년 8월
최신 버전 발표일2019년 6월
종류컨테이너 형식
포함 내용오디오, 비디오, 데이터
확장 형식VOB, EVO, MOD
표준ISO/IEC 11172-1, ISO/IEC 13818-1, ITU-T H.222.0
개방 여부
사용료
기술 정보
컨테이너 대상오디오, 비디오, 데이터
📚 더 읽어볼만한 페이지
  • MPEG-2 - H.262/MPEG-2 파트 2
    H.262/MPEG-2 파트 2는 디지털 TV 및 DVD 등에 사용되는 영상 압축 표준으로, HDTV 카메라의 비압축 영상 스트림을 효율적으로 압축하기 위해 다양한 화면 샘플링 기술을 활용하며, DVD-Video, HDV, XDCAM 등에서 활용된다.
  • MPEG-2 - MPEG 트랜스포트 스트림
    MPEG 트랜스포트 스트림은 디지털 방송 및 저장 매체에서 오디오, 비디오 등 데이터를 전송하기 위한 컨테이너 형식이며, 패킷, PID, PSI 등으로 구성되어 다중화 및 역다중화 과정을 거쳐 데이터를 효율적으로 전송한다.
  • ITU-T 권고 - 비대칭 디지털 가입자 회선
  • ITU-T 권고 - 팩시밀리
  • MPEG - ATSC
    ATSC는 디지털 텔레비전 방송 표준을 개발하는 미국 기관으로, 1996년 ATSC 1.0 표준이 채택된 후 H.264 코덱을 지원하는 개정판이 승인되었으며, 미국을 비롯한 여러 국가에서 디지털 방송 전환에 사용되었으나 특허 문제와 기술적 한계, 국가별 적용 차이 등의 이슈가 있고, 최근에는 ATSC 3.0이 개발되어 도입되고 있다.
  • MPEG - MPEG-1 오디오 레이어 II
    MPEG-1 오디오 레이어 II (MP2)는 디지털 오디오 압축 표준으로, 디지털 오디오 방송, 디지털 멀티미디어 방송, 디지털 비디오 방송 등 다양한 분야에서 사용되며, MUSICAM 오디오 코덱을 기반으로 하고, MP3와 비교하여 시간 해상도가 높고 오류에 대한 강인성이 강한 특징을 가진다.

2. 코딩 구조

프로그램 스트림은 공통의 시간 기준을 갖는 하나 이상의 패킷화된 기본 스트림 (PES)을 단일 스트림으로 결합하여 생성된다. 이는 데이터 손실 가능성이 있는 MPEG 전송 스트림과 달리, 하드 디스크와 같이 비교적 신뢰할 수 있는 미디어를 위해 설계되었다. 프로그램 스트림은 가변 크기 레코드와 시작 코드의 최소한의 사용을 특징으로 하여 오버헤드를 줄이는 데 중점을 둔다.

2.1. 프로그램 스트림의 구성 요소

프로그램 스트림은 공통의 시간 기준을 갖는 하나 이상의 패킷화된 기본 스트림 (PES)을 단일 스트림으로 결합하여 생성된다. 이는 데이터 손실이 발생할 가능성이 있는 MPEG 전송 스트림과 달리, 하드 디스크와 같이 비교적 신뢰할 수 있는 미디어를 위해 설계되었다. 프로그램 스트림은 가변 크기 레코드와 시작 코드의 최소한의 사용을 특징으로 하는데, 이는 공중 수신을 어렵게 만들지만 오버헤드는 적다. 프로그램 스트림 코딩 계층은 MPEG 전송 스트림과 달리 하나 이상의 기본 스트림으로 구성된 하나의 프로그램만 단일 스트림으로 패키징할 수 있다.

프로그램 스트림은 다양한 종류의 데이터를 포함할 수 있다.

👆
좌우로 밀어서 보기
프로그램 스트림에 포함 가능한 데이터 유형
구분종류
표준 비디오MPEG-1 Part 2, MPEG-2 Part 2
표준 오디오MPEG-1 Part 3 (MP3, MP2, MP1), MPEG-2 Part 3
드물게 사용되는 비디오MPEG-4 Part 2
드물게 사용되는 오디오MPEG-2 Part 7 (AAC), MPEG-4 Part 3 (AAC)
비표준 데이터
(개인 스트림 형태)
AC-3 오디오, 자막 등


또한, MPEG-2 프로그램 스트림은 소위 개인 스트림(private stream) 형태의 비표준 데이터(예: AC-3 오디오 또는 자막)를 위한 기능을 가지고 있다. 국제 표준화 기구(ISO)는 SMPTE 등록 기관(SMPTE Registration Authority, LLC)을 MPEG-2 형식 식별자의 등록 기관으로 승인했으며, 이 기관은 MPEG-2 전송 스트림 및 프로그램 스트림에 캡슐화될 수 있는 압축 형식 목록을 게시한다.

2.2. 프로그램 스트림과 전송 스트림

프로그램 스트림(Program Stream, PS)은 공통의 시간 기준을 갖는 하나 이상의 패킷화된 기본 스트림(Packetized Elementary Stream, PES)을 단일 스트림으로 결합하여 생성된다. 이는 데이터 손실 가능성이 있는 환경을 고려한 MPEG 전송 스트림(Transport Stream, TS)과 달리, DVD와 같이 비교적 오류 발생이 적은 저장 매체에 적합하게 설계되었다.

프로그램 스트림은 가변 크기 레코드를 사용하고 시작 코드 사용을 최소화하여 오버헤드가 적다는 장점이 있지만, 이 때문에 공중파 전송에는 어려움이 따른다. 또한, MPEG 전송 스트림은 여러 프로그램을 하나의 스트림에 담을 수 있는 반면, 프로그램 스트림은 하나의 프로그램만을 담을 수 있다는 차이가 있다.

MPEG-2 프로그램 스트림은 MPEG-1 Part 2 비디오, MPEG-2 비디오, MP1, MP2, MP3와 같은 MPEG-1 Part 3 오디오, 또는 MPEG-2 Part 3 오디오를 포함할 수 있다. 드물지만 MPEG-4 비디오, AAC(MPEG-2 Part 7 또는 MPEG-4 Part 3) 오디오도 포함될 수 있다. MPEG-2 프로그램 스트림은 '개인 스트림(private stream)'이라는 형식을 통해 AC-3 오디오나 자막과 같은 비표준 데이터를 담을 수 있다.

국제 표준화 기구(ISO)는 SMPTE 등록 기관(Registration Authority, LLC)을 MPEG-2 형식 식별자의 등록 기관으로 지정했으며, 이 기관은 MPEG-2 전송 스트림 및 프로그램 스트림에 포함될 수 있는 압축 형식 목록을 관리한다.

3. 코딩 세부 사항

암호화되지 않은 VOB 파일이나 다른 프로그램 스트림을 헥사 에디터로 열면 특정한 구조를 확인할 수 있다. MPEG 프로그램 스트림은 여러 개의 팩(Pack)으로 구성되며, 각 팩은 고유한 시작 코드(0x000001BA)를 가진 팩 헤더로 시작한다. 이 헤더에는 동기화를 위한 정보, 시스템 클럭 참조(SCR), 비트 전송률 등 스트림 재생에 필요한 중요한 정보들이 포함되어 있다. 팩 헤더 다음에는 실제 데이터(비디오, 오디오 등)를 담고 있는 패킷(Packet)들이 따라온다. 또한, 스트림 전체의 속성 정보를 담은 시스템 헤더(시작 코드 0x000001BB)가 선택적으로 포함될 수 있다. MPEG-1과 MPEG-2 표준 간에는 헤더 구조에 약간의 차이가 존재한다.

3.1. 프로그램 스트림 팩 헤더 형식

암호화되지 않은 VOB 파일이나 다른 프로그램 스트림을 헥사 에디터로 열면 아래와 같은 구조를 확인할 수 있다.

아래는 MPEG-1 프로그램 스트림의 팩 헤더와 시스템 헤더 형식의 일부이다.

👆
좌우로 밀어서 보기
MPEG-1 프로그램 스트림 팩 헤더 형식 일부
이름비트설명
동기 바이트320x000001BA
마커 비트4MPEG-1 버전의 마커 비트는 4비트이며 값은 0010b이다. (MPEG-2는 2비트 '01b' 사용)
시스템 클럭 [32..30]3시스템 클럭 참조 (SCR) 비트 32에서 30
마커 비트1항상 1 비트로 설정됨.
시스템 클럭 [29..15]15시스템 클럭 비트 29에서 15
마커 비트1항상 1 비트로 설정됨.
시스템 클럭 [14..0]15시스템 클럭 비트 14에서 0
마커 비트1항상 1 비트로 설정됨.
SCR 확장9
마커 비트1항상 1 비트로 설정됨.
비트 전송률22초당 50 바이트 단위.
마커 비트2항상 11 비트로 설정됨.
예약됨5나중에 사용하기 위해 예약됨.
스터핑 길이3
스터핑 바이트8*스터핑 길이
시스템 헤더 (선택적)0 또는 그 이상시스템 헤더 시작 코드가 따라오는 경우: 0x000001BB


👆
좌우로 밀어서 보기
MPEG-1 시스템 헤더 형식 일부
이름바이트설명
동기 바이트40x000001BB
헤더 길이2
속도 제한과 마커 비트3
오디오 제한과 플래그1
플래그, 마커 비트, 비디오 제한1
패킷 속도 제한과 예약 바이트1


아래는 MPEG-2 프로그램 스트림의 팩 헤더와 시스템 헤더 형식의 일부이다.

👆
좌우로 밀어서 보기
MPEG-2 프로그램 스트림 팩 헤더 형식 일부
이름비트설명
동기 바이트320x000001BA
마커 비트2MPEG-2 버전에 대한 01b. (MPEG-1은 4비트 '0010b' 사용)
시스템 클럭 [32..30]3시스템 클럭 기준(SCR) 비트 32~30
마커 비트1항상 설정되는 1비트.
시스템 클럭 [29..15]15시스템 클럭 비트 29~15
마커 비트1항상 설정되는 1비트.
시스템 클럭 [14..0]15시스템 클럭 비트 14~0
마커 비트1항상 설정되는 1비트.
SCR 확장9
마커 비트1항상 설정되는 1비트.
비트 전송률22초당 50 바이트 단위.
마커 비트2항상 설정되는 11비트.
예약됨5향후 사용을 위해 예약됨
스터핑 길이3
스터핑 바이트8*스터핑 길이
시스템 헤더 (선택 사항)0 이상시스템 헤더 시작 코드가 뒤따르는 경우: 0x000001BB


👆
좌우로 밀어서 보기
MPEG-2 시스템 헤더 형식 일부
이름바이트설명
동기 바이트40x000001BB
헤더 길이2
속도 제한 및 마커 비트3
오디오 제한 및 플래그1
플래그, 마커 비트 및 비디오 제한1
패킷 속도 제한 및 예약된 바이트1

3.2. 시스템 헤더 형식

시스템 헤더는 프로그램 스트림 내에서 선택적으로 사용되며, 특정 시작 코드 `0x000001BB`로 시작한다. 시스템 헤더의 형식은 다음과 같다.

👆
좌우로 밀어서 보기
부분적인 시스템 헤더 형식
이름바이트설명
동기 바이트40x000001BB
헤더 길이2
속도 제한 및 마커 비트3
오디오 제한 및 플래그1
플래그, 마커 비트 및 비디오 제한1
패킷 속도 제한 및 예약된 바이트1

4. 표준화 및 특허

국제 표준화 기구(ISO)는 SMPTE 등록 기관, LLC를 MPEG-2 형식 식별자의 등록 기관으로 승인했다. 이 등록 기관은 MPEG-2 전송 스트림 및 프로그램 스트림에 캡슐화될 수 있는 압축 형식 목록을 게시한다.