Browse Source

feat: upgrade ffmpeg to 8.1.2 (#2951)

pull/2952/head
Jason Dove 1 week ago committed by GitHub
parent
commit
5855deb8bc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      .github/workflows/artifacts.yml
  2. 4
      CHANGELOG.md
  3. 17
      ErsatzTV.Infrastructure/Health/Checks/FFmpegVersionHealthCheck.cs
  4. 2
      docker/Dockerfile
  5. 2
      docker/arm32v7/Dockerfile
  6. 2
      docker/arm64/Dockerfile
  7. 2
      docker/ffmpeg-tests/Dockerfile

2
.github/workflows/artifacts.yml

@ -311,7 +311,7 @@ jobs:
uses: suisei-cn/actions-download-file@v1.3.0 uses: suisei-cn/actions-download-file@v1.3.0
id: downloadffmpeg id: downloadffmpeg
with: with:
url: "https://github.com/ErsatzTV/ErsatzTV-ffmpeg/releases/download/7.1.1/ffmpeg-n7.1.1-56-gc2184b65d2-win64-gpl-7.1.zip" url: "https://github.com/ErsatzTV/ErsatzTV-ffmpeg/releases/download/8.1.2/ffmpeg-n8.1.2-win64-gpl-8.1.zip"
target: ffmpeg/ target: ffmpeg/
- name: Package artifacts - name: Package artifacts

4
CHANGELOG.md

@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased] ## [Unreleased]
### Changed
- Upgrade all bundled versions of ffmpeg from 7.1 to 8.1.2
- Other versions (`linux64` and `linuxarm64`) are available at https://github.com/ErsatzTV/ErsatzTV-ffmpeg/releases/tag/8.1.2
### Fixed ### Fixed
- Update Plex movie and other video titles when changed from Plex - Update Plex movie and other video titles when changed from Plex
- The first library scan after updating will act like a deep scan due to adding title to the Plex etag calculation - The first library scan after updating will act like a deep scan due to adding title to the Plex etag calculation

17
ErsatzTV.Infrastructure/Health/Checks/FFmpegVersionHealthCheck.cs

@ -11,15 +11,15 @@ public class FFmpegVersionHealthCheck(
IHardwareCapabilitiesFactory hardwareCapabilitiesFactory) IHardwareCapabilitiesFactory hardwareCapabilitiesFactory)
: BaseHealthCheck, IFFmpegVersionHealthCheck : BaseHealthCheck, IFFmpegVersionHealthCheck
{ {
private const string BundledVersion = "7.1.1"; private const string BundledVersion = "8.1.2";
private const string BundledVersionVaapi = "7.1.1"; private const string BundledVersionVaapi = "8.1.2";
private const string WindowsVersionPrefix = "n7.1.1"; private const string WindowsVersionPrefix = "n8.1.2";
public override string Title => "FFmpeg Version"; public override string Title => "FFmpeg Version";
public async Task<HealthCheckResult> Check(CancellationToken cancellationToken) public async Task<HealthCheckResult> Check(CancellationToken cancellationToken)
{ {
var link = new HealthCheckLink("https://github.com/ErsatzTV/ErsatzTV-ffmpeg/releases/tag/7.1.1"); var link = new HealthCheckLink("https://github.com/ErsatzTV/ErsatzTV-ffmpeg/releases/tag/8.1.2");
Option<ConfigElement> maybeFFmpegPath = Option<ConfigElement> maybeFFmpegPath =
await configElementRepository.GetConfigElement(ConfigElementKey.FFmpegPath, cancellationToken); await configElementRepository.GetConfigElement(ConfigElementKey.FFmpegPath, cancellationToken);
@ -82,21 +82,22 @@ public class FFmpegVersionHealthCheck(
if (version.StartsWith("3.", StringComparison.OrdinalIgnoreCase) || if (version.StartsWith("3.", StringComparison.OrdinalIgnoreCase) ||
version.StartsWith("4.", StringComparison.OrdinalIgnoreCase) || version.StartsWith("4.", StringComparison.OrdinalIgnoreCase) ||
version.StartsWith("5.", StringComparison.OrdinalIgnoreCase) || version.StartsWith("5.", StringComparison.OrdinalIgnoreCase) ||
version.StartsWith("6.", StringComparison.OrdinalIgnoreCase)) version.StartsWith("6.", StringComparison.OrdinalIgnoreCase) ||
version.StartsWith("7.", StringComparison.OrdinalIgnoreCase))
{ {
return FailResult( return FailResult(
$"{app} version {version} is too old; please install 7.1.1!", $"{app} version {version} is too old; please install 8.1.2!",
$"{app} version is too old", $"{app} version is too old",
link); link);
} }
if (!version.StartsWith("7.1.1", StringComparison.OrdinalIgnoreCase) && if (!version.StartsWith("8.1.2", StringComparison.OrdinalIgnoreCase) &&
!version.StartsWith(WindowsVersionPrefix, StringComparison.OrdinalIgnoreCase) && !version.StartsWith(WindowsVersionPrefix, StringComparison.OrdinalIgnoreCase) &&
version != BundledVersion && version != BundledVersion &&
version != BundledVersionVaapi) version != BundledVersionVaapi)
{ {
return WarningResult( return WarningResult(
$"{app} version {version} is unexpected and may have problems; please install 7.1.1!", $"{app} version {version} is unexpected and may have problems; please install 8.1.2!",
$"{app} version is unexpected", $"{app} version is unexpected",
link); link);
} }

2
docker/Dockerfile

@ -1,6 +1,6 @@
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-amd64 AS dotnet-runtime FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-amd64 AS dotnet-runtime
FROM --platform=linux/amd64 ghcr.io/ersatztv/ersatztv-ffmpeg:7.1.1 AS runtime-base FROM --platform=linux/amd64 ghcr.io/ersatztv/ersatztv-ffmpeg:8.1.2 AS runtime-base
COPY --from=dotnet-runtime /usr/share/dotnet /usr/share/dotnet COPY --from=dotnet-runtime /usr/share/dotnet /usr/share/dotnet
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends python3 python3-pip && \ apt-get install -y --no-install-recommends python3 python3-pip && \

2
docker/arm32v7/Dockerfile

@ -1,6 +1,6 @@
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-arm32v7 AS dotnet-runtime FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-arm32v7 AS dotnet-runtime
FROM --platform=linux/arm/v7 ghcr.io/ersatztv/ersatztv-ffmpeg:7.1.1 AS runtime-base FROM --platform=linux/arm/v7 ghcr.io/ersatztv/ersatztv-ffmpeg:8.1.2 AS runtime-base
COPY --from=dotnet-runtime /usr/share/dotnet /usr/share/dotnet COPY --from=dotnet-runtime /usr/share/dotnet /usr/share/dotnet
# https://hub.docker.com/_/microsoft-dotnet # https://hub.docker.com/_/microsoft-dotnet

2
docker/arm64/Dockerfile

@ -1,6 +1,6 @@
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-arm64v8 AS dotnet-runtime FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-arm64v8 AS dotnet-runtime
FROM --platform=linux/arm64 ghcr.io/ersatztv/ersatztv-ffmpeg:7.1.1 AS runtime-base FROM --platform=linux/arm64 ghcr.io/ersatztv/ersatztv-ffmpeg:8.1.2 AS runtime-base
COPY --from=dotnet-runtime /usr/share/dotnet /usr/share/dotnet COPY --from=dotnet-runtime /usr/share/dotnet /usr/share/dotnet
# https://hub.docker.com/_/microsoft-dotnet # https://hub.docker.com/_/microsoft-dotnet

2
docker/ffmpeg-tests/Dockerfile

@ -1,4 +1,4 @@
FROM ghcr.io/ersatztv/ersatztv-ffmpeg:7.1.1 FROM ghcr.io/ersatztv/ersatztv-ffmpeg:8.1.2
RUN apt-get update && apt-get install -y ca-certificates gnupg mkvtoolnix && \ RUN apt-get update && apt-get install -y ca-certificates gnupg mkvtoolnix && \
curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh && \ curl -L https://dot.net/v1/dotnet-install.sh -o dotnet-install.sh && \
chmod +x ./dotnet-install.sh && \ chmod +x ./dotnet-install.sh && \

Loading…
Cancel
Save