This is a fork of JuanIrache gopro-utils that retains only the package, to be used in other Golang code.
I have recently switched my efforts to a more comprehensive JavaScript version of these tools, but feel free to send a PR if you think you can improve this one
Examples of what can be achieved: https://goprotelemetryextractor.com/gallery
User friendly and cross-platform tool for extracting the telemetry: https://goprotelemetryextractor.com/free
Data starts with a label that describes the data following it. Values are all big endian, and floats are IEEE 754. Everything is packed to 4 bytes where applicable, padded with zeroes so it's 32-bit aligned.
- Labels - human readable types of proceeding data
- Type - single ascii character describing data
- Size - how big is the data type
- Count - how many values are we going to get
- Length = size * count
Labels include:
ACCL
- accelerometer reading x/y/zDEVC
- deviceDVID
- device ID, possibly hard-coded to 0x1DVNM
- devicde name, string "Camera"EMPT
- empty packetGPS5
- GPS data (lat, lon, alt, speed, 3d speed)GPSF
- GPS fix (none, 2d, 3d)GPSP
- GPS positional accuracy in cmGPSU
- GPS acquired timestamp; potentially different than "camera time"GYRO
- gryroscope reading x/y/zSCAL
- scale factor, a multiplier for subsequent dataSIUN
- SI units; strings (m/s², rad/s)STRM
- ¯\_(ツ)_/¯TMPC
- temperatureTSMP
- total number of samplesUNIT
- alternative units; strings (deg, m, m/s)
Types include:
c
- single charL
- unsigned longs
- signed shortS
- unsigned shortf
- 32 float
For implementation details, see reader.go
and other corresponding files in telemetry/
.