Pluto TV im Zwangs-Vollbild halten

Pluto TV Vollbild-Fix — Bauanleitung

Bauanleitung · Browser-Automatisierung

Pluto TV im Zwangs-Vollbild halten

Ein Userscript, das den Player bei jedem Folgenwechsel automatisch wieder auf volle Bildschirmgröße presst — damit OBS ein sauberes Signal ohne Menüs, Sprünge oder EPG-Einblendungen aufzeichnet.

Funktioniert zuverlässig. CSS-Overrides + MutationObserver sind eine bewährte Technik. Einziges Risiko: Wenn Pluto TV sein Layout grundlegend ändert, müssen die Klassennamen im Skript einmalig nachgezogen werden.

Benötigte Teile

  • Chrome, Firefox, Brave oder Edge
  • Tampermonkey oder Violentmonkey
  • Das Userscript (unten, fertig zum Einfügen)
  • OBS für die Aufnahme
1

Userscript-Manager installieren

Falls noch nicht vorhanden: Tampermonkey oder Violentmonkey aus dem Add-on-Store deines Browsers installieren.

2

Neues Skript anlegen

Auf das Icon von Tampermonkey/Violentmonkey klicken → Neues Skript erstellen. Den Platzhalter-Code komplett löschen.

3

Code einfügen und speichern

Den kompletten Block unten in den leeren Editor einfügen, dann mit Strg + S speichern.

pluto-fullscreen-enforcer.user.js
// ==UserScript==
// @name         Pluto TV Permanent Fullscreen Enforcer
// @namespace    http://tampermonkey.net/
// @version      2.0
// @description  Erzwingt dauerhaftes Vollbild und verhindert Minimierung bei Episodenwechsel
// @author       Jens
// @match        https://pluto.tv/*
// @grant        GM_addStyle
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    // 1. CSS fest im Browser verankern (überschreibt alle Styles von Pluto TV)
    const cssRules = `
        /* Blendet Header, Navigation, Kanal-Listen, Sidebar und EPG komplett aus */
        header, nav, aside, footer,
        .sidebar, .channel-guide, .timeline,
        [class*="Guide_"], [class*="Header_"], [class*="Sidebar_"],
        [class*="jellyroll"], [class*="overlay-controls"] {
            display: none !important;
            visibility: hidden !important;
            height: 0 !important;
            width: 0 !important;
        }

        /* Setzt Body und HTML auf festes Schwarz ohne Scrollbalken */
        html, body {
            overflow: hidden !important;
            background-color: #000000 !important;
            margin: 0 !important;
            padding: 0 !important;
            width: 100vw !important;
            height: 100vh !important;
        }

        /* Zwingt den Hauptcontainer und Player auf die volle Fenstergröße */
        #root, main, [class*="PlayerContainer"], [class*="video-player"], [class*="Player_"] {
            position: fixed !important;
            top: 0 !important;
            left: 0 !important;
            width: 100vw !important;
            height: 100vh !important;
            z-index: 2147483640 !important;
            background-color: #000000 !important;
        }

        /* Hält das Video-Element bildschirmfüllend und wahrt das korrekte Format */
        video {
            position: fixed !important;
            top: 0 !important;
            left: 0 !important;
            width: 100vw !important;
            height: 100vh !important;
            object-fit: contain !important;
            z-index: 2147483647 !important;
            background-color: #000000 !important;
        }
    `;

    if (typeof GM_addStyle !== "undefined") {
        GM_addStyle(cssRules);
    } else {
        const style = document.createElement('style');
        style.type = 'text/css';
        style.innerHTML = cssRules;
        document.head.appendChild(style);
    }

    // 2. MutationObserver: reagiert in Echtzeit auf neue Player-Knoten
    const enforceVideoSize = () => {
        const videos = document.querySelectorAll('video');
        videos.forEach(v => {
            if (v.style.position !== 'fixed') {
                v.style.setProperty('position', 'fixed', 'important');
                v.style.setProperty('top', '0px', 'important');
                v.style.setProperty('left', '0px', 'important');
                v.style.setProperty('width', '100vw', 'important');
                v.style.setProperty('height', '100vh', 'important');
                v.style.setProperty('object-fit', 'contain', 'important');
                v.style.setProperty('z-index', '2147483647', 'important');
            }
        });
    };

    const observer = new MutationObserver(() => enforceVideoSize());
    observer.observe(document.documentElement, { childList: true, subtree: true });

    // Regelmäßige Überprüfung als Fallback
    setInterval(enforceVideoSize, 1000);
})();
4

Pluto TV öffnen und in Vollbild wechseln

Den gewünschten Stream auf pluto.tv öffnen, dann F11 drücken — der Browser selbst geht ohne Tabs und Taskleiste in den echten Vollbildmodus.

Das Skript hält das Bild danach bei jedem Folgen- oder Werbewechsel automatisch auf voller Größe.
5

In OBS aufnehmen

In OBS eine ganz normale Bildschirmaufnahme oder Anwendungsaufnahme starten. Das Signal kommt jetzt durchgehend scharf und randlos, ohne Sprünge bei Episodenwechseln.

Wenn’s mal nicht mehr passt

Das Skript zielt auf konkrete CSS-Klassenfragmente wie PlayerContainer oder Guide_. Ändert Pluto TV sein Frontend grundlegend, kann es sein, dass einzelne Menüs wieder auftauchen oder der Player nicht mehr greift.

In dem Fall im Browser mit den Entwicklertools (F12) den neuen Klassennamen des Player-Containers nachschauen und in den [class*="..."]-Selektoren im Skript ersetzen.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert