Library to parse real-time metadata embedded in video files or telemetry from other sources.
- GoPro (HERO 5 and later)
- Sony (a1, a7c, a7r V, a7 IV, a7s III, a9 II, a9 III, FX3, FX6, FX9, RX0 II, RX100 VII, ZV1, ZV-E10, ZV-E10 II, ZV-E1, a6700)
- Insta360 (OneR, OneRS, SMO 4k, Go, GO2, GO3, GO3S, GOUltra, Caddx Peanut, Ace, Ace Pro)
- DJI (Avata, Avata 2, O3/O4 Air Unit, Action 2/4/5/6/Nano, Neo, Neo2)
- XTRA (Edge, Edge Pro)
- Blackmagic RAW (*.braw)
- RED RAW (V-Raptor, KOMODO) (*.r3d)
- Canon (C50, C80, C400, R6 Mk3, R5 Mk2) (*.mp4, *.mov, *.mxf, *.crm)
- Freefly (Ember)
- Betaflight blackbox (*.bfl, *.bbl, *.csv)
- ArduPilot logs (*.bin, *.log)
- Gyroflow .gcsv log
- iOS apps:
Sensor Logger,G-Field Recorder,Gyro - Android apps:
Sensor Logger,Sensor Record,OpenCamera Sensors,MotionCam Pro - Runcam CSV (Runcam 5 Orange, iFlight GOCam GR, Runcam Thumb, Mobius Maxi 4K)
- Hawkeye Firefly X Lite CSV
- XTU (S2Pro, S3Pro)
- WitMotion (WT901SDCL binary and *.txt)
- Vuze (VuzeXR)
- KanDao (Obisidian Pro, Qoocam EGO)
- CAMM format
- TODO DJI flight logs (*.dat, *.txt)
import telemetry_parser
tp = telemetry_parser.Parser('sample.mp4')
print('Camera: ', tp.camera)
print('Model: ', tp.model)
# return all telemetry as an array of dicts
print('Telemetry', tp.telemetry())
# format the values with units etc
print('Telemetry formatted', tp.telemetry(human_readable = True))
# return only gyro and accel with timestamps, normalized to a single orientation and scaled to deg/s and m/s2
print('Normalized IMU', tp.normalized_imu())- Setup virtual env:
python -m venv .env ; source .env/bin/activate - Install maturin:
pip install maturin - Build python wheels:
maturin build --release - Resulting wheels will be in
target/wheels/directory - Install using pip:
pip install telemetry_parser_py-0.1.0-cp39-none-win_amd64.whl