media-metadata

Extract metadata from various media formats. Currently only supports JPEG images and MP4 videos.

Usage no npm install needed!

<script type="module">
  import mediaMetadata from 'https://cdn.skypack.dev/media-metadata';
</script>

README

media-metadata

Build Status

A pure JS library to parse EXIF and IPTC metadata out of media files. Currently only JPEG images are supported but I hope to improve on that in the future.

A few other similar projects exist but this one aims to be usable both in node and (when bundled with something like webpack) in a webpage.

Examples

Basic usage is to just pass an ArrayBuffer to the parseBuffer function:

const { parseBuffer } = require("media-metadata");

let buffer = ... // an ArrayBuffer of image data
let metadata = parseBuffer(buffer);

In a webpage you can get an appropriate buffer with a fetch:

const { parseBuffer } = require("media-metadata");

let response = await fetch(url);
let buffer = response.arrayBuffer();
let metadata = parseBuffer(buffer);

Or from a File:

const { parseBuffer } = require("media-metadata");

let file = ... // a File instance
let reader = new FileReader();
reader.onload = (event) => {
  let buffer = event.target.result;
  let metadata = parseBuffer(buffer);
};
reader.readAsArrayBuffer(file);

Metadata format

The metadata is returned as a JS object with sections for each source of metadata and date inside those. Something like this:

{
  "exif": {
    "ImageDescription": "The description"
  },
  "xmp": {
    "http://purl.org/dc/elements/1.1/description": [
      "The description"
    ],
  }
}

A fuller example can be seen in the tests.

Dates etc. are not decoded by this module, it is up to you to decode the actual values when needed.