← All examples

Action Media

Screenshot current video frame

Toolbar action that saves the current frame of the playing video as a PNG file.

Code to copy

// Toolbar action: capture the current frame of the playing video.
(function () {
  var videos = Array.prototype.slice.call(document.querySelectorAll('video'));
  videos.sort(function (a, b) {
    return (b.clientWidth * b.clientHeight) - (a.clientWidth * a.clientHeight);
  });
  var v = videos[0];
  if (!v || !v.videoWidth) { alert('No playable video found.'); return; }
  try {
    var c = document.createElement('canvas');
    c.width = v.videoWidth;
    c.height = v.videoHeight;
    c.getContext('2d').drawImage(v, 0, 0, c.width, c.height);
    var a = document.createElement('a');
    a.href = c.toDataURL('image/png');
    a.download = 'video-frame-' + Math.round(v.currentTime) + 's.png';
    document.body.appendChild(a);
    a.click();
    a.remove();
  } catch (e) {
    alert('Could not capture this frame: ' + e.message);
  }
})();

How to use this example

  1. Copy the code with the button above.
  2. Install JustZix (2 minutes) and open the extension on the target page.
  3. Add a new rule matching that page.
  4. Enable the action panel, add a button in the Actions tab and paste the code into it — run it with one click.

Rate this example

No ratings yet — be the first.

Does this example work?

Snippets are useless without somewhere to paste them.

JustZix takes 2 minutes to install and runs your code on every matching page. No account, no payment.

Download free See use cases