diff --git a/fileflows/scripts/01_Detect_4K_Remux.js b/fileflows/scripts/01_Detect_4K_Remux.js index 2325449..3ea7820 100644 --- a/fileflows/scripts/01_Detect_4K_Remux.js +++ b/fileflows/scripts/01_Detect_4K_Remux.js @@ -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; }