Skip to content

Repository files navigation

Jellyfin FFmpeg

Build Status Last Commit

FFmpeg with the Jellyfin patch set for HDR tone mapping (the SIMD-optimized tonemapx / libplacebo filters) on FreeBSD. Ships both the 7.x and 8.x lines: jellyfin-ffmpeg (= v7, the default) / jellyfin-ffmpeg7 / jellyfin-ffmpeg8 (and matching *probe) are all on PATH. Standalone CLI image, not a service.

Registry ghcr.io/daemonless/jellyfin-ffmpeg
Source https://github.com/jellyfin/jellyfin-ffmpeg
Website https://jellyfin.org/

Version Tags

Tag Description Best For
7 / latest FreeBSD Quarterly. Uses stable, tested packages. Most users — recommended.
8 Upstream Binary. Built from official release. Alternative build.

Prerequisites

Before deploying, ensure your host environment is ready. See the Quick Start Guide for host setup instructions.

Deployment

Podman Compose

services:
  jellyfin-ffmpeg:
    image: "ghcr.io/daemonless/jellyfin-ffmpeg:latest"
    container_name: jellyfin-ffmpeg
    volumes:
      - "/path/to/containers/jellyfin-ffmpeg/work:/work"
    # always (not unless-stopped) so FreeBSD's podman rc.d auto-starts it at boot
    restart: always

Save as compose.yaml, then run podman-compose up -d.

Podman CLI

podman run -d --name jellyfin-ffmpeg \
  -v /path/to/containers/jellyfin-ffmpeg/work:/work \
  ghcr.io/daemonless/jellyfin-ffmpeg:latest

Save as run.sh, then run sh run.sh.

Bastille

Warning

Bastille's OCI support is experimental. It requires buildah, shares the host network stack (inherit), and persists image-declared volumes under --data-path.

services:
  jellyfin-ffmpeg:
    image: "ghcr.io/daemonless/jellyfin-ffmpeg:latest"
    container_name: jellyfin-ffmpeg
    network_mode: host  # jail shares host networking

Save as podman-compose.yml, then run bastille up. Or via CLI:

bastille create -O \
  --data-path /path/to/containers/jellyfin-ffmpeg \
  jellyfin-ffmpeg ghcr.io/daemonless/jellyfin-ffmpeg:latest inherit

Ansible

- name: Deploy jellyfin-ffmpeg
  containers.podman.podman_container:
    name: jellyfin-ffmpeg
    image: "ghcr.io/daemonless/jellyfin-ffmpeg:latest"
    state: started
    restart_policy: always
    volumes:
      - "/path/to/containers/jellyfin-ffmpeg/work:/work"

Save as jellyfin-ffmpeg-deploy.yaml, then run ansible-playbook jellyfin-ffmpeg-deploy.yaml.

Parameters

Volumes

Path Description
/work

Architectures: amd64, aarch64 User: root (UID/GID via PUID/PGID, defaults to 1000:1000) Base: FreeBSD 15.1


Need help? Join our Discord community.

Releases

Packages

Contributors

Languages