Skip to content

Raise the Minimum FFmpeg Version to 8.0 - #1096

Merged
ptr727 merged 1 commit into
developfrom
ffprobe-8-minimum
Oct 30, 2026
Merged

ptr727 merged 1 commit into
developfrom
ffprobe-8-minimum

Conversation

@ptr727

@ptr727 ptr727 commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

FfProbe.Tool.GetClosedCaptions() passes -analyze_frames, which FFprobe added in FFmpeg 8.0. The startup gate admitted FFmpeg from 6.1, so on 6.1 through 7.x every file reaching closed caption detection failed. With DeleteInvalidFiles on, that file was then deleted.

FFmpeg and FFprobe ship in one package at one version, so the minimum belongs to the tool family rather than to each tool.

  • MediaTool.MinimumVersion is non-virtual and family-keyed: 8.0 for ToolFamily.FfMpeg, null for every other family. Tools.VerifyTools() checks FFmpeg and FFprobe against it at startup.
  • The per-tool 6.1 override on FfMpeg.Tool and its option-version comment are removed.
  • FfMpegVerifyCommandTests gates both tools on one theory, and the distro version-line cases for 7.1.1 and 6.1.1 now expect a refusal.
  • README, HISTORY (3.23), and ARCHITECTURE state the 8.0 family minimum.

release/7.1 fftools/ffprobe.c has no analyze_frames, and release/8.0 does. Ubuntu rolling, the Docker image base, ships FFmpeg 9.0.2, and 26.04 LTS ships 8.0.1.

Closes #1092

Verification

  • dotnet test: 304 passed, 0 failed.
  • dotnet format style --verify-no-changes --severity=info and dotnet csharpier check are clean.
  • prose_lint.py --diff against the merge base is clean.
  • A recorded local-strict-review pass over the full diff raised no findings.

Dropped findings

  • Docs/ClosedCaptions.md:170 says FFprobe analyze_frames detection "will be implemented when broadly supported", although it is implemented. Wording, on text this change did not touch.

🤖 Generated with Claude Code

GetClosedCaptions() passes -analyze_frames, which FFprobe added in 8.0. On an older FFprobe every file reaching closed caption detection failed, and with DeleteInvalidFiles on it was deleted. FFmpeg and FFprobe ship in one package at one version, so MediaTool.MinimumVersion holds one minimum per tool family rather than one per tool, and the startup gate checks both against it. The README, HISTORY, and ARCHITECTURE notes state the family minimum.

Closes #1092

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings October 30, 2026 14:40
@coderabbitai

coderabbitai Bot commented Oct 30, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 3 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 2 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 2f9188f0-7123-4228-81ab-fb70f2df6747
Commits

Reviewing files that changed from the base of the PR and between 3ca2072 and 12d77bc.

Files selected for processing: 6
  • ARCHITECTURE.md
  • HISTORY.md
  • PlexCleaner/FfMpegTool.cs
  • PlexCleaner/MediaTool.cs
  • PlexCleanerTests/FfMpegVerifyCommandTests.cs
  • README.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ptr727

ptr727 commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 12d77bc26a7622e7e21dcedec228ee36ef0b8ba9, the content this pull request carries at that commit against develop, and it recorded 0 findings.

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Require FFmpeg and FFprobe 8.0 at startup

🐞 Bug fix ⚙️ Configuration changes 🧪 Tests 📝 Documentation 🕐 10-20 Minutes

Grey Divider

AI Description

• Require FFmpeg and FFprobe 8.0 to prevent unsupported closed-caption probes from failing during
 processing.
• Reject older installations at startup, before a probe failure can lead to file deletion.
• Update version-gate tests and documentation to reflect the shared minimum.
Diagram

graph TD
  FFmpeg["FFmpeg"] --> Verify["Tools.VerifyTools"] --> Minimum["Family minimum"] --> Gate{"Supported version?"} -->|yes| Processing["Media processing"]
  FFprobe["FFprobe"] --> Verify
  Gate -->|no| Stop["Startup error"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Set separate minimums on each tool
  • ➕ Keeps requirements next to each tool's implementation.
  • ➖ Duplicates a shared package constraint and risks FFmpeg and FFprobe minimums diverging.
2. Support older FFprobe with a fallback probe
  • ➕ Preserves compatibility with FFmpeg 6.1–7.x.
  • ➖ Adds version-dependent caption-detection behavior and testing for an older toolchain.

Recommendation: Use the shared 8.0 family minimum. It matches the packaged tools' versioning and prevents unsupported probes before file processing; a fallback is warranted only if older FFmpeg compatibility is a requirement.

Files changed (6) +22 / -19

Bug fix (2) +2 / -4
FfMpegTool.csRemove FFmpeg-only 6.1 minimum +0/-3

Remove FFmpeg-only 6.1 minimum

• Deletes the tool-specific minimum and its comment so FFmpeg uses the shared family requirement.

PlexCleaner/FfMpegTool.cs

MediaTool.csSet an 8.0 minimum for the FFmpeg tool family +2/-1

Set an 8.0 minimum for the FFmpeg tool family

• Makes MinimumVersion non-virtual and returns 8.0 for FFmpeg-family tools, including FFprobe. Other tool families retain no minimum.

PlexCleaner/MediaTool.cs

Tests (1) +13 / -8
FfMpegVerifyCommandTests.csTest the shared 8.0 version gate +13/-8

Test the shared 8.0 version gate

• Checks both FFmpeg and FFprobe at the 8.0 boundary and changes 6.1.1 and 7.1.1 distro-version cases to expect rejection. Retains coverage for unparsed version strings.

PlexCleanerTests/FfMpegVerifyCommandTests.cs

Documentation (3) +7 / -7
ARCHITECTURE.mdDocument family-level minimum-version policy +2/-2

Document family-level minimum-version policy

• Describes MediaTool.MinimumVersion as a per-family requirement enforced by startup verification, replacing the per-tool override guidance.

ARCHITECTURE.md

HISTORY.mdRecord the FFmpeg-family 8.0 requirement +3/-3

Record the FFmpeg-family 8.0 requirement

• Changes the release notes from a 6.1 FFmpeg minimum to an 8.0 minimum for both FFmpeg and FFprobe, including installation guidance. Removes the now-unnecessary 6.1 version note for the encoder option.

HISTORY.md

README.mdUpdate installation requirement to FFmpeg 8.0 +2/-2

Update installation requirement to FFmpeg 8.0

• Changes the release summary and installation guidance to state that FFmpeg 8.0 or newer is required.

README.md

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can route each severity your way: inline, summary, both, or drop

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues remain, and the changes consistently enforce and document the shared FFmpeg 8.0 minimum with updated coverage.

No open issues 🎉

What changed in this PR

This pull request raises the minimum supported FFmpeg tool-family version to 8.0 so FFmpeg and FFprobe support the -analyze_frames option used for closed-caption detection.

Changes:

  • Applies a shared FFmpeg-family minimum version of 8.0.
  • Updates version-gating tests for FFmpeg and FFprobe.
  • Removes the former per-tool 6.1 override.
  • Updates the README, release history, and architecture documentation.
  • Minor nit: clarify locally why the family minimum is required in MediaTool.
File Description
README.md Documents FFmpeg 8.0 as the minimum supported version.
PlexCleanerTests/​FfMpegVerifyCommandTests.cs Tests the shared 8.0 minimum for FFmpeg and FFprobe.
PlexCleaner/​MediaTool.cs Defines the family-based minimum version.
PlexCleaner/​FfMpegTool.cs Removes the former FFmpeg-specific 6.1 override.
HISTORY.md Updates the 3.23 release notes.
ARCHITECTURE.md Documents family-based minimum-version enforcement.

Review effort: Lite

@ptr727
ptr727 merged commit 303ef98 into develop Oct 30, 2026
24 checks passed
@ptr727
ptr727 deleted the ffprobe-8-minimum branch October 30, 2026 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants