보조 트랙 확장자가 있는 MP4 (MP4-AT) 파일 형식 0.9

MP4-AT 파일 형식은 캡처 후 편집 및 구성에 유용한 보조 트랙 (예: 깊이 맵 동영상 트랙)을 ISOBMFF/MP4 구조의 재생 가능한 미디어 데이터와 함께 저장하는 것을 지원합니다.

이 형식의 목표는 보조 트랙을 저장하여 이 사양을 구현하지 않는 클라이언트로부터 트랙을 숨기는 것입니다. 이렇게 하면 클라이언트가 보조 트랙을 재생 가능한 데이터로 해석하지 못합니다.

종속 항목

다음은 이 사양의 규범적 참조입니다.

소개

'MUST', 'MUST NOT', 'REQUIRED', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'MAY', 'OPTIONAL'의 사용은 RFC2119에 정의된 IETF 표준에 의거합니다.

MP4-AT 파일 형식

MP4-AT 파일 형식은 다양한 편집 작업을 지원하는 기본 트랙과 보조 트랙으로 구성됩니다. 기본 트랙 (예: 보케 효과가 적용된 동영상 트랙)은 평소와 같이 MP4 파일에 쓰이지만 보조 트랙은 보조 트랙 MP4에 쓰입니다. 보조 트랙 MP4는 다른 MP4 규격 컨테이너이며 axte(보조 트랙 확장) 상자 내에 배치됩니다. axte 상자는 파일의 마지막 상자가 되는 것이 좋습니다. 이렇게 하면 파일을 자르면서 보조 데이터를 편리하게 삭제할 수 있습니다.

이 형식은 하위 호환됩니다. 이 형식의 나머지 부분을 지원하지 않는 플레이어는 파일을 로드할 때 기본 동영상 트랙을 읽고 재생합니다.

MP4-AT 파일의 요소 배열을 보여주는 선 다이어그램

파일에는 다음 메타데이터가 포함된 mdta 핸들러가 있는 moov.meta 상자가 있습니다. 메타데이터는 순서에 관계없이 표시될 수 있습니다.

메타데이터 키

유형 표시기

auxiliary.tracks.offset

78 (big endian 64비트 부호 없는 정수)

axte 상자의 파일 오프셋 (바이트)

auxiliary.tracks.length

78 (big endian 64비트 부호 없는 정수)

axte 상자의 길이 (바이트)

보조 트랙 확장 (axte) 상자

구문

axte 상자는 ISO/IEC 14496-12:2022: 4.2에 정의된 상자의 시맨틱을 사용하여 설명됩니다.

aligned(8) class AuxiliaryTracksExtensionBox extends Box('axte') {
  bit(8) data[];
}

여기서 데이터 필드에는 보조 트랙 MP4가 포함됩니다.

페이로드

axte 상자의 페이로드는 보조 트랙 MP4입니다. 보조 트랙 MP4는 일반적인 MP4 구조를 갖습니다.

보조 트랙 MP4의 요소 배열을 보여주는 선 다이어그램

보조 트랙 MP4에는 모든 보조 트랙의 샘플 메타데이터가 포함되어 있습니다. 모든 보조 트랙 샘플 페이로드는 보조 트랙 MP4mdat 상자 또는 외부 MP4의 mdat 상자에 저장해야 합니다(둘 다 아님).

전자의 경우 auxiliary.tracks.interleaved를 0으로 설정해야 하며(아래의 '정적 메타데이터' 참고) axte.moov 상자의 샘플 오프셋은 보조 트랙 MP4의 시작을 기준으로 합니다. 이렇게 하면 보조 트랙 MP4가 독립형이 됩니다. 즉, 보조 트랙 MP4는 외부 MP4를 참조하지 않고도 독립형으로 읽을 수 있습니다.

후자의 경우 auxiliary.tracks.interleaved를 1로 설정해야 합니다(아래의 '정적 메타데이터' 참고). axte.moov 상자의 샘플 오프셋은 파일 시작을 기준으로 하며 기본 및 보조 트랙의 샘플 페이로드는 교차 삽입될 수 있습니다. 이 경우 axte.mdat 상자가 없을 수 있습니다.

정적 메타데이터

보조 트랙 MP4에는 다음 메타데이터가 포함된 mdta 핸들러가 있는 moov.meta 상자가 포함되어 있습니다. 메타데이터는 순서에 관계없이 표시될 수 있습니다.

메타데이터 키

유형 표시기

(선택사항) auxiliary.tracks.interleaved

75 (8비트 부호 없는 정수)

0: 샘플이 인터리빙되지 않고 axte.mdat 상자에 있음을 나타냅니다.

1: 기본 동영상 트랙의 mdat 상자에 샘플이 인터리빙되어 있음을 나타냅니다.

그 외 모든 값은 예약되어 있으며 사용해서는 안 됩니다.

이 메타데이터가 없으면 기본값 0을 나타냅니다.

auxiliary.tracks.map

0 (예약됨)

바이너리 형식:

  • 1바이트 버전 = 1
  • 1바이트 트랙 수 = n
  • 다음 세트에서 n바이트 트랙 유형
    • 0 = 선명한 동영상
    • 1 = 심도 동영상 (선형)
    • 2 = 심도 동영상 (역)
    • 3 = 시간 표시 깊이 메타데이터
    • 4 = 반투명 동영상
    • 5~127 = 나중에 사용하기 위해 예약됨
    • 128~255 = 맞춤 트랙 유형

auxiliary.tracks.map의 트랙 유형 순서는 보조 트랙 MP4의 페이로드에서의 순서를 나타냅니다.

보조 트랙 유형

보조 트랙 MP4에는 수정에 유용한 다음 동영상 및 메타데이터 트랙이 포함될 수 있습니다.

선명한 동영상 트랙

수정 가능한 효과가 적용되지 않은 전체 해상도의 동영상 동영상 트랙은 기본 동영상 트랙과 다른 해상도로 저장될 수 있습니다. 선명한 동영상 트랙은 일반적인 동영상 코덱을 사용할 수 있으며 표준 또는 HDR일 수 있습니다.

심도 동영상 트랙

깊이 동영상 트랙은 표준 그레이스케일 동영상으로 인코딩된 깊이 정보를 제공합니다. 이는 깊이에 대한 특별한 디코딩 또는 인코딩 지원이 없는 기기에서 깊이 트랙을 디코딩하고 인코딩할 수 있도록 하기 위함입니다. 깊이 동영상 트랙H.264/AVC, H.265/HEVC, VP9, AV1 또는 기타 일반적인 동영상 코덱을 사용할 수 있습니다. 깊이 동영상 트랙은 8비트 또는 10비트일 수 있으며 선형 또는 역 인코딩될 수 있습니다 (동적 깊이 1.0 사양 참고).

시간 표시 깊이 메타데이터 트랙

타임스탬프가 지정된 심도 메타데이터 트랙에는 심도를 계산하는 정규화 값과 보케 효과의 흐리게 처리 반경을 계산하는 데 사용할 수 있는 초점 테이블이 포함되어 있습니다.

샘플 MIME 유형

application/x-depth-metadata

샘플 문법

바이너리 형식 (모든 int가 little-endian):

  • 근접 거리 (16비트 부동 소수점)
  • 원거리 (16비트 부동 소수점)
  • 초점 테이블 항목 수 (16비트 int)
  • 포컬 테이블 항목
    • 진입 거리 (16비트 부동 소수점)
    • 진입 반경 (16비트 부동 소수점)
반투명 동영상 트랙

해당 프레임의 각 픽셀에 대한 알파 값 (투명도)을 저장하는 동영상 트랙입니다. 최솟값은 완전히 투명함을 나타내고 최댓값은 완전한 불투명함을 나타냅니다. 그 사이의 값은 선형 눈금의 다양한 불투명도 수준을 나타내며, 합성은 사전 곱셈되지 않은 색상 값으로 일반 혼합 모드를 사용합니다. 깊이 동영상 트랙과 마찬가지로 이 트랙도 표준 그레이스케일 동영상으로 인코딩해야 합니다.

사용 사례 예시

  • 재생 가능한 렌더링된 보케 동영상을 기본 트랙에 저장하고, 원본 (흐리게 처리 전) 선명한 색상 데이터 및 깊이 맵을 위한 보조 동영상 트랙과 각 프레임의 초점 포인트를 반영하는 깊이 메타데이터가 포함된 보조 시간 메타데이터 트랙을 저장합니다. 그러면 보조 트랙을 동영상 편집기에서 사용하여 초점 피사체를 수정하고 고화질 보케 동영상 트랙을 다시 렌더링할 수 있습니다.

  • 사전 렌더링된 반투명 '스티커' 동영상(예: 흰색 배경에 애니메이션 이모티콘 동영상)을 기본 동영상 트랙에 저장하고 알파 맵이 포함된 보조 동영상 트랙을 사용합니다. 그러면 보조 트랙을 컴포저가 사용하여 보조 트랙의 반투명도 정보를 사용하여 스티커를 배경과 혼합할 수 있습니다.