DJI SRT Telemetry Formats
This document describes the different SRT telemetry formats used by different DJI drone models.
Format Types
Format 1: Bracketed Key-Value Pairs
Used by: DJI Mini 3 Pro, DJI Mini 4 Pro, some newer models
[latitude: 59.302335] [longitude: 18.203059] [rel_alt: 1.300 abs_alt: 132.860] [iso : 2700] [shutter : 1/30.0] [fnum : 170]
Fields:
- latitude: GPS latitude in decimal degrees
- longitude: GPS longitude in decimal degrees
- rel_alt: Relative altitude from takeoff point (meters)
- abs_alt: Absolute altitude above sea level (meters)
- iso: Camera ISO value
- shutter: Shutter speed (e.g., 1/30.0)
- fnum: F-number × 100 (170 = f/1.7)
Format 2: GPS Function Format
Used by: DJI Mavic Pro, DJI Phantom 4, older models
GPS(39.906217,116.391305,69.800) BAROMETER(91.2)
HOME(39.906206,116.391400) D=5.2m H=1.5m
Fields:
- GPS(lat,lon,alt): GPS coordinates and altitude
- BAROMETER(value): Barometric pressure reading
- HOME(lat,lon): Home point coordinates
- D: Distance from home point
- H: Height above home point
The HOME point is parsed only when
--extract-homeis passed (it is the operator's launch location). When extracted it is subject to--redact.
Format 2b: Legacy-with-Unit (Matrice 300 lineage)
Used by: DJI Matrice 300 RTK and adjacent enterprise models.
GPS(36.6146,-6.1120,0.0M) BAROMETER:0.3M
Identical to Format 2 except the altitude inside the GPS tuple carries a
unit suffix (M) and BAROMETER uses a colon notation rather than
parentheses. The parser tolerates the suffix via an optional
[A-Za-z]* group on the altitude capture; latitude and longitude are
extracted as for Format 2.
Format 2c: P4 RTK Compact Single-Line
Used by: DJI Phantom 4 RTK, Phantom 4 Pro, and likely the Matrice 350 RTK / Matrice 30 enterprise lineage.
F/5.6, SS 400, ISO 100, EV 0, GPS (-58.851745, -34.237922, 15),
HOME (-58.847509, -34.232707, -57.98m), D 698.70m, H 85.80m,
H.S 0.00m/s, V.S 0.00m/s, F.PRY (2.7°, -7.0°, 110.1°),
G.PRY (-24.4°, 0.0°, 110.4°)
Fields parsed today:
- GPS (lat, lon, alt) — note the space before ( and integer altitude
- F/N → camera fnum (free-standing, not [fnum:…])
- SS N → camera shutter
- ISO N → camera iso
- EV N → camera ev
Fields recognised but not yet decoded (open follow-up):
HOME (…), D Nm, H Nm, H.S Nm/s, V.S Nm/s, F.PRY (p, r, y),
G.PRY (p, r, y). These tokens are documented for future work; the
parser currently extracts GPS + camera and ignores the rest.
Format 3: Comprehensive Format
Used by: DJI Mavic 3, DJI Air 2S
<font size="36">SrtCnt : 1, DiffTime : 33ms
2024-01-15 14:30:22,123
[iso : 100] [shutter : 1/1000] [fnum : 280] [ev : 0] [ct : 5500] [color_md : default] [focal_len : 240] [latitude: 59.302335] [longitude: 18.203059] [rel_alt: 10.200 abs_alt: 142.760]</font>
Additional Fields:
- SrtCnt: Frame counter
- DiffTime: Time difference from previous frame
- ev: Exposure compensation
- ct: Color temperature
- color_md: Color mode
- focal_len: Focal length × 10 (240 = 24mm)
Format 3b: Modern HTML Bracket (FrameCnt + decimal units)
Used by: DJI Mini 5 Pro, DJI Avata 360, DJI Neo 2, DJI Air 3S
Current models keep the HTML-wrapped bracket structure of Format 3 but change
two things: the counter is FrameCnt (not SrtCnt), and the aperture and
focal length are written as literal decimals rather than the legacy
×100 / ×10 integer encodings.
<font size="28">FrameCnt: 1, DiffTime: 40ms
2026-05-27 13:14:22.911
[iso: 200] [shutter: 1/6400.0] [fnum: 1.8] [ev: -0.7] [color_md: dlog_m] [focal_len: 24.00] [latitude: 53.365108] [longitude: 6.460719] [rel_alt: 6.000 abs_alt: -122.769] [ct: 5263] </font>
Notes:
- fnum: 1.8 is the literal f-number (f/1.8), not 180.
- focal_len: 24.00 is the literal focal length in mm, not 240.
- The Avata 360 variant adds a FrameId, a dzoom_ratio, gimbal
(gb_yaw/gb_pitch/gb_roll), and a block of stabilization /
post-processing fields (eis, shift x/y, pp_*). These are ignored by
the parser but are valid telemetry-line content.
- Avata 360 footage is delivered as .OSV (360 video) plus a .LRF low-res
proxy instead of .MP4; both are MP4-family containers and are processed
like any other video. See troubleshooting.
- The Air 3S variant omits the pp_* stabilization block but is the first
observed fixture to report color_md: hlg (HLG color mode, alongside the
usual default/dlog_m). Its MP4 also carries DJI's proprietary
djmd/dbgi data streams, dropped on MP4 mux and round-tripped on MKV.
- Detected as the html_extended format family.
Camera Settings Interpretation
ISO Values
- Direct value (e.g., 100, 200, 400, 800, 1600, 3200)
Shutter Speed
- Fractional format:
1/1000,1/500,1/250 - Decimal format:
1/1000.0 - Long exposure:
2.0(2 seconds)
F-Number (Aperture)
- Legacy encoding: integer × 100 (
170= f/1.7,280= f/2.8,400= f/4.0) - Modern encoding (Format 3b): literal decimal (
1.8= f/1.8,1.9= f/1.9) - The parser stores the value verbatim and does not convert between the two.
Focal Length
- Legacy encoding: integer × 10 (
240= 24mm,350= 35mm,500= 50mm) - Modern encoding (Format 3b): literal decimal mm (
24.00= 24mm)
Camera Footprint Export — Relevant Fields
The convert geojson/kml --footprint command uses three SRT fields to project
ground-footprint polygons. Not all formats carry all three:
| Field | Formats that carry it | Role in footprint export |
|---|---|---|
rel_alt |
Format 1, Format 3, Format 3b | Height above ground (AGL). Preferred over abs_alt subtraction. |
focal_len |
Format 3, Format 3b | 35mm-equivalent focal length. Determines field of view. Written as integer × 10 in Format 3 (240 = 24 mm) or literal decimal in Format 3b (24.00 = 24 mm). Overrides the --model table when present. |
gb_yaw, gb_pitch |
Format 3b — Avata 360 variant only | Gimbal yaw rotates the footprint rectangle to match where the lens points; gimbal pitch gates out strongly oblique frames (>~30° off nadir). Other Format 3b models and all earlier formats do not carry these fields — nadir is assumed and heading falls back to course over ground. |
When none of these fields are present (e.g., Format 2 / Format 2b / Format 2c),
footprints are still generated using abs_alt for AGL estimation, the --model
FOV table (or the generic wide fallback), and course-over-ground for orientation.
GPS Coordinate Formats
Decimal Degrees
- Standard format:
59.302335 - Range: -90 to 90 for latitude, -180 to 180 for longitude
- Precision: Usually 6-7 decimal places
Altitude
- Relative altitude: Height from takeoff point
- Absolute altitude: Height above sea level
- Units: Meters
- Can be negative (below takeoff point or sea level)
Timestamp Formats
SRT Standard
00:00:00,000 --> 00:00:00,033
- Hours:Minutes:Seconds,Milliseconds
- Arrow indicates duration of subtitle display
Extended Format
2024-01-15 14:30:22,123
- Full date and time for precise temporal reference
Adding Support for New Formats
To add support for a new DJI model's SRT format:
- Identify the Pattern: Open SRT files and identify the telemetry pattern
- Create Regex Patterns: Design regex to extract each field
- Update Parser: Add new parsing logic to
parse_dji_srt()method - Test: Ensure backward compatibility with existing formats
Example Parser Addition
# New format: |LAT:59.302335|LON:18.203059|ALT:132.86|
new_format_match = re.search(r'\|LAT:([+-]?\d+\.?\d*)\|LON:([+-]?\d+\.?\d*)\|ALT:([+-]?\d+\.?\d*)\|', telemetry_line)
if new_format_match:
lat = float(new_format_match.group(1))
lon = float(new_format_match.group(2))
alt = float(new_format_match.group(3))
telemetry_data['gps_coords'].append((lat, lon))
telemetry_data['altitudes'].append(alt)
Known Model-Format Mappings
| Model | Format Type | Notes |
|---|---|---|
| DJI Mini 3 Pro | Format 1 | Bracketed key-value pairs |
| DJI Mini 4 Pro | Format 1 | Bracketed key-value pairs |
| DJI Mavic 3 | Format 3 | Comprehensive with HTML tags |
| DJI Air 2S | Format 3 | Comprehensive with HTML tags |
| DJI Air 3 | Format 3 | Comprehensive with HTML tags |
| DJI Mini 5 Pro | Format 3b | FrameCnt + decimal fnum/focal_len |
| DJI Avata 360 | Format 3b | FrameCnt + decimal units; .OSV/.LRF video, pp_* stabilization fields |
| DJI Neo 2 | Format 3b | FrameCnt + decimal units; pp_* stabilization fields; MP4 carries djmd/dbgi streams; audio recorded to a separate same-basename .m4a (see --audio-sidecar) |
| DJI Air 3S | Format 3b | FrameCnt + decimal units; color_md: hlg; MP4 carries djmd/dbgi streams |
| DJI Mavic Pro | Format 2 | GPS function format |
| DJI Phantom 4 | Format 2 | GPS function format |
| DJI Avata 2 | Format 2 | GPS function format with BAROMETER data |
| DJI Matrice 300 RTK | Format 2b | Legacy-with-unit (0.0M altitude) |
| DJI Phantom 4 RTK / P4P | Format 2c | P4 RTK compact single-line |
| DJI Mavic Air 2 | Format 1 | Bracketed key-value pairs |
| DJI FPV | Format 1 | May include additional flight data |
Special Considerations
Frame Rate
- SRT timestamps typically match video frame rate
- Common rates: 23.976, 24, 25, 29.97, 30, 50, 59.94, 60 fps
Coordinate Systems
- Most DJI drones use WGS84 datum
- Coordinates are typically in decimal degrees
- Altitude reference may vary (MSL vs AGL)
Missing Data
- GPS may not be available immediately after takeoff
- Indoor flights won't have GPS data
- Some fields may be empty or zero