Probably the wrong forum, but there's no dedicated VIRB forum (ominous?), and this is perhaps of interest to developers as well as VIRB users. Or perhaps to no one. Anyway, feel free to delete this post if it doesn't "fit" (*cough*).
This is a fairly simple, open-source command-line tool with the focus on syncing and annotating VIRB video and GPS data (we've exclusively used the Ultra 30). For VIRB and FIT-users there's some niche and not so niche functionality. The tool stems from an academic research project working with language and landscape.
It's available here:
gitlab.com/.../geoelan
Compiled binaries for Win, Mac, Linux - VIRB video clip concatenation requires ffmpeg, explained in the manual. I currently use a Mac and haven't been able to test the Win + Linux versions that much, unfortunately.
I hope to release the FIT-parsing bit as a Rust crate/library at some point (requires work still, small and large fixes - I'm quite new at this and used this opportunity to learn Rust). Done from scratch since I couldn't find any working FIT library when I started out. No idea if my parsing is unconventional or just plain horrible - my spaghetti code works so far though! :)
As for FIT parsing performance it's ok, but I recently had to add a check for multi-byte numerical value length/alignment due to a corrupt FIT-file. Caused a performance loss, but it was important not to crash on errors (a definition message reported a 32-bit value, but the corresponding value was only a single byte in the data message).
It's a niche tool, but there's some general functionality:
- automatically find and match VIRB clips/recording sessions with the corresponding FIT-file
- automatically concatenate VIRB recording sessions (given an input dir to search and one of FIT-file, the first UUID or first clip in a session)
- get a brief, boring overview for most FIT-files (developer data supported, but not compressed timestamp headers)
- various kinds of parse errors are also reported for corrupt files (I'm sure I've missed lots)
- generate a KML for a VIRB FIT-file or a recording session in that file (quite possibly VIRB only, since gps_metadata/160 with specific fields is required, can add `record`/20 in the future), use `--downsample NUMBER` for smaller KML-files to make google earth happy.
Example, print all `record` values:
`geoelan check FITFILE.fit -g 20` (g = global FIT id)
Example, match files if you have VIRB data:
`geoelan match -i PATH_TO_SEARCH`
The real aim and more niche functionality is to geo-reference annotations of VIRB-footage, or to annotate coordinates if you will (final output of the full workflow is a KML with points or polylines). In the humanities there's a widely used annotation tool for time-aligned multimedia annotations called ELAN (archive.mpi.nl/.../elan - free) which plays a central role for the workflow, hence the name GeoELAN. There's some background in a paper linked in the repo if you need something to bore yourself with. ;)