Sidecar edits for the Jellyfin you already run

Keep the file. Shape the stream.

You write what should go quiet, leave the stream, or leave the frame. A sidecar next to the file tells Jellyfin what to mute, skip, or cover. The original on disk never changes.

Tears of Steel (Edited)

12:14

A still from Tears of Steel: Barley holds a radio to his mouth beside a rifle scope.
Still from Tears of Steel. (CC) Blender Foundation · mango.blender.org

You mark the moments

Drop a sidecar. Press play.

This is not a catalog of ready-made filters. You mark the moments. The sidecar sits next to the title. Jellyfin does the rest.

If apply-edits is on, that title streams as {Title} (Edited) on every client — web, phone, and TV. Turn the toggle off and you get the file as it sits on disk. You already know how to run Jellyfin. A small server patch is what makes a real cut possible.

01

Mark the moments

Mute a line. Skip a stretch. Cover a frame. Times stay on the original runtime. The sidecar matches the file name.

02

The server cuts the stream

Patched Jellyfin loads the sidecar before the first packet. It mutes, covers, then cuts. No client has to seek or ride the volume.

03

Every screen agrees

Web, phone, and TV play the same item. Continue Watching, listings, apps — they all receive the edited timeline.

What you can ask for

Quiet a line. Keep the room.

You do not have to mute the whole soundtrack or hide the whole picture. Mute one speaker. Cover a moment. Skip a stretch.

The center speaker under the TV is muted. Every other speaker stays on.

Audio

  • Mute a line — or just the speaker that carries talking
  • Turn a word down without killing the score
  • Beep a moment if you need a tone

Picture

  • Cover, blur, or pixelate a moment — and that region can travel with the shot
  • Zoom or crop past something you do not want in frame
  • Go to black video while the audio stays

Skip

  • Cut a scene out. The player never sees it. Runtime shortens.
  • Mute and picture stay on the original clock. Only a skip changes the length.

One library

Different people. Different cuts. Same files.

One person wants talking quiet. Another wants the file as it sits on disk. Same title, same files. Each Jellyfin user picks whether edits apply, and which sidecar categories to honor.

Categories are tags on the sidecar. You turn them on or off per user. The sidecar still decides mute versus skip versus cover. Nobody has to fork the file.

What you need

A modified Jellyfin, and a plugin that uses it.

Stock Jellyfin cannot cut or mute inside the encode on the primary item. The overlay adds session hooks. CorrMedia fills them from .corr.json. The file on disk is never rewritten.

  • Patched Jellyfin 10.11.11 with the CorrMedia overlay
  • CorrMedia plugin, apply-edits on by default
  • A sidecar beside each title you want to shape

Make it stock

This should not need a fork forever.

The overlay exists because stock Jellyfin has no session encode hooks. The first pull request adds those hooks as generic plugin interfaces — audio filters and an edit graph — with no-ops when nothing implements them. If you want this in Jellyfin, review, comment, or 👍 the upstream work.

CorrMedia

Keep the master. Watch your cut.

You already know how to run Jellyfin. The repo has the plugin, the patch, and how to apply it.