Trikang
[DJI Osmo Action 동영상 메타데이터 분석] - DJI Media File Metadata WhitePaper 문서 본문
[DJI Osmo Action 동영상 메타데이터 분석] - DJI Media File Metadata WhitePaper 문서
Trikang 2024. 10. 30. 15:46Part 1
1. Introduction
DJI 카메라는 이미지 및 비디오 데이터와 함께 미디어 파일에 설명적 메타데이터를 제공합니다. 이러한 메타데이터는 분석과 후처리 워크플로우에서 사용자를 지원하며, 프로 사용자 및 개발자가 심도 있는 후처리를 수행하는 데 필수적입니다. 이 문서 세트는 DJI 제품의 미디어 포맷 내 메타데이터의 구성과 기술 표준을 설명하고, DJI 제품에서 메타데이터를 얻는 지침을 제공합니다.
1.1 Organization of Document Set
메타데이터 백서(White Paper)는 세 부분으로 구성됩니다:
- Part 1, 개요: DJI가 제공하는 메타데이터의 기본 개념과 미디어 파일에서 메타데이터가 어떻게 구성되는지 소개합니다. 이 파트는 DJI가 제공하는 메타데이터의 종류와 미디어 파일 내에서 메타데이터를 나타내는 기본 모델에 대한 개요입니다.
- Part 2, 정지 이미지의 메타데이터: 정지 이미지의 메타데이터 사양과 내용을 설명합니다. 이 부분은 주로 Exif 및 XMP 표준에 따른 메타데이터를 포함하며, DJI는 더 풍부한 정보를 제공하기 위해 이 표준을 확장하였습니다.
- Part 3, 비디오의 메타데이터: 비디오의 메타데이터에 대해 설명하며, 전체 비디오에 대한 메타데이터(global metadata)와 각 비디오 프레임마다 제공되는 메타데이터(timed metadata)를 다룹니다. DJI는 비디오 타임드 메타데이터를 위한 자체 데이터 모델과 사양을 이 파트에서 소개합니다.
1.2 About This Document
This document, DJI Media File Metadata Whitepaper Part 1: Overview는 모든 DJI 미디어 파일 유형에 대한 원칙과 개요를 제공합니다. 이 문서를 통해 DJI 제품에서 제공하는 메타데이터의 종류와 해당 메타데이터로부터 얻을 수 있는 정보를 확인할 수 있습니다.
2. Overview of Metadata for Media Files
2.1 Motivation
전문적인 분야에서 미디어 파일의 메타데이터는 미디어 파일 자체만큼 중요합니다. DJI는 소비자와 기업용 카메라를 다양한 형태로 제공하면서 제품의 기능을 더욱 확장하기 위해 미디어 파일 메타데이터를 지속적으로 풍부하게 만들어 가고 있습니다. 또한, 프로 사용자와 개발자들이 메타데이터에 대한 더 명확하고 세부적인 설명을 요구하므로, DJI는 이 백서를 통해 메타데이터의 모든 측면에 대한 완전하고 자세한 정보를 제공합니다.
2.2 Media Files and Metadata
일반적으로 카메라가 생성하는 미디어 파일은 정지 이미지 파일(still image file)과 비디오 파일로 나뉩니다. 정지 이미지의 메타데이터는 촬영 당시의 노출 설정, 위치 및 자세, 카메라 설정 등 사진을 찍을 때의 정보를 설명할 수 있습니다. DJI는 정지 이미지 파일에 주로 JPEG 및 Adobe DNG 포맷을 사용하며, 이 두 포맷 모두 Exif 표준을 따르는 메타데이터를 포함할 수 있습니다. 또한, Adobe DNG는 Exif 형식에서 확장된 메타데이터를 추가로 포함합니다. DJI는 자체적으로 정의한 메타데이터를 기록하기 위해 Adobe XMP 포맷도 사용합니다.
비디오는 연속적으로 변하는 메타데이터를 기록할 수 있어, 드론의 위치 변화나 짐벌의 자세와 같은 연속적인 변화를 기록하기에 적합합니다. DJI는 주로 MOV와 MP4 포맷을 비디오 파일에 사용하며, MOV/MP4의 기본 형식과 DJI가 확장한 방식으로 메타데이터를 기록합니다.
2.3 Version and Compatibility Management
메타데이터에서 호환성은 가장 중요한 속성입니다. DJI는 가능한 한 모든 메타데이터의 호환성을 유지하려고 노력하며, 비호환적인 변경은 매우 신중하게 진행합니다.
더 명확하고 추적 가능한 기록을 위해 DJI는 semantic versions을 사용하여 이 백서와 메타데이터를 관리합니다. 정지 이미지와 비디오의 메타데이터 모델이 다르기 때문에, whitepaper part2 (still image) and whitepaper part3 (video)에서 각각 설명하며 각 파트에 개별 버전 번호를 부여합니다. 정지 이미지와 비디오의 메타데이터 모두 해당 백서의 버전과 동일한 버전을 기록하는 데이터 필드를 포함합니다. 이 문서(DJI Media File Metadata Whitepaper Part 1: Overview)의 버전은 전체 문서 세트의 메인 버전이며, 다른 백서 파트는 이 메인 버전을 참조합니다. 모든 버전은 "Major.Minor" 형식의 두 세그먼트로 구성되며, Major 버전이 증가하면 비호환적인 변경이 발생한 것을 의미하고, Minor 버전이 증가하면 호환 가능한 새 버전이 출시된 것을 의미합니다.
Part 2는 이미지와 관련된 내용이니, 여기선 생략
Part 3: Metadata in Video
2. Global metadata in MP4/MOV
MP4 및 MOV 포맷은 아톰 구조(atom structure)에 사용자 정의 메타데이터를 저장할 수 있는 기능을 제공합니다. DJI는 이 기능을 활용하여 최상위 moov 아톰 하위에 있는 udta 아톰에 여러 글로벌 메타데이터 아톰을 추가했습니다(We exploited this feature to add several global metadata atoms in the udta atom, which is sub-atom under the top-level moov atom).
알림: 이 기능은 모든 DJI 제품에 보편적으로 적용되지는 않습니다. 당신의 소프트웨어가 이러한 메타데이터에 의존할 경우, udta 아톰 형식을 확인하십시오. 그러나 메타데이터가 제품에 추가된 이후로는 호환성을 유지하려고 노력할 것입니다.
2.1.1 Camera Serial Number Atom
Camera Serial Number Atom (defined by the ©csn atom type) stores product serial number as a NULL terminated string.
2.1.2 Unique ID Atom
Unique ID Atom (defined by the ©uid atom type) stores a 32-bit unique ID of this video file.
2.1.3 Model Name Atom
Model Name Atom (defined by the ©mdl atom type) stores product model name as a NULL terminated string.
2.1.4 Resolution Atom
Resolution Atom (defined by the ©res atom type) stores various video media information contains the following data elements.
Resolution Width
- A 32-bit integer that specifies the width of resolution in pixel.
Resolution Height
- A 32-bit integer that specifies the height of resolution in pixel.
Frame Rate
A 32-bit integer that specifies the frame rate of video. This element is deprecated since it can only express an integer frame rate. You can get frame rate by using tools like FFmpeg or calculate it by checking total frames and total durations in the stts atom.
TV System
A 2-byte string that specifies the TV system of video, "N\0" for NTSC system, "P\0" for PAL system.
Video Type
An 8-bit integer that specifies the type of video. Following types is available:
- 0 = Normal video
- 2 = Slow motion video
- 3 = Timelapse video
- 4 = HDR video
- 5 = Hyperlapse video
- 6 = Loop video
Speed Ratio
An 8-bit integer that specifies the playing speed ratio of video. For example, this value means how many times slow down on a slow motion video or how many times speed up on a hyperlapse video.
3. DJI Video Timed Metadata Format
모든 비디오 프레임에 대해 메타데이터를 기록하는 것은 후처리 및 분석을 위한 강력한 기능을 제공합니다. 예를 들어, 각 프레임마다 IMU 데이터를 기록하면 오프라인 전자식 영상 안정화(EIS)가 가능해지며, GPS 및 속도 데이터를 활용해 경로 지도나 속도계를 후처리로 생성할 수 있습니다.
여러 제조업체가 사용하는 비디오 타임드 메타데이터 저장 솔루션이 있으며, 성능, 확장성, 개발 친화적인 요구 사항에 맞춰 DJI는 새로운 DJI 비디오 타임드 메타데이터 포맷(DVTM)을 출시했습니다. DVTM 포맷은 개발자들에게 메타데이터와 함께 풍부한 응용 가능성을 제공합니다.
3.1 Metadata format based on Google protocol buffers
프로토콜 버퍼(Protocol Buffers)는 Google에서 제공하는 언어 및 플랫폼 독립적인 데이터 직렬화 스키마(data serialization scheme)입니다. 높은 효율성과 유연성을 갖춘 프로토콜 버퍼는 메타데이터 저장에 적합합니다. 개발자는 Java, Python, Objective-C, C++, Dart, Go, Ruby, C# 등 다양한 언어로 제공되는 프로토콜 버퍼 API를 사용해 DJI 메타데이터에 접근할 수 있습니다.
기존 플랫폼이나 선호하는 언어에 쉽게 적응할 수 있으며, 프로토콜 버퍼의 호환성과 확장성을 고려한 설계 덕분에 더 많은 메타데이터를 추가할 수 있게 되어 개발자들에게 DJI의 생산성을 극대화합니다. DJI 제품의 모든 비디오 타임드 메타데이터는 dvtm_library.proto 파일에 기술되어 있으며, 이는 DJI가 정의한 모든 메타데이터 유형의 라이브러리 역할을 합니다. 각 제품 또는 제품군은 dvtm_product.proto라는 이름의 하위 파일을 사용해 지원하는 메타데이터 유형을 지정합니다.
프로토콜 버퍼에는 protoc이라는 컴파일러가 포함되어 있어, 이러한 .proto 파일을 다양한 언어 파일로 변환하여 해당 언어 API로 디코딩할 수 있습니다. 프로토콜 버퍼는 주로 버전 2와 3이 있으며, 더 많은 언어 지원 등의 이유로 버전 3을 선택했습니다.
3.2 Integrate with MP4/MOV file format
MP4(MPEG-4 Part 12: ISO 기반 미디어 파일 포맷, ISO/IEC 14496-12) 및 MOV(퀵타임 파일 포맷) 파일에서 메타데이터는 비디오 및 오디오와 같이 트랙으로 구성되어 있으며, 메타 트랙(meta track)이라 불리며 특정 속도로 구성된 프레임 집합입니다. 비디오 프레임을 읽는 것처럼 moov/trak/mdia/minf/stbl 박스를 파싱하여 메타데이터 프레임을 읽을 수 있습니다. 대부분의 경우, 메타 트랙은 비디오 트랙과 동일한 프레임 속도를 가지지만 항상 그런 것은 아닙니다.
메타 트랙의 각 프레임은 DvtmProductName으로 설명된 메시지를 저장합니다. 각 서브 메시지는 프로토콜 버퍼 3의 속성으로 인해 선택적이고 반복적으로 저장될 수 있어, 메타 트랙의 고정 프레임 속도로 더 높은 빈도 또는 낮은 빈도의 메타데이터를 지원할 수 있습니다. 예를 들어, 30 FPS 메타 트랙에 60 Hz 센서 데이터를 저장할 수 있으며, 이 경우 센서 데이터를 한 프레임에 두 번 반복하여 저장할 수 있습니다. 또한, 30 FPS 메타 트랙에 15 Hz 센서 데이터를 삽입할 수 있으며, 메타데이터 프레임에 간격을 두고 데이터를 교차 저장합니다.
'개발 Tip > 기타' 카테고리의 다른 글
[Ubuntu 20.04] Colmap 3.9.1 빌드 (0) | 2024.03.11 |
---|