JuanIrache / gpmf-extract

Extracts binary GoPro Metadata Format data from video files
https://tailorandwayne.com/gopro-telemetry-extractor/
MIT License
96 stars 22 forks source link

GPMF extract

Finds the metadata track in GoPro (Hero5 and later) video files (or any other camera that implements GPMF) and extracts it for later analysis and processing.

Accepts a File and returns a Promise that resolves to an object with a rawData (Buffer in NodeJS, UInt8Array in Browser) and timing data (timing), useful for interpreting the data.

Once extracted, you can process the data with gopro-telemetry.

Install:

$ npm i gpmf-extract

Use:

const gpmfExtract = require('gpmf-extract');
gpmfExtract(file).then(res => {
  console.log('Length of data received:', res.rawData.length);
  console.log('Framerate of data received:', 1 / res.timing.frameDuration);
  // Do what you want with the data
});

You can specify some options in an object as a second argument:

const gpmfExtract = require('gpmf-extract');
const progress = percent => console.log(`${percent}% processed`);
const cancellationToken = { cancelled: false };
gpmfExtract(file, { browserMode: true, progress, cancellationToken }).then(
  res => {
    if (!res) return; //cancelled
    // Do what you want with the data
  }
);
// Some other processes
cancellationToken.cancelled = true;

About

This code was created for the GoPro Telemetry Extractor.

Here's a gallery with cool uses of the GoPro telemetry.

This project is possible thanks to the gpmf-parser documentation, open sourced by GoPro.

More creative coding

If you liked this you might like some of my app prototyping.

Contribution

Please make your changes to the dev branch, so that automated tests can be run before merging to master. Also, if possible, provide tests for new functionality.

To-DO

Acknowledgements/credits