Local media automation / signal online

FFmpeg jobs you can explain.

Preflight the machine. Preview the exact plan. Run a maintained workflow. Keep a privacy-redacted receipt. PyFFmpegCore turns fragile media commands into repeatable operations for the terminal, Python, Node.js, and CI.

Current beta / 0.3.3 pipx install "pyffmpegcore==0.3.3"

Requires Python 3.10–3.14 and system ffmpeg/ffprobe. View package →

Node.js launcher on npm → (Python and FFmpeg required)

PUBLIC RUN / 0.3.364.3 S
PyFFmpegCore CLI 0.3.3

Smoke test: PASS
Preflight PASS — convert
Progress: 100% complete
Valid receipt: schema 1.0, 1 item(s)

PASS — public install, preflight, plan,
progress, output, and receipt all verified.

Accessible transcript excerpt from the recorded public PyPI run.

3operating systems
5Python versions
0default telemetry
0.3.3signed public beta

Public PyPI 0.3.3 recording / no staged output

Watch a real 0.3.3 run.

The 64.3-second capture shows the public 0.3.3 install, capability scan, synthetic smoke test, explained plan, progress, probed output, and validated receipt.

One job.
Four proofs.

Most wrappers start at execution. PyFFmpegCore starts one step earlier and leaves evidence one step later, so the same intent is reviewable before and after FFmpeg touches a file.

01 / Preflight

Know the machine

Resolve binaries, encoders, filters, muxers, protocols, streams, destination, and disk requirements.

02 / Plan

See the exact work

Inspect a deterministic argument vector and human explanation without mutating the filesystem.

03 / Run

Control failure

Use explicit overwrite, timeout, cancellation, cleanup, progress, and stable exit-code policies.

04 / Receipt

Keep the evidence

Record redacted plans, tool versions, probes, elapsed results, and output facts without uploading media.

Measured.
Not mocked.

The 19 September replay used generated first-party fixtures. A separate public-domain Xiph clip confirms the exact-size result. Commands, probes, receipts, checksums, and limits are open for inspection.

Web video / compatibility cost +78.2%

2,141,004-byte VP9 WebM to a 3,814,506-byte H.264/AAC MP4. Wider playback compatibility can increase size.

Inspect the replay →
Exact-size / public-domain video 1 MiB target

An 8,147,493-byte Xiph VP9 clip reached 1,035,870 bytes with a 7% reserve. The default 5% missed by 7,803 bytes.

Inspect the exact-size check →
Podcast / measured loudness −16.2 LUFS

A −22.0 LUFS WAV normalized toward the declared −16.0 LUFS speech target.

Inspect the replay →

Choose your lane.

Start from the outcome you need. Every lane reaches the same planner, preflight, runner, and receipt model.

One useful file

Convert a web video, fit an upload limit, normalize speech, burn subtitles, extract audio, or make thumbnails.

Open the recipe index →

Repeatable pipeline

Validate, visualize, run, cache, and resume strict JSON or TOML DAGs without embedding raw shell strings.

Build a pipeline →

Know when not to use it.

Raw FFmpeg is better when you already own the exact argument vector. Graph builders are better for arbitrary filter graphs. PyAV is better for direct packet and frame access. PyFFmpegCore owns the repeatable task layer: diagnostics, plans, execution policy, and proof.

Read the factual comparison →

If a preview or receipt helps you ship media, star PyFFmpegCore on GitHub or share a reproducible issue.