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/.