Share via


MPEG-2 시스템 개요

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

이 섹션에서는 MPEG-2 시스템 계층에 대한 일반적인 비기술 개요를 제공합니다. MPEG-2 시스템은 MPEG-2에서 오디오 및 비디오 스트림이 멀티플렉싱되는 방법을 정의하는 표준입니다.

기본 스트림

MPEG-2 멀티플렉싱은 비디오, 오디오 또는 기타 데이터를 포함하는 ES(기본 스트림)라고 하는 하나 이상의 바이트 스트림으로 시작합니다. 예를 들어 비디오 ES에는 압축된 비디오 프레임과 시퀀스 헤더, GOP(그림 그룹) 헤더 및 디코더가 스트림을 디코딩하는 데 필요한 모든 항목이 포함됩니다. 시스템 계층은 ES 바이트 스트림의 콘텐츠를 정의하지 않습니다.

기본 스트림은 패킷으로 나뉘어 패킷화된 PES( 기본 스트림 )를 형성합니다. PES 패킷의 길이는 가변입니다. 패킷의 내용을 페이로드라고 합니다. 각 PES 패킷에는 헤더도 포함됩니다. 멀티플렉서는 모든 PES에 1 바이트 스트림 ID를 할당합니다. 개별 PES 패킷은 패킷 헤더의 스트림 ID로 식별됩니다. 오디오 스트림의 경우 스트림 ID에는 110xxxxx 형식이 있습니다. 비디오의 경우 스트림 ID의 형식은 1110yyyy입니다.

MPEG-2 표준은 패킷화된 기본 스트림을 제공하는 두 가지 방법, 즉 프로그램 스트림전송 스트림을 정의합니다.

프로그램 스트림

프로그램 스트림은 로컬 파일 스토리지와 같이 상대적으로 오류가 없는 환경을 위해 설계되었습니다. 프로그램 스트림에서 PES 패킷은 멀티플렉싱되고 packs라는 단위로 구성됩니다. 프로그램 스트림의 모든 PES 스트림은 동일한 클록에 동기화됩니다.

전송 스트림

TS(전송 스트림)는 네트워크 브로드캐스트와 같이 신뢰할 수 없거나 오류가 발생하기 쉬운 환경을 위해 설계되었습니다. 또한 서로 다른 클록에 동기화되는 여러 프로그램을 포함할 수 있습니다. 전송 스트림은 두 번째 패킷화 계층을 추가합니다. PES 스트림은 패킷당 188바이트의 고정 크기가 있는 전송 스트림 패킷 내에 패키지됩니다. TS 패킷에는 다음 섹션에 설명된 프로그램 정보 스트림도 포함될 수 있습니다.

각 TS 패킷에는 4 바이트 헤더와 추가 헤더 정보가 포함된 선택적 적응 필드가 있습니다. 멀티플렉서는 각 PES 스트림 또는 프로그램 정보 스트림에 PID(프로그램 ID)를 할당합니다. PID는 스트림 ID가 PES 패킷을 식별하는 방식과 유사하게 TS 패킷을 식별하는 데 사용됩니다. (전송 스트림에 여러 프로그램이 포함된 경우 스트림 ID는 고유하지 않을 수 있지만 PID 할당은 전송 스트림 내에서 고유합니다.)

프로그램별 정보

전송 스트림은 여러 프로그램을 수행할 수 있으므로 다양한 PES 패킷을 속한 프로그램과 연결하는 방법이 있어야 합니다. 이 작업은 프로그램 스트림을 식별하는 테이블을 사용하여 수행됩니다. 전체적으로 이 데이터를 PSI(프로그램별 정보)라고 합니다. PSI 데이터는 PES 데이터와 마찬가지로 TS 패킷으로 전달됩니다. 다음과 같은 다양한 유형의 PSI 데이터가 있습니다.

  • PAT(프로그램 연결 테이블). PAT는 항상 PID 0x000 할당됩니다. PAT의 각 항목은 해당 프로그램의 PMT 패킷을 식별하는 PID입니다(다음 항목 참조).

  • PMT(프로그램 맵 테이블). 각 PMT는 하나의 프로그램을 정의합니다. PMT에는 스트림 목록이 포함됩니다. 각 테이블 항목은 해당 스트림에 대한 PID와 스트림 유형을 식별하는 코드를 제공합니다. ISO/IEC 13818-1은 일부 표준 스트림 유형을 정의합니다. 축약된 목록은 다음 표에 나와 있습니다.

    stream_type 설명
    0x01 MPEG-1 비디오
    0x02 MPEG-2 비디오
    0x03 MPEG-1 오디오
    0x04 MPEG-2 오디오
    0x80 - 0xFF 사용자 프라이빗

     

    MPEG-2를 기반으로 하는 다른 표준(예: ATSC)은 "사용자 프라이빗" 범위에서 추가 스트림 유형을 정의할 수 있습니다. 예를 들어 ATSC는 0x81 Dolby AC-3 오디오로 정의합니다.

  • CAT(조건부 액세스 테이블)

  • NIT(네트워크 식별 테이블)

DirectShow의 MPEG-2 지원