fix(ffmpeg): align transcode pipelines with ffmpeg 8 #56

Merged
timothy merged 1 commits from issue9-ffmpeg8 into main 2026-07-01 19:51:14 +02:00
Owner

Summary

  • derive QSV from the configured VAAPI render node when emitting QSV global options for FFmpeg 8 compatibility
  • update the amd64 app Docker base image to 192.168.1.95:3000/timothy/ersatztv-ffmpeg:8.1.2
  • update the ffmpeg-test Docker image path to the internal FFmpeg 8.1.2 image and .NET 10 restore/build setup
  • refresh docs that name the FFmpeg base image

Refs #9.

Root Cause

The published FFmpeg 8.1.2 base image is valid, but app-side QSV initialization still emitted an unqualified -init_hw_device qsv=hw path and the Docker/test image references were pinned to FFmpeg 7.1.1. FFmpeg 8 works more reliably with a configured DRM render node when QSV is derived from the VAAPI device (vaapi=va:<render-node> then qsv=hw@va).

Verification

  • Baseline before changes: dotnet test ErsatzTV.FFmpeg.Tests/ErsatzTV.FFmpeg.Tests.csproj -v minimal on fresh origin/main: 18/18 passing
  • TDD red check: new QSV global-option test failed against current qsv=hw output
  • After fix: dotnet test ErsatzTV.FFmpeg.Tests/ErsatzTV.FFmpeg.Tests.csproj -v minimal: 20/20 passing
  • Built app image on bumblebee/192.168.1.99: ersatztv:issue9-ffmpeg8
    • build resolved base image digest sha256:89bf7b6b563d21d7cf49b102ca495fd143028c05e8c9779cd5c1366d9cf823a7
  • Built app image smoke on bumblebee:
    • ffmpeg -version reports 8.1.2
    • software lavfi libx264 encode succeeds
    • AMD VAAPI H.264 lavfi encode succeeds
  • Built updated ffmpeg-test image on bumblebee: ersatztv-ffmpeg-tests:issue9-ffmpeg8
  • Started ffmpeg-test runtime smoke; it ran real CPU-heavy libx265 transcode cases, but was stopped after several minutes due duration. Build is verified; full runtime completion is left to CI/longer manual run.

Notes

bumblebee currently exposes AMD VAAPI only (vendor=0x1002), so Intel QSV hardware transcode could not be fully smoked on that host.

## Summary - derive QSV from the configured VAAPI render node when emitting QSV global options for FFmpeg 8 compatibility - update the amd64 app Docker base image to `192.168.1.95:3000/timothy/ersatztv-ffmpeg:8.1.2` - update the ffmpeg-test Docker image path to the internal FFmpeg 8.1.2 image and .NET 10 restore/build setup - refresh docs that name the FFmpeg base image Refs #9. ## Root Cause The published FFmpeg 8.1.2 base image is valid, but app-side QSV initialization still emitted an unqualified `-init_hw_device qsv=hw` path and the Docker/test image references were pinned to FFmpeg 7.1.1. FFmpeg 8 works more reliably with a configured DRM render node when QSV is derived from the VAAPI device (`vaapi=va:<render-node>` then `qsv=hw@va`). ## Verification - Baseline before changes: `dotnet test ErsatzTV.FFmpeg.Tests/ErsatzTV.FFmpeg.Tests.csproj -v minimal` on fresh `origin/main`: 18/18 passing - TDD red check: new QSV global-option test failed against current `qsv=hw` output - After fix: `dotnet test ErsatzTV.FFmpeg.Tests/ErsatzTV.FFmpeg.Tests.csproj -v minimal`: 20/20 passing - Built app image on `bumblebee`/`192.168.1.99`: `ersatztv:issue9-ffmpeg8` - build resolved base image digest `sha256:89bf7b6b563d21d7cf49b102ca495fd143028c05e8c9779cd5c1366d9cf823a7` - Built app image smoke on `bumblebee`: - `ffmpeg -version` reports 8.1.2 - software lavfi `libx264` encode succeeds - AMD VAAPI H.264 lavfi encode succeeds - Built updated ffmpeg-test image on `bumblebee`: `ersatztv-ffmpeg-tests:issue9-ffmpeg8` - Started ffmpeg-test runtime smoke; it ran real CPU-heavy `libx265` transcode cases, but was stopped after several minutes due duration. Build is verified; full runtime completion is left to CI/longer manual run. ## Notes `bumblebee` currently exposes AMD VAAPI only (`vendor=0x1002`), so Intel QSV hardware transcode could not be fully smoked on that host.
timothy added 1 commit 2026-07-01 19:38:26 +02:00
fix(ffmpeg): align transcode pipelines with ffmpeg 8
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 4m4s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 5m17s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
e170b2dc3c
refs #9
timothy merged commit 45ade1fd78 into main 2026-07-01 19:51:14 +02:00
timothy deleted branch issue9-ffmpeg8 2026-07-01 19:51:14 +02:00
Sign in to join this conversation.