Skip to content

Surface real ffmpeg errors; disable unavailable hardware encoders#20

Closed
StuartCameronCode wants to merge 1 commit into
mainfrom
fix-encoder-errors-and-ui
Closed

Surface real ffmpeg errors; disable unavailable hardware encoders#20
StuartCameronCode wants to merge 1 commit into
mainfrom
fix-encoder-errors-and-ui

Conversation

@StuartCameronCode

Copy link
Copy Markdown
Owner

Addresses a user report: forcing QuickSync (not present in the bundled ffmpeg) produced the cryptic vspipe exited with signal 13 (SIGPIPE).

#1 — Surface the real ffmpeg error

vspipe | ffmpeg: when ffmpeg fails, vspipe dies with SIGPIPE on the closed pipe, and we reported that (checked before ffmpeg). Now pipeline_executor:

  • checks ffmpeg's exit status first and appends the tail of its stderr, so the error reads e.g. ffmpeg exited with exit code 1: ... Unknown encoder 'h264_qsv';
  • treats a vspipe SIGPIPE as a benign downstream-closed symptom (ffmpeg's result is authoritative) rather than a failure.

#2 — Disable unavailable hardware encoders

HardwareEncoderDetector already knows which encoders are compiled into the bundled ffmpeg. The settings UI now disables undetected hardware encoders (greyed, non-selectable, "Not available in this build") instead of letting users force a guaranteed failure.

Not addressed here (separate, by design): actually shipping a hw-enabled Linux ffmpeg + a runtime functional probe (the discussed #3).

🤖 Generated with Claude Code

When an encoder ffmpeg fails (e.g. a hardware encoder not present in the
bundled ffmpeg), vspipe dies with SIGPIPE writing to the closed pipe, and
the worker reported that symptom ("vspipe exited with signal 13") instead
of the cause. Now:

- pipeline_executor checks ffmpeg's status first and includes the tail of
  its stderr in the error, so the user sees e.g. "Unknown encoder
  'h264_qsv'". A vspipe SIGPIPE is no longer reported when it's just the
  downstream pipe closing (ffmpeg's result is authoritative).
- The settings UI now disables (not just warns on) hardware encoders that
  ffmpeg didn't report as compiled into this build, with a clear "Not
  available in this build" reason — preventing a guaranteed-to-fail encode.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@StuartCameronCode

Copy link
Copy Markdown
Owner Author

Closing the PR per request; the changes are kept on the fix-encoder-errors-and-ui branch.

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.

1 participant