Action Footage Player

Action Footage Player · a free, open-source alternative to the maker's app

Take back control of your action camera footage.

Love your camera, but not its app? Keep using the app for settings and updates, and let Action Footage Player take care of your footage. Open the folder on your computer and watch it all on a big screen, with the light and color as you saw them. No account, no feed, no look you didn't choose.

Early alpha Used daily with DJI Osmo Action 6 Made by a diver in Geneva, Switzerland Free · donations welcome
Camera default In the player · full range
Drag to compare. Drawn illustration, not real footage: a web page can't show what your screen does with the real clip.

What you get back

Your footage, on your terms.

Your files

No account, no cloud, no feed. Plug in the card or copy the folder, and open it. Action Footage Player only reads your originals.

Your screen

Watch on your computer, not squinting at a phone. When you want a clip on your phone or TV, export it in one step.

Everything your camera saw

Your action camera sees more than its default mode keeps. Let your screen show it: a sunset, a bright day on the water, a dive, just as you saw them.

Your look, or none

Nothing is styled for you. Clips play and export natural, so you can add a look later in the editor you like. A look baked into a file can't be taken out.

Your whole archive

Years of clips play as they are, stabilized while they play, without rendering a copy of each one first.

All your cameras

One player for footage from DJI, GoPro and Insta360, instead of one app per camera maker. Support varies by model; see Cameras.

The full range

Turn off your camera's compatibility mode. Capture the scene in all its beauty.

Your camera aims for the average screen

Most cameras are built for standard screens. By default, every clip is processed to look good right away on an average phone or office screen. Modern cameras squeeze a scene's range cleverly, but they have to make trade-offs, and the clip can no longer use the extra brightness and color that most phones and TVs can show (that is what HDR means). In effect, the default mode is a compatibility mode.

The full range, now for everyone

Most of these cameras can also keep the full range, but it hides behind a pro setting called log, and getting a natural look from it on those screens used to take professional software. Action Footage Player does it as you press play, so a sunset, a sunny day, a dive or any high-contrast scene looks the way you remember it.

The trade-off, plainly

Most apps show log clips flat and grey, so you watch them in Action Footage Player or export them first. And on standard screens, even through it, log looks a little worse than the camera's default mode. You give up a little convenience and some sharing quality to keep the moment in full. A scene-aware conversion for standard screens is on the roadmap, and it will apply to the log you have already shot.

How it works

Three steps, and the second one is a double-click.

  1. Shoot in log

    If you watch on HDR screens, set the camera to D-Log M (or GP-Log, I-Log). Under water, also turn EIS off: only then does the camera record the motion data.

  2. Double-click a clip

    It opens in HDR, stabilized, with the telemetry the camera recorded. Highlights you marked with the camera's button show up on the seek bar.

  3. Share a moment

    Press l twice to mark a part, then Shift+E. You get an HDR file that iPhones, Macs and YouTube show correctly.

What it does

Everything happens while the clip plays.

Log in true HDR

D-Log M, D-Log, GP-Log, GP-Log2 and 10-bit I-Log are converted with curves the color community measured on the cameras themselves, or with the makers' own formulas where they publish them, and shown as HDR, with no look added: the scene's brightness relationships stay as they were. Made for HDR screens: that is where log beats the camera's default mode.

D-Log M · D-Log · GP-Log · GP-Log2 · I-Log (10-bit)

Stabilized during playback

Built on Gyroflow's engine and the motion data your camera already writes into every clip. Nothing is rendered before you can watch. Three modes: stabilization with crop, stabilization with filled edges, or off.

gyro + accelerometer from the file

Telemetry on screen

Depth, whether the camera is in the water, GPS and speed appear when the camera recorded them; altitude, pressure and exposure are there in the menu. Fields the clip doesn't have stay hidden.

depth · GPS · speed · ISO · shutter

One-key export

The part you're watching is exported as you see it, stabilization included, in one pass. You get a natural HDR file to share or to adjust to your taste. Exports slow down while you play and run at full speed when you pause.

HEVC Main10, HLG · ProRes 422 HQ from the command line

Highlights on the seek bar

Moments you marked with the camera's highlight button become markers. Jump between them instead of scrubbing an hour of footage.

Ctrl+] next · Ctrl+[ previous

Originals stay as they are

Action Footage Player only reads your files. Exports go to a separate stabilized/ folder next to the clip.

read-only on your footage

Your archive

Old trips play stabilized, without re-rendering anything.

Stabilizing footage usually means rendering a new copy of every clip first. Here the stabilization is applied as the video plays, so a folder of old dives is ready to watch as it is.

You want toRender-first workflowAction Footage Player
Watch an old dive, stabilizedOpen the clip, render a copy, wait, open the copyOpen the folder and press play
Go through a terabyte of footageHours of rendering, and new files that take extra spaceNothing is rendered; the originals stay where they are
Find the moment you rememberRender first, then searchScrub through footage that is already steady
Get a file to shareYou always end up with a copyOnly for the parts you export

The stabilization itself comes from Gyroflow, which does this beautifully. Action Footage Player adds playback in real time, HDR from log and telemetry on top, so you can skip the render step when all you want is to watch.

Under water

Steady footage below the surface.

You already know in-camera stabilization falls apart under water. Turn EIS off, keep shooting, and let Action Footage Player stabilize from the motion data, with a correction for how water bends light through the lens.

Tuned for water by default

The default preset accounts for refraction at the camera's flat lens cover. On the Osmo Action 6 it follows the camera's own in-water flag, so a clip that goes in and out of the water is corrected only where it's in. Above water, DJI's own EIS works well; for EIS-off clips shot in air, Ctrl+u takes the lens out of the water.

Depth where the camera records it

The Osmo Action 6 logs depth and water status (in a dive housing, only the water status). Turn the readout on and off with Ctrl+t.

No color fringes from the water

Water bends blue more than red, so red and blue land apart towards the frame's edges. Wherever the lens is under water, each color is put back where it belongs. Ctrl+a leaves the fringes as recorded.

Everything for divers on one page →

Frame-to-frame jitter, one test clip

0.16→0.02px

Measured on a single EIS-off clip from an Osmo Action 6, before and after stabilization.

refraction index
1.33
smoothing
0.5
max zoom
140 %
horizon lock
off

Cameras

What works today.

Action Footage Player is developed against real footage from the DJI Osmo Action 6 and checked on a GoPro HERO12 Black. Everything else is supported in code and waits for someone to try it on their own clips.

CameraLogStabilizationNotes
DJI Osmo Action 6Verified
D-Log M
Verified
EIS off
Used daily on macOS by the author.
DJI Osmo 360Expected
D-Log M
Expected
EIS off
Single-lens MP4.
GoPro HERO12 Black, HERO13 BlackVerified
GP-Log
VerifiedChecked on a HERO12 Black. GP-Log from firmware 1.20.
GoPro MISSION 1, MISSION 1 PROExpected
GP-Log2
Expected
GoPro MAX2Not yet
GP-Log
ExpectedIts GP-Log is exposed two stops brighter than the HERO's and needs a conversion of its own; meanwhile Ctrl+l applies GP-Log by hand, too bright.
GoPro HERO8 Black to HERO11 BlackNo logExpected
GoPro HERO5 Black to HERO7 BlackNo logExpected
HyperSmooth off
DJI Osmo Action 4, Action 5 Pro, Pocket 3, Osmo 360 II…Expected*
D-Log M
Expected
EIS off
* D-Log M by hand, with Ctrl+l.
Insta360, single lensExpected*
10-bit I-Log
Expected
FlowState off
* I-Log by hand, with Ctrl+l. 8-bit I-Log is not supported.
DJI dronesExpected*
D-Log M, D-Log
Expected*
Gyroflow project
* The curve by hand, with Ctrl+l; the stabilization from a Gyroflow project made for the clip.

Verified played in the player on real footage. Expected built for it from the maker's published metadata or sample clips, but not yet checked on real footage. Expected* the same, with a step by hand, explained in its row. Not yet doesn't work yet.

Have one of the cameras marked Expected? A short sample clip in a GitHub issue is the fastest way to move it to Verified.

Keyboard

The keys you'll actually use.

Mark a part to exportl twice
Export it (twice while it exports: cancel)Shift+E
Stabilization: cropped, filled edges, offCtrl+g
Telemetry on or offCtrl+t
DJI's SDR look for D-Log M, and backCtrl+s / Ctrl+h
Next or previous highlightCtrl+] / Ctrl+[
Noise reduction on or offCtrl+n
Open this clip in GyroflowCtrl+e
Clean still frame when paused, on or offCtrl+p

Questions

Before you download.

Do I need an HDR screen?

Yes, if you want the benefit. Log pays off when you, and most of the people you share with, watch on HDR screens: recent iPhones, MacBook Pros, HDR TVs and monitors.

On a standard screen, a log clip looks worse than the same scene recorded in the camera's default mode. That is true whether macOS tone-maps it automatically or, for D-Log M, you switch to DJI's official SDR conversion (its Rec.709 LUT) with Ctrl+s. The camera makers' own processing adapts to each scene and keeps bright what most likely matters in it. Getting the same result from log takes professional grading software and a colorist.

So if you mostly watch and share on standard screens, record in the default mode. If you and your audience have HDR screens, record in log.

For clips you mainly share to standard screens, you can still use the camera maker's app. A scene-aware SDR conversion in Action Footage Player is on the roadmap: squeezing the range always takes decisions, and the aim is to keep the result as close as possible to the full-range version rather than add a look of its own. When it lands, the log footage you have already shot gets better too.

I dive and snorkel. Do I need this?

Yes. Under water, log played in HDR is clearly better than the camera's default mode, especially on recent cameras. The difference is night and day. A dive scene runs from bright light at the surface to dark blue at depth, and the default mode has to squeeze all of it into a standard screen, with trade-offs along the way.

On top of that, you get stabilization that works under water (turn EIS off when you shoot) and the depth readout, if your camera records it.

Who needs the stabilization in the player?

If you shoot above water with the camera's stabilization (EIS) on, you probably don't: in-camera EIS does a good job in air.

It's for clips shot with EIS off. Under water, where in-camera EIS fails, that is the way to shoot. It also covers clips where you turned EIS off for the widest view, and archives full of such footage. The camera still records its motion data, and Action Footage Player uses it while the clip plays, with a choice of stabilization with crop, stabilization with filled edges, or off.

One exception: on GoPro HERO8 and newer, you can leave HyperSmooth on under water. Its result won't be perfect, and the player stabilizes it further from the same motion data. On HERO5, HERO6 and HERO7 Black, HyperSmooth has to be off. (This follows Gyroflow's camera notes. GoPro footage in the player is verified on a HERO12 Black.)

Which computers does it run on?

Mac: Apple Silicon with macOS 15 or later. Windows: 10 or 11 on 64-bit Intel or AMD. The Mac app is the one in daily use; the Windows app carries the same plugins but hasn't been tried on a real PC yet.

Neither app is signed by a developer account yet. On a Mac, allow it once in System Settings, Privacy & Security, Open Anyway. On Windows, SmartScreen shows a warning on first launch: More info, Run anyway.

Does it change my original files?

No. Action Footage Player only reads them. Exports are written to a stabilized/ folder next to the clip, and a clip you open in Gyroflow gets its project as a .gyroflow file beside it; the video file itself is never written to.

What does an exported file look like?

An HEVC Main10 file tagged as HLG, which iPhones, Macs, most HDR TVs and YouTube display as HDR. If you edit afterwards, the command-line export can write ProRes 422 HQ instead.

The file has no look added, so it is a natural starting point: adjust it to your taste in an HDR-capable editor such as iMovie. A look that is baked into a file can't be taken out again: shadows pushed to black stay black.

Why not just use the camera maker's app?

Use it if you like its look. Phone apps are great for quick edits, and some can now show and export log as HDR. That HDR tends to be styled for social media: exposure that shifts as the scene changes, brighter mid-tones, strong local contrast, deep shadows pushed to black.

Action Footage Player does the opposite: a direct conversion from log that keeps the scene's brightness relationships and adds no look of its own, so the clip looks the way the scene did. You can always add a look later; you can't take one out.

It also runs on your computer, plays your whole archive as it is, works with footage from several camera makers, and stabilizes while it plays.

Is it really free?

Yes. It's open source under GPL-3.0, and the code is on GitHub.

Nothing is locked, and there is no account to make.

Help it grow

It gets better with your footage.

Test your camera

Open an issue with your camera model and a short sample clip. That is how cameras move from Expected to Verified.

Open an issue on GitHub

Tell a diving friend

Most people who need this have never heard of it. A message in your dive club's chat does more than any ad.

Share the project

Star the repository

Stars help other people find the project when they search for log, HDR or Gyroflow.

Star on GitHub