James Desmond

How I merge GoPro Telemetry data from split video files

From the GoPro Hero 5 and up, the camera records telemetry data (gps coord, speed, g-force) while recording video. This data is nice to have and allows for cool overlays like this:

Me riding my bike

  • The gopro records in chunks of video, limited by FAT32 addressing space. Even with alternative filesystems like ExFAT, the GoPro will still only record in 3.7GB chunks.
  • The telemetry data is stored inside of the mp4 files that the GoPro creates.
    • This means that an entire rides data is split between each video file. This results in telemetry statistics like “Elevation climbed” or “Distance Travelled” to only be corresponding to the current 3.7GB video chunk.
  • There exists a free software, called DashWare which is capable of merging the multiple video files, creating multiple csv’s of telemetry data stripped from the mp4s, and adding overlay graphs to the video.
    • However, DashWare is unable to merge the individual data csvs it creates into a single csv. Dashware is able to read multiple csv’s but it does not collate them, instead when it reaches the end of a csv, it refreshes all accumulating graph values and read the new values from the current data file.
  • In order to have a cohesive data representation on my graphs, I need to merge multiple csvs into a single csv.
  • These instructions are pointed at a Windows installation

How I handle merging split gopro videos


  • for mass renaming I now just do the following: open the folder with GOPRO files in Explorer, sort by date descending, select all, rename, enter something, and rename unnummbered element to be the last element.
  1. Transfer all footage that I would like merged into a single folder
  2. Open DashWare, select all video files, merge them, and wait for the error message that data could not be merged. Ignore the error for now
  3. Run my Python script linked here to select the csv’s dashware created from the video merge
  4. Add the merged csv (located in the same directory as the files you selected) to Dashware
  5. Dashware should now contain the data for the entire filming session, verify by seeking around the video file, then File>Create Video, and wait for rendering to complete

Further work

I record using a chest mount, with an upside down gopro clipped to it. This allows for the camera to be upright (and upside down) while I am leaning over my bike. Dashware is unable to render graphs onto video, and then flip the video. While the software does have a “180 rotation” option that will work in the preview window, the rendered video will be upside down, while the graphs will be right side up. Currently I fix this problem by flipping the graphs themselves 180 degrees, then rendering, then flipping the rendered product in video editing software. This process is a little tedious, I aim to write another python script which will be a superset of the two scripts I have written (renaming GoPro files sequentially, and merging GoPro telemetry csvs) with a third which will have the original mp4’s as input. The output will be: a merged mp4 file and a merged csv file. This will require stripping the data from the mp4 files through Python, instead of Dashware. But the payoff will be a streamlined video editing process which will require less manual input and file selection.