mpv: Autocrop Script V2

  • Was macht da Script?


    Das Script erkennt schwarze Balken rund um das Bild und entfernt diese automatisch.

    Zudem kann es bei Bedarf einen Zoom auf die gewünschte Leinwandgröße durchführen und das Bild nach oben/unten verschieben.

    Insbesondere ist das Script für Leute mit Cinemascope Leinwänden interessant, aber auch für 16:9 Leinwände wenn z.B. nur oben maskiert wird.

    Bereits bekannte Formate innerhalb eines Videos werden bei Wiedererkennung bevorzugt behandelt. Somit sollte das Script auch bei Formatwechselfilmen funktionieren.


    Es wird kein Lensmemory am Beamer benötigt und alle Videos werden automatisch in die Leinwand eingepasst, sofern die Bildschirmauflösung passend eingestellt ist (z.B. 3840x1600 bei einer 2.4:1 Leinwand)


    Hinweis:

    Die Erkennung basiert auf dem ffmpeg crop-detect filter. Der ist leider nicht immer schnell und es kann eine Verzögerung von paar Frames geben.

    Als Alternative, schaut bitte auch mal hier rein: Zeitbasiertes Pan & Scan

    Warum ein neues Script?


    Die Scripte, die es bis jetzt gab zur automatischen Erkennung, haben mir nicht so wirklich gefallen.

    Die Reaktionen und Erkennungen haben immer wieder nicht so funktioniert, wie ich es mir vorgestellt habe (zu langsam, falsche Formate, etc)


    Optionen:


    Name Standardwert Erklärung
    enable true generelles Ein-/Ausschalten des Scripts
    stop_crop_afterstart 0 Falls man nur am Anfang das Format erkennen will, kann man diese Option auf z.B. 20 sekunden setzen. Nach den 20 Sekunden schaltet sich die Erkennung ab.
    force_stop_afterstart 10 Stopped die Erkennung für bestimmte Videos in der force_movies Liste nach der angegebenen Zeit in Sekunden. Z.B. um bei Top Gun Maverick die IMAX Scenen zu beschneiden
    new_known_ratio_timer 0.5 Zeit nachdem ein neues erkanntes Format akzeptiert wird in Sekunden. Ich empfehel ca 0.5 - 2 Sekunden
    fast_known_ratio_timer 0.1 Zeit nachdem ein bereits bekanntes Format akzeptiert wird. Dieser Parameter wird nur genutzt, wenn die Abweichung zum vorherigen Format klein ist.
    Bei großen Änderungen ist das Zeit automatisch 0, falls das Format bereits bekannt ist
    stable_known_ratio_timer 10 Nach dieser Zeit wird ein stablies Format als bekannt angesehen und bei erneuter Erkennung bevorzugt behandelt
    allowed_ratios "2.76 2.7 2.55 2.33 2.2 2 1.9 1.85 16/9 1.6 4/3 1.34" Nur Formate, die ein Seitenverhältnis in dieser Liste sind werden akzeptiert (plus Toleranz von ratios_extra_px)
    ratios_extra_px 4 Toleranz in Pixeln zur Format Erkennung. Am besten nicht anfassen.
    cropdetect_limit_c_full 6 Limit für den Crop-detect filter (Alle pixel unter diesem Wert werden als schwarz intepretiert) für RBG full range videos (0-255)
    cropdetect_limit_c_limited 17 Limit für den Crop-detect filter (Alle pixel unter diesem Wert werden als schwarz intepretiert) für RBG limited range videos (16-235 oder 16-255)
    zoom_min_ratio 2.1 Alle Formate > zoom_min_ratio werden auf die Leinwandgröße gezoomed. Beispiele der Optionen je nach Nutzung:
    1.7 -> Alles > 16:9 wird auf Leinwandgröße gebracht (< 16:9 wird nie gezoomt. Dafür muss man das Script anpassen falls geünscht)
    2.1 -> Alles > 2.1 wird auf Leinwandgröße gebracht
    2.3 -> Alles was ca. Cinemascope enstspricht wird auf Leinwandgröße gebracht
    100 -> keine Anpassungen (z.B. falls kein Zoom gewünscht ist oder es eine 16:9 Leinwand ist)
    screen_ratio 2.4 Format deiner Leinwand
    stretch 0.95
    Ein Faktor der das Bild etwas Streckt, falls zoom_min_ratio < 2.3 und das erkannte Format > 1.85 und < 2.3 ist.
    Ein Wert kleiner 1 streckt das Bild horizontal. Ein Wert von 1 ergibt keine Streckung
    stretch16_9 0.90 Ein Faktor der das Bild etwas Streckt, falls zoom_min_ratio < 1.85 und das erkannte Format < 1.85 ist oder der Zoom Modus aktiv ist. Ein Wert kleiner 1 streckt das Bild horizontal. Ein Wert von 1 ergibt keine Streckung
    postition_mode 0 Die Position des Videos. 0 = Mitte, 1, Unterer Rand, 2 oberer Rand. Interessant für 16:9 Leinwände
    print_mode true Zeigt den neue Modus an wenn "C" oder "X" auf der Tastatur gedrückt wird.
    use_zoom true benutz den Zoom Modus im fullscreen anstatt crop (schnellerer Reaktion)


    Anwendungsbeispiele:


    1. Cinemascope Leinwand:

    • Leinwandformat einstellen (screen_ratio). z.B. 2.4 oder 2.35
    • gewünschte Zoom Option einstellen (zoom_min_ratio)

    2. Bildverschiebung für 16:9 Leinwände:

    • Leinwandformat Einstellen is nicht nötig
    • gewünschte Verschiebung einstleen (postition_mode). z.B "1" um das Bild an den unteren Rand zu verschieben
    • Zoom muss ausgeschaltet werden: (zoom_min_ratio = 100)


    Tastenkombinationen:


    Mit der Taste "C" (Shift+c) kann man den Modus manuell durchschalten:

    • Modus 0 (Standard): nutzt die Einstellungen, wie oben. Allerdings wird stop_crop_afterstart deaktiviert
    • Modus 1 (Deaktiviert): nutzt das aktuell erkannte Format und schaltet die weitere Erkennung ab
    • Modus 2 (Zoom): aktiviert zur Erkennung zusätzlcih sämltliche Zoom Optionen
    • Modus 3 (Deaktiviert): nutzt das aktuell erkannte Format (+ Zoom) und schaltet die weitere Erkennung ab
    • Modus 4 (Alles aus): schaltet alles aus und zeigt das Video mit allen schwarzen Balken

    Mit der Taste "X" (Shift+x) kann man ein Rest durchführen. Dabei werden alle aktiven Einstellugen, erkannte/bekannte Formate entfernt und stop_crop_afterstart deaktiviert.



    Das Script:

    weitere Hinweise:

    • Bei Formaten < 2.0 und aktivem Zoom, wird der Bildauschnitt etwas weiter oben gewählt, um zu vermeiden, dass Köpfe abgeschnitten werden.
      Diesen Faktor kann man anpassen mit Parameter 5 der zoom_check() Aufrufe im Script.
    • Das Script wird noch weiterentwickelt. Bitte Fehler etc einfach hier schreiben und ich werde versuchen eventuelle Probleme zu beheben
  • Neue Version 2.1:

    • neues Feature mit dem man bei bestimmten Filmen, das Cropping deaktivieren kann.
      Dabei kann man beliebig viele Filme in die force_movies Liste aufnehmen. Das Cropping wird dann nach force_stop_afterstart deaktiviert. (gutes Beispiel ist z.B Top Gun Maverick, um den kompletten Film in 2.4:1 zu sehen ohne IMAX 16:9)
    • Im Fullscreen Modus kann man jetzt anstatt Crop, den Zoom nutzen. Das hat den Vorteil, dass der Zoom schneller reagiert bei bereits bekannten Formaten. Dazu einfach use_zoom auf true setzen. Der Nachteil ist, dass sich das Fenster im Nicht-Fullscreen-Modus nicht anpasst, weshalb es weiterhin im Fenster Modus den crop Filter einsetzt. Das sollte aber für fast alle hier recht egal sein.
    • Ein paar Änderungen zum stabileren Verhalten wurden ebenfalls gemacht:
      • Full range und limited Range RBG Videos haben jetzt getrennte grenzen für die Erkennung
      • Formate > 2.41 werden jetzt nur beim Start des Filmes erlaubt (und später falls dann bekannt)
      • Ein Timer zru Stabilierung wurde hinzugefügt um schnelles hin- und herschalten zu verhindern.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!