MPEG-4 파일 싱크

MPEG-4 파일 싱크는 MP4 파일을 만듭니다. MP4 파일 형식에 대한 자세한 내용은 다음 표준 문서를 참조하세요.

  • ISO/IEC 14496-12: 정보 기술 -- 시청각 개체 코딩 -- 12부: ISO 기본 미디어 파일 형식
  • ISO/IEC 14496-14: 정보 기술 -- 시청각 개체 코딩 -- 14부: MP4 파일 형식

참고 항목

(일부 언어 및 국가에서는 이러한 리소스를 사용할 수 없습니다.)

 

MPEG-4 파일 싱크는 인코딩 기능을 캡슐화하지 않습니다.

MPEG-4 파일 싱크를 만들려면 MFCreateMPEG4MediaSink 함수를 호출합니다. MPEG-4 파일 싱크는 QueryInterface를 통해 다음 인터페이스를 노출합니다.

샘플 설명 상자

MP4는 확장 가능한 컨테이너 형식입니다. MP4 사양은 MP4 컨테이너에서 미디어 형식을 설명하기 위한 고정 구조를 정의하지 않습니다. 대신 각 형식에 대해 사용자 지정 구조를 정의할 수 있는 개체 계층 구조를 정의합니다. 형식 설명은 각 스트림에 대한 샘플 설명('stsd') 상자에 저장됩니다. 샘플 설명 상자에는 샘플 항목 목록이 포함되어 있습니다. 각 샘플 항목에 대해 FOURCC와 유사한 4 바이트 코드는 형식 구조를 정의합니다.

MPEG-4 파일 싱크는 다음 형식에 대한 샘플 설명 상자를 생성할 수 있습니다.

  • H.264/AVC 비디오
  • AAC 오디오
  • MP3 오디오

다른 형식의 경우 각 스트림에 대한 미디어 유형에 샘플 설명 상자를 제공해야 합니다. 샘플 설명 상자를 지정하려면 미디어 유형에서 다음 특성을 설정합니다.

attribute 설명
MF_MT_MPEG4_SAMPLE_DESCRIPTION 샘플 설명 상자를 이진 Blob으로 포함합니다.
MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY 샘플 설명 상자의 샘플 항목 중 현재 활성 상태인 항목을 지정합니다. (선택 사항)
현재 값은 0이어야 합니다.

 

경우에 따라 모든 데이터가 인코딩될 때까지 샘플 설명 상자를 생성할 수 없습니다. 예를 들어 평균 비트 전송률과 같은 정보는 미리 알려지지 않을 수 있습니다. 이 경우 MPEG-4 파일 싱크에서 IMFMediaTypeHandler 인터페이스를 사용하여 미디어 형식을 업데이트할 수 있습니다. 미디어 싱크가 완료되기 전에 이 작업을 수행해야 합니다.

일반적으로 미디어 형식은 업스트림 인코더에 의해 생성됩니다. 인코더는 동적 형식 변경을 통해 스트리밍 중에 새 미디어 형식을 생성할 수 있습니다. 자세한 내용은 동적 형식 변경 내용을 참조 하세요.

H.264/AVC 비디오

MPEG-4 파일 싱크는 ISO/IEC 14496 파트 15 섹션 5.1에 정의된 대로 샘플 설명 상자에 SPS(시퀀스 매개 변수 집합) 및 PPS(그림 매개 변수 집합) NALU가 포함된 기본 비디오 스트림이 있는 AVC 스트림 버전을 지원합니다. 파일 싱크는 SPS/PPS NALUs를 별도의 매개 변수 집합 기본 스트림으로 저장하는 대체 방법을 지원하지 않습니다.

MPEG-4 파일 싱크는 샘플 설명 상자를 생성할 수 있지만 SPS 및 PPS NALUs와 함께 제공되어야 합니다. MF_MT_MPEG_SEQUENCE_HEADER 특성을 설정하여 미디어 형식에서 이 정보를 지정합니다. 특성 값은 H.264 시퀀스 헤더입니다. 시퀀스 헤더는 3-바이트 또는 4 바이트 시작 코드로 구분된 SPS 및 PPS NALUs로 구성되어야 합니다.

필요에 따라 파일 싱크를 구성할 때 초기 미디어 형식에서 MF_MT_MPEG_SEQUENCE_HEADER 특성을 생략할 수 있습니다. 이 경우 나중에 시퀀스 헤더를 포함하도록 미디어 형식을 업데이트해야 합니다.

MPEG-4 파일 싱크에는 AVC 비트스트림에 대한 다음과 같은 요구 사항이 있습니다.

  • 비트스트림은 H.264 부록 B 형식 사양을 준수해야 합니다. 특히 NALUs는 3 바이트 또는 4 바이트 시작 코드로 구분되어야 합니다.
  • 미디어 샘플에는 단일 프레젠테이션 시간에 해당하는 모든 조각 및 데이터 NALU가 포함되어야 합니다.
  • B 프레임을 MP4 파일에 쓸 때 프레젠테이션 타임스탬프를 설정하고 타임스탬프를 디코딩해야 합니다. 스트림에 B 프레임이 있고 디코딩 타임스탬프가 설정되지 않은 경우 MP4 기록기에서 프레임 시간이 뒤로 이동하고 프레임이 삭제됩니다.

AAC 오디오

AAC 오디오의 경우 MPEG-4 파일 싱크는 다음 하위 형식에 대한 샘플 설명 상자를 생성할 수 있습니다.

  • MFAudioFormat_AAC
  • MEDIASUBTYPE_RAW_AAC1

이러한 하위 유형에 대한 자세한 내용은 AAC 미디어 형식을 참조 하세요.

MFAudioFormat_AAC 하위 형식의 경우 미디어 형식에는 필요에 따라 MF_MT_USER_DATA 특성이 포함됩니다. 이 특성은 WAVEFORMATEX 구조체(즉, wfx 멤버 뒤)에 나타나는 HEAACWAVEINFO 구조체의 부분을 특성으로 지정합니다. 그 다음에는 ISO/IEC 14496-3에 정의된 AudioSpecificConfig() 데이터가 뒤따릅니다. MF_MT_USER_DATA 특성이 없으면 스트림은 AAC LC(낮은 복잡성) 프로필로 간주되고 MPEG-4 파일 싱크는 적절한 샘플 설명 상자를 생성합니다.

MEDIASUBTYPE_RAW_AAC1 하위 형식의 경우 미디어 싱크에는 MF_MT_USER_DATA 특성이 포함되어야 하며 특성에는 AudioSpecificConfig() 데이터가 포함되어야 합니다.

MPEG-4 파일 싱크는 objectTypeIndication = 0x40 'mp4a' 샘플 항목을 사용하여 AAC 샘플 설명 상자의 MPEG-4 변형을 만듭니다. MPEG-2 개체 형식을 사용하지 않습니다.

MP3 오디오

MP3 오디오의 경우 MPEG-4 파일 싱크는 표준 오디오 미디어 형식에서 샘플 설명 상자를 생성할 수 있습니다. (참조) 오디오 미디어 형식.)

MPEG-4 파일 싱크는 MPEG-1 오디오에 대해 objectTypeIndication = 0x6b 'mp4a' 샘플 항목을 사용하여 MP3 샘플 설명 상자의 MPEG-4 변형을 만듭니다.

제한 사항

  • 만든 파일의 최대 크기는 4GB입니다. Windows 8에서는 4GB보다 큰 파일이 지원됩니다.
  • MPEG-4 파일 싱크는 편집 목록('edts' 및 'elst' 상자)을 지원하지 않습니다.

MPEG-4 원본 및 싱크에 대한 Windows 8 업데이트

  • Windows 8 MPEG-4 원본 및 싱크에 추가된 회전 읽기 및 쓰기 지원 Windows 7 MPEG-4 원본 및 싱크에서는 지원되지 않습니다.

    MPEG-4 원본은 활성 비디오 트랙의 회전 각도를 'mvhd'와 'tkhd'의 회전 각도 합계로 읽습니다.

    Microsoft MPEG-4 싱크는 회전 각도를 'tkhd'로 작성하지만 'mvhd'에 0도(ID) 행렬을 씁니다. Microsoft MPEG-4 싱크는 단일 비디오 트랙만 지원합니다.

    IPropertyStore는 첫 번째 비디오 트랙의 회전 각도만 'mvhd'와 'tkhd'의 회전 각도 합계로 읽습니다.

    IPropertyStore는 회전 각도가 'mvhd'의 회전 각도에 따라 조정된 후 'tkhd'의 첫 번째 비디오 트랙에 대한 회전 각도만 씁니다(있는 경우).

  • 동영상 조각('moof')은 Windows 8 MPEG-4 원본 및 싱크에서 지원되지만 'mfra'는 지원되지 않습니다.

  • H.263은 Windows 8 MPEG-4 원본에서 지원됩니다.

    MPEG-4 원본은 이제 MPEG-4 파일 형식의 'h263' 및 's263'의 4cc 2개를 미디어 형식의 MFVideoFormat_H263 매핑합니다.

  • Windows 8 MPEG-4 원본에서 MJPEG에 대한 추가 4cc 지원이 추가되었습니다.

    MPEG-4 소스는 'dmb1'의 foucc를 MFVideoFormat_MJPG 미디어 유형에 매핑합니다.

  • Windows 8 MPEG-4 원본에 후리가나 메타데이터 지원이 추가되었습니다.

    MPEG-4 소스는 'soal', 'soar', 'soaa', 'sonm', 'soco'에서 후리가나 메타데이터를 읽습니다. IPropertyStore는 해당 PKEY 집합을 통해 후리가나 메타데이터를 읽습니다.

    다음 표에서는 셸 정식 이름, 속성 키 및 MPEG-4 파일 형식의 상자/태그 ID 간의 매핑을 보여 있습니다.

    필드 속성 키 태그/상자 ID
    시스템. 음악. AlbumTitleSortOverride PKEY_음악_AlbumTitleSortOverride soal
    시스템. 음악. ArtistSortOverride PKEY_음악_ArtistSortOverride soar
    시스템. 음악. AlbumArtistSortOverride PKEY_음악_AlbumArtistSortOverride soaa
    System.TitleSortOverride PKEY _TitleSortOverride sonm
    시스템. 음악. ComposerSortOverride PKEY_음악_ComposerSortOverride soco(소코)

     

  • Windows 8 MPEG-4 원본에 추가된 스테레오 3D 원자 지원.

  • Windows 8 MPEG-4 원본 및 싱크에 AC3 및 DD+ 지원이 추가되었습니다.

  • 4GB보다 큰 파일은 조각화되지 않은 MP4용 Windows 8 MPEG-4 싱크에서 지원됩니다.

  • 스크러빙은 Windows 8 MPEG-4 원본에서 최적화되었습니다.

    대기 시간을 줄이기 위해 특정 검색 위치에 가장 가까운 두 키 프레임에 대한 정보는 IMFSeekInfo::GetNearestKeyFrames를 통해 노출됩니다. 키 프레임에는 종속 프레임이 없으므로 하나의 프레임만 디코딩한 후 프레임이 표시됩니다. IMFGetService::GetService를 사용하여 미디어 원본, 파이프라인 또는 애플리케이션을 통해 이 인터페이스를 가져옵니다.

    MPEG-4 원본에서 속도를 0으로 설정합니다. 파이프라인이 스크러빙 모드인 경우 속도는 0입니다.

  • SPS 및 PPS는 MPEG-4 싱크의 샘플 데이터에 저장할 수 있습니다.

    MPEG-4 싱크의 MF_MPEG4SINK_SPSPPS_PASSTHROUGH 특성은 SPS 및 PPS를 입력 샘플(H.264 비디오 데이터)과 함께 저장할 수 있도록 정의됩니다. 생성된 mp4 클립은 Windows 7 MPEG-4 원본 등에서 재생할 수 있습니다.

  • MPEG-4 싱크의 입력 샘플에서 SPS 및 PPS를 추출할 수 있습니다.

    MPEG-4 싱크의 입력 미디어 유형에서 MF_MT_MPEG_SEQUENCE_HEADER 통해 SPS 및 PPS를 설정하지 않으면 MPEG-4 싱크는 입력 샘플에서 SPS 및 PPS를 추출하려고 시도합니다. MPEG-4 싱크는 SPS 및 PPS가 없는 모든 입력 샘플은 디코딩할 수 없으므로 첫 번째 SPS 및 PPS를 찾을 때까지 입력 샘플을 무시합니다.

  • AVC 구성 레코드의 3D 정보는 조각화되지 않은 MP4에 대해 지원됩니다.

  • H.264 VLD DXVA 디코딩을 최적화하기 위해 H.264 압축 샘플에 NALU 길이가 노출됩니다.

    MPEG-4 원본은 출력 미디어 형식의 MFVideoFormat_H264 또는 MFVideoFormat_h264 MF_NALU_LENGTH_SET 설정합니다. 각 출력 샘플에서 다른 NALU의 4바이트 NALU 길이를 하나의 압축된 샘플에서 사용하여 각 출력 샘플에서 MF_NALU_LENGTH_INFORMATION Blob을 설정합니다.

  • MP4 원본에서 MPEG2 ADTS 오디오에 대한 지원이 추가되었습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2008 R2 [데스크톱 앱만 해당]

참고 항목

미디어 원본 및 싱크

미디어 싱크

Media Foundation의 MPEG-4 지원

미디어 파운데이션에서 지원되는 미디어 형식