FileFlows: 4K HEVC über 35 Mbit/s immer nach AV1

This commit is contained in:
sascha 2026-08-09 08:27:30 +02:00
parent f0dbb273f8
commit 82ba520441

View file

@ -1,7 +1,20 @@
/**
* @name 01_Detect_4K_Remux
* @description Erkennt 4K-HEVC-Kandidaten fuer AV1: Remux-Dateien oder Quellen mit mehr als 35 Mbit/s.
* @author Sascha (Port von Tdarr_Plugin_AV1_BestQuality_v100)
* @revision 2
* @output Ja - 4K HEVC -> AV1 Encode
* @output Nein - kein 4K AV1-Kandidat
* @param {int} MinWidth Minimale Breite in Pixel, ab der eine Datei als 4K gilt
* @param {int} MinSourceMbps Minimale Quellenbitrate fuer klassische Remux-Kandidaten
*/
function Script(MinWidth, MinSourceMbps)
{
MinWidth = MinWidth || 3000;
MinSourceMbps = MinSourceMbps || 15;
// Titel sind unzuverlaessig: WEB-DL/UHD-BluRay-Releases tragen oft kein "Remux".
// Deshalb ist jede 4K-HEVC-Quelle oberhalb dieser VIDEO-Bitrate ebenfalls Kandidat.
const HighBitrateMbps = 35;
// ─────────────────────────────────────────────────────────────────────────
// WICHTIG (verifiziert 2026-07-06): Variables.vi.VideoInfo wird in dieser
@ -88,22 +101,27 @@ function Script(MinWidth, MinSourceMbps)
let isRemux = /remux/i.test(fileName);
let isHEVC = (codec === 'hevc' || codec === 'h265');
let isAV1 = (codec === 'av1');
// Bei unbekannter Bitrate NICHT ablehnen: ein 4K-HEVC-Remux ist per Definition hochbitratig.
// Bei unbekannter Bitrate klassische Remuxe weiterhin zulassen; Nicht-Remuxe
// brauchen dagegen einen belastbaren Messwert oberhalb von 35 Mbit/s.
let brKnown = bitrateMbps > 0;
let highBR = brKnown ? (bitrateMbps >= MinSourceMbps) : true;
let overHighBitrate = brKnown && bitrateMbps > HighBitrateMbps;
let sourceCandidate = isRemux || overHighBitrate;
Logger.ILog('Datei: ' + fileName);
Logger.ILog('Video: codec=' + codec + ' width=' + width + ' bitrate=' +
(brKnown ? bitrateMbps.toFixed(1) + ' Mbit/s' : 'unbekannt'));
Logger.ILog('Checks: 4K=' + is4K + ' Remux=' + isRemux + ' HEVC=' + isHEVC +
' >=' + MinSourceMbps + 'Mbit=' + highBR + (brKnown ? '' : ' (Bitrate unbekannt->Remux gilt als HB)'));
' >=' + MinSourceMbps + 'Mbit=' + highBR + ' >' + HighBitrateMbps +
'Mbit=' + overHighBitrate + (brKnown ? '' : ' (Bitrate unbekannt)'));
if (isAV1) { Logger.ILog('Bereits AV1 - kein Re-Encode.'); return 2; }
if (!is4K) { Logger.ILog('Nicht 4K (<' + MinWidth + 'px).'); return 2; }
if (!isRemux) { Logger.ILog('Kein "Remux" im Dateinamen.'); return 2; }
if (!isHEVC) { Logger.ILog('Codec ist nicht HEVC/H265.'); return 2; }
if (!highBR) { Logger.ILog('Bitrate < ' + MinSourceMbps + ' Mbit/s - lohnt nicht.'); return 2; }
if (!sourceCandidate) { Logger.ILog('Weder Remux noch Video-Bitrate > ' + HighBitrateMbps + ' Mbit/s.'); return 2; }
if (isRemux && !highBR) { Logger.ILog('Remux-Bitrate < ' + MinSourceMbps + ' Mbit/s - lohnt nicht.'); return 2; }
Logger.ILog('-> 4K Remux HEVC Kandidat fuer AV1 Encode');
Logger.ILog('-> 4K HEVC Kandidat fuer AV1 Encode (' +
(isRemux ? 'Remux' : 'hohe Bitrate ' + bitrateMbps.toFixed(1) + ' Mbit/s') + ')');
return 1;
}