Repository navigation
Conversation
Every renderer passes the captions file's bare name to FFmpeg's subtitles filter (cwd = the captions' folder). The name went into the filtergraph unescaped, so a file name with a comma, quote, bracket or semicolon broke the graph: a translated burn, whose output is named after the clip's title, failed with a filter parse error when the title had a comma. One helper, video.filters.subtitles_filter(), applies FFmpeg's documented two-level escaping and is used at all eight call sites. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@Andretuta is attempting to deploy a commit to the Clips Studio Team on Vercel. A member of the Team first needs to authorize it. |
Owner
|
thank you where did you download this version of the app, because this bug was found when I was updating the editor but the new editor isn't in the release yet I am still not finished it. |
Owner
|
also I can't merge till I am finished the editor it's taking longer than I expected |
Owner
|
i thought i clicked an issue and not a pull request when I first opened this btw lol. I am tired |
"a=b.ass" reached FFmpeg as option "a" with value "b.ass" ("Option not
found"), the same failure class as the comma: a translated burn is named
after the clip's title, and _safe_name keeps '='. '=' is now escaped at the
option level, so plain names stay byte-identical.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A translated burn failed for a clip whose title contained a comma. FFmpeg exited with a filter parse error, and the clip was left without its burned-in captions. The translated output is named after the clip's title, so the comma reached the filtergraph.
Cause
Each renderer passes the captions file's bare name to the
subtitles=filter, withcwdset to the captions' folder to avoid Windows drive-letter escaping. The name itself went into the filtergraph unescaped. FFmpeg then reads a,as the start of the next filter, and',[,]and;cause the same failure. A name such asa=b.assfails too: FFmpeg readsaas an option key ("Option not found"). This affects all eight call sites:multilingual/burn.pyvideo/cropper.py(4 sites)video/cutter.pygaming/compose.pyvideo_editor/export.pyFix
A single helper,
video.filters.subtitles_filter(name), applies FFmpeg's documented two-level escaping from "Notes on filtergraph escaping":\ ' : =\ ' [ ] , ;All eight call sites now use it. Nothing else changes: callers still pass a bare name and still set
cwd.Tests
tests/test_subtitles_filter.pychecks:, ' [ ] ; :;=;Corte, do 'Paulinho' [GTA]; parte 1.ass. Two more real runs usea=b.assandGTA=top, do 'Paulinho' [x]; parte 1.ass. These cases are skipped when FFmpeg is not installed.ruff checkis clean on the touched files. The existing tests for these modules (21 files) pass.🤖 Generated with Claude Code