Communitygithub.com

MBehtemam/montagent-skills

Bearbeitung von echtem Video in Montagent: Sprecher- und Interview-Schnitte, Greenscreen-Keying, Untertitel mit Wort-für-Wort-Hervorhebung, Bauchbinden und Namenseinblendungen, Bild-im-Bild und Musik-Ducking unter einer Sprachspur. Verwenden Sie dies, wenn ein Montagent-Video aus aufgezeichnetem Filmmaterial erstellt wird.

Was ist montagent-skills?

Diese Skill-Sammlung für Montagent konzentriert sich auf die Bearbeitung von aufgezeichnetem Videomaterial, wie z. B. Sprecherclips, Interviewausschnitte oder Bildschirmaufnahmen. Sie bietet detaillierte, schrittweise Rezepte für häufige Videobearbeitungsaufgaben, einschließlich der Platzierung von Filmmaterial mit korrekter Kopfhöhe und Augenposition, Greenscreen-Keying mit Chroma-Key-Optimierung, automatische Generierung von Untertiteln mit Wort-für-Wort-Hervorhebung auf Basis von Zeitleisten, Erstellung von animierten Namensbauchbinden, die sich über das Filmmaterial legen, sowie runde Bild-im-Bild-Überlagerungen und musikalisches Ducking, das automatisch auf Sprachpausen reagiert. Die Rezepte sind als JSON-Blöcke codiert, die direkt in Montagent-Projekte eingefügt werden können, und enthalten spezifische Parameter, Toleranzen und Timing-Einstellungen. Jedes Rezept schließt mit einem visuellen Prüfschritt, um die korrekte Ausgabe sicherzustellen, und nutzt Hilfsskripte wie `scripts/captions.py` und `scripts/duck.py`, um zeitaufwändige manuelle Anpassungen zu automatisieren. Die Skill-Dokumentation betont die kontinuierliche Qualitätssicherung durch regelmäßige `frame`-Aufrufe und die Überprüfung der Ergebnisse auf Konsistenz.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/MBehtemam/montagent-skills/tree/HEAD/skills/montagent-footage

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Aufgezeichnetes Video bearbeiten

Rezepte für Beiträge, die auf aufgezeichnetem Filmmaterial basieren. Sie werden in die Schleife von montagent im Erstellungsschritt eingefügt; laden Sie zuerst montagent, falls Sie dies noch nicht getan haben. Für einen Sprecher, einen Präsentator-Clip oder einen Interview-Schnitt öffnen Sie die Sprecherstruktur, bevor Sie planen.

Vom Filmmaterial ausgehen

Bevor Sie ein Element schreiben, proben Sie jeden Clip: seine Größe, Bildrate, Länge und ob er Ton hat. Dann planen Sie den Beitrag auf der Grundlage der Sprachspur. Die Wortzeitsteuerungen sind der Takt, an dem jeder Untertitel, jedes Stichwort und jedes Ducking hängt, daher werden die Zeitsteuerungen zuerst überprüft (siehe Untertitel).

Um einen Moment aus einem langen Clip auszuwählen (z. B. den Abschnitt einer Bildschirmaufnahme, der in einem Insert gezeigt werden soll), legen Sie den Clip allein in ein Scratch-Projekt und rufen Sie frame --from 0 --to <seine Länge> --infill-ceiling <ms> auf, wobei die Obergrenze bei einem Zwanzigstel der Länge liegt. Ein Aufruf ergibt ein beschriftetes Kachelbild alle paar Sekunden; frame --at für jede Kachel, die Sie näher betrachten möchten.

Rezepte

Jedes Rezept gibt Ausgangsbereiche vor, keine endgültigen Antworten. Jedes endet mit einem Prüfschritt: Laden Sie montagent-craft, dann schauen Sie dort hin, wo der Schritt angibt, bevor Sie fortfahren.

Filmmaterial platzieren

{
  "frame": {"width": 1080, "height": 1920}, "fps": 30, "background": "#FF5A36", "duration": 6000, "output": "out/presenter.mp4",
  "tracks": [
    {"name": "presenter", "layer": 10, "elements": [
      {"id": "presenter", "type": "video", "start": 0, "end": 6000, "source": "media/clip.mp4", "source_start": 0, "source_end": 6000, "x": 540, "y": 2160, "origin": "bottom-center", "width": 3413, "height": 1920, "fit": "cover", "effects": [{"name": "chroma", "color": "#00FF00", "tolerance": 0.2, "softness": 0.08, "spill": 0.9}]}
    ]}
  ]
}
  • Breites Filmmaterial in einem hohen Rahmen: Machen Sie das Element so hoch wie den Rahmen und so breit, wie es das Seitenverhältnis der Quelle vorgibt (1920 Höhe ergibt 3413 Breite bei 16:9), und schieben Sie es dann seitlich, um den Sprecher zentriert zu halten.
  • Augen: 25–35 % des Weges von oben im Rahmen. Senken Sie den unteren Mittelpunkt des Elements unter die Unterkante des Rahmens, um dies zu erreichen; das Abschneiden der Beine ist normal.
  • Kopfraum: 4–8 % der Rahmenhöhe über dem Haar.
  • Ein kürzerer Take als der Beitrag: "overrun": "hold" friert sein letztes Bild ein. Halten Sie das eingefrorene Bild unter einer halben Sekunde, oder beenden Sie den Beitrag früher.
  • Ein Standbild innerhalb eines Clips, eine Zeitlupe oder eine Rückwärtswiedergabe: Schreiben Sie source_time anstelle von source_start und source_end: ein Literal friert einen Moment ein, und Schlüssel von Quell-Millisekunden gegen die Zeitachse t rampen (ein flaches Paar friert ein, ein fallendes Paar kehrt um). Setzen Sie "frame_blend": "mix" bei einem Zeitlupenclip (speed < 1.0) oder einem Clip mit Geschwindigkeitsrampe (source_time), um aufeinanderfolgende Quellbilder überblenden zu lassen, anstatt zwischen den nächsten Bildern zu springen ("none"). Für einen Posterize-Time-Effekt (Stop-Motion) auf Filmmaterial verwenden Sie gestufte source_time-Keyframes, die jeden Ziel-Quell-Zeitstempel über mehrere Zeitachsen-Bilder hinweg halten. Ein Clip mit source_time ist bei volume 0 stumm, also legen Sie seinen Ton auf ein eigenes audio-Element.
  • Der eigene Ton des Takes: Die Sprachspur bleibt bei volume 1.0. Alles andere wird darunter gemischt.
  • Prüfen: frame am Anfang, in der Mitte und beim letzten gezeichneten Bild, und überprüfen Sie, ob die Augen im Band liegen und nichts Wichtiges an den Seiten des Rahmens abgeschnitten wird.

Greenscreen-Keying

chroma auf dem Filmmaterial-Element keyt den Hintergrund aus. Starten Sie hier:

  • color: Die reine Farbe des Hintergrunds, #00FF00 für einen Greenscreen. Ein beleuchteter Hintergrund, der etwas in Richtung Blau oder Gelb abgedriftet ist, wird bei diesen Toleranzen ebenfalls ausgekeyt, sodass Sie ihn nicht abtasten müssen.
  • tolerance: 0.2 (Bereich 0.18–0.25). Über etwa 0.3 frisst der Key schwarze Haare, weiße Kragen und dunkle Kleidung.
  • softness: 0.08 (Bereich 0.05–0.1).
  • spill: 0.9 (Bereich 0.9–1.0).

Überprüfen Sie es, bevor irgendetwas anderes darüber gelegt wird:

  1. Drei verlustfreie Ausschnitte. frame --crop <x,y,w,h> --png an den Haaren, an einer Schulter- oder Ärmelkante und an den Händen, über dem Hintergrund, auf dem Sie ausliefern werden. Ein Ausschnitt wird im wahren Maßstab zurückgegeben, daher reicht ein 200–400 px großes Kästchen.
  2. Schon fertig? Haare, Kragen und Hände sind deckend, mit höchstens einer 1–2 px dunklen, olivfarbenen oder braunen Linie entlang der Kanten: Der Key ist fertig, fahren Sie fort. Diese Linie ist der Kantenboden: Jede Einstellung von 0,12 bis 0,3 hinterlässt sie, und spill hat sie bereits von Grün auf Braun umgestellt, sodass ein grüner Pixelzähler darauf Null anzeigt.
  3. Andernfalls eine Korrektur pro Fehler. Der Hintergrund scheint durch Haare, einen Kragen oder dunkle Kleidung: Senken Sie tolerance um 0.05. Ein blasser oder grüner Lichthof, der breiter als der Kantenboden ist: Erhöhen Sie tolerance um 0,03 oder softness um 0,03. Erstellen Sie erneut einen Ausschnitt und gehen Sie zurück zu Schritt 2. Maximal drei Einstellungen, alle an dem einen gekeyten Element: Gekeyte Kopien, die nach Region aufgeteilt sind, vervielfachen die Renderzeit und hinterlassen dennoch eine Naht.
  4. Drift. measuren Sie das gekeyte Element. Sein deckender Anteil sollte über den gesamten Take hinweg innerhalb von ein bis zwei Punkten bleiben. Ein Sprung bedeutet, dass sich die Beleuchtung dort geändert hat: Keyen Sie tolerance mit einem Keyframe auf jeder Seite des Sprungs, oder schneiden Sie das Element an diesem Frame und keyen Sie jeden Teil separat.
  • Prüfen: frame des gesamten Bildes zu zwei Zeitpunkten, an denen sich der Sprecher am meisten bewegt, und überprüfen Sie, ob die Kontur hält.

Untertitel mit hervorgehobenem gesprochenem Wort

Untertitel stammen aus den bereitgestellten Wortzeitsteuerungen, über das gebündelte Skript, nicht von Hand. python3 scripts/captions.py <Projekt> <Wörter> <Spezifikation> (führen Sie es mit --help für die Spezifikation aus) überprüft die Zeitsteuerungen, bricht die Wörter mit measure in Seiten zu ein oder zwei Zeilen auf, gibt jedem Wort ein highlight-Fenster, während es gesprochen wird, und gibt das Projekt mit den hinzugefügten Untertiteln aus. Es meldet jede Korrektur auf stderr. Lesen Sie diesen Bericht: Er ist die Zeitsteuerungsprüfung.

  • Was es prüft: Ein Wort, das eine Phrase beginnt, nachdem die Sprache bereits wieder eingesetzt hat (ein geliefertes „Now“ mit 110 ms Verspätung und 20 ms Länge ist der klassische Fall), ein Wort, das in einer Stille sitzt, sich überschneidende Wörter und Wörter, die zu kurz zum Sehen sind. Kurze Wörter werden auf min_word (150 ms) verlängert: in die Pause danach, dann vom nächsten Wort. Ein gemeldetes Wort in einer Stille bedeutet, dass die Datei dort nicht ausgerichtet ist: Korrigieren Sie die Datei und führen Sie sie dann erneut aus.
  • Größe: 56–72 px auf einem 1080 breiten Rahmen, fett, eine helle Farbe für die Zeile und der Akzent der Marke für das gesprochene Wort.
  • Zeilen: maximal zwei, width etwa 80 % der Rahmenbreite. Eine Seite bricht an einem Satzende oder einer Pause von 400 ms oder mehr um.
  • Hintergrund: Eine pill in der dunkelsten Markenfarbe bei 80–85 % Alpha (CC–D9) ist über jedem Filmmaterial lesbar. pad 28–36 px quer und 14–20 px nach unten, radius 20–28.
  • Platzierung: Unterhalb des Kinns und frei von den unteren 15–20 % eines hohen Rahmens, wo Player ihre Bedienelemente zeichnen. Bei 1080×1920 liegt die Mitte bei etwa y 1350–1450. Bei einem breiten Rahmen zentrieren Sie es 10–14 % über dem unteren Rand.
  • Seiten bleiben sichtbar, bis die nächste Seite beginnt, oder 1 s nach dem letzten Wort, wenn eine längere Pause folgt.

Es schreibt echte Untertitel, also handeln Sie basierend auf den Untertitelfunden, die validate dazu ausgibt.

  • Prüfen: frame --from --to über eine Seite: Jedes beleuchtete Wort ist eine eigene Kachel. Überprüfen Sie, dass jede Kachel genau ein Wort in der Sprechreihenfolge beleuchtet und dass das Kästchen frei vom Gesicht bleibt. Dann frame --at des ersten Frames nach der längsten Pause und überprüfen Sie, dass die neue Seite angezeigt wird und nichts vorzeitig beleuchtet ist.

Namensbauchbinde über Filmmaterial

Eine untere Drittel-Einblendung wischt ein- und aus. Filmmaterial ist keine gleichmäßige Farbe, daher kann der Verdeckungs-Wipe aus montagent-motion die Leiste selbst nicht aufdecken. Stattdessen wächst die Leiste von ihrer Kante aus, und ihr Text wird durch einen Verdeckungs-Wipe in der eigenen Farbe der Leiste, die einfarbig ist, aufgedeckt.

{
  "frame": {"width": 1080, "height": 1920}, "fps": 30, "background": "#6E7B8B", "duration": 7000, "output": "out/namebar.mp4",
  "fonts": {"bold": [{"file": "fonts/Inter-Bold.ttf"}]},
  "fontVendor": {"fonts/Inter-Bold.ttf": {"licence": "OFL-1.1", "source": "https://github.com/rsms/inter", "sha256": "288316099b1e0a47a4716d159098005eef7c0066921f34e3200393dbdb01947f"}},
  "tracks": [
    {"name": "bar", "layer": 20, "elements": [
      {"id": "bar", "type": "rect", "start": 1000, "end": 6534, "x": 64, "y": 1160, "origin": "center-left", "width": 760, "height": 160, "fill": "#101418", "radius": 8, "scale": [{"t": 1000, "v": [0.0, 1.0]}, {"t": 1300, "v": [1.0, 1.0], "ease": [0.65, 0, 0.35, 1]}, {"t": 6266, "v": [1.0, 1.0], "ease": "linear"}, {"t": 6533, "v": [0.0, 1.0], "ease": [0.65, 0, 0.35, 1]}]}
    ]},
    {"name": "bar-edge", "layer": 21, "elements": [
      {"id": "bar-edge", "type": "rect", "start": 1000, "end": 6534, "x": 64, "y": 1160, "origin": "center-left", "width": 12, "height": 160, "fill": "#FF5A36"}
    ]},
    {"name": "bar-name", "layer": 22, "elements": [
      {"id": "bar-name", "type": "text", "start": 1300, "end": 6266, "x": 108, "y": 1128, "origin": "center-left", "width": 400, "height": 70, "font": "bold", "size": 58, "color": "#F5F0E6", "runs": [{"text": "Montagent"}], "caption": false}
    ]},
    {"name": "bar-line", "layer": 22, "elements": [
      {"id": "bar-line", "type": "text", "start": 1300, "end": 6266, "x": 108, "y": 1196, "origin": "center-left", "width": 560, "height": 44, "font": "bold", "size": 34, "color": "#F5F0E6", "runs": [{"text": "Video your agent can read"}], "caption": false}
    ]},
    {"name": "bar-cover", "layer": 23, "elements": [
      {"id": "bar-cover-on", "type": "rect", "start": 1300, "end": 1700, "x": 800, "y": 1160, "origin": "center-right", "width": 716, "height": 140, "fill": "#101418", "scale": [{"t": 1300, "v": [1.0, 1.0]}, {"t": 1666, "v": [0.0, 1.0], "ease": [0.65, 0, 0.35, 1]}]},
      {"id": "bar-cover-off", "type": "rect", "start": 6000, "end": 6266, "x": 84, "y": 1160, "origin": "center-left", "width": 716, "height": 140, "fill": "#101418", "scale": [{"t": 6000, "v": [0.0, 1.0]}, {"t": 6233, "v": [1.0, 1.0], "ease": [0.65, 0, 0.35, 1]}]}
    ]}
  ]
}
  • Ein: Die Leiste wächst von ihrer linken Kante aus über 250–350 ms, [0.65, 0, 0.35, 1]. Der Text und seine Abdeckung beginnen in dem Frame, in dem die Leiste vollständig gewachsen ist (niemals früher, sonst zeigt sich die Abdeckung über dem Filmmaterial). Die Abdeckung schrumpft über ihre entfernte Kante über 300–400 ms und legt den Text in Lesereihenfolge frei.
  • Aus, beginnend mit seinem Stichwort: Die Abdeckung wächst in 200–300 ms über den Text zurück, dann schrumpft die Leiste in 250–300 ms auf ihre Kante zurück. Die gesamte Leiste ist 450–600 ms nach dem Stichwort verschwunden.
  • Größe: Leiste 130–180 px hoch auf einem 1080 breiten Rahmen, Name 52–64 px, zweite Zeile 30–38 px. Ein Akzentstreifen von 8–16 px Breite an der Vorderkante.
  • Abdeckung: Genau die fill-Farbe der Leiste, 20 px innerhalb der Leistenenden und 10 px innerhalb ihrer Ober- und Unterkante, über dem Text.
  • Platzierung: 48–80 px vom Rahmenrand entfernt, frei von der Untertitelbox und dem Gesicht des Sprechers, normalerweise bei 55–65 % der Höhe eines hohen Rahmens.
  • Prüfen: frame --from --to --keyframes über 1 s ab jedem Stichwort und überprüfen Sie, dass auf keiner Kachel eine Abdeckung über die Leiste hinausragt. frame --at der Leiste in Ruheposition und überprüfen Sie, ob ihre linke Kante mit dem Rand der Untertitelbox übereinstimmt.

Rundes Bild-im-Bild

Zeigen Sie einen zweiten Clip in einem Kreis: ein Video-Element mit einer Kreis-mask, einem Ring dahinter und einem Pop auf der Überschwingungs-Bezierkurve.

{
  "frame": {"width": 1080, "height": 1920}, "fps": 30, "background": "#6E7B8B", "duration": 6000, "output": "out/pip.mp4",
  "tracks": [
    {"name": "pip-ring", "layer": 30, "elements": [
      {"id": "pip-ring", "type": "ellipse", "start": 1000, "end": 5500, "x": 800, "y": 900, "origin": "center", "width": 384, "height": 384, "fill": "#F5F0E6", "scale": [{"t": 1000, "v": [0.0, 0.0]}, {"t": 1400, "v": [1.0, 1.0], "ease": [0.34, 1.56, 0.64, 1]}, {"t": 5233, "v": [1.0, 1.0], "ease": "linear"}, {"t": 5466, "v": [0.0, 0.0], "ease": "ease-in"}], "effects": [{"name": "shadow", "dx": 0, "dy": 16, "radius": 40, "color": "#101418", "opacity": 0.35}]}
    ]},
    {"name": "pip", "layer": 31, "elements": [
      {"id": "pip", "type": "video", "start": 1000, "end": 5500, "source": "media/clip.mp4", "source_start": 10000, "source_end": 14500, "volume": 0, "x": 800, "y": 900, "origin": "center", "width": 640, "height": 360, "fit": "contain", "scale": [{"t": 1000, "v": [0.0, 0.0]}, {"t": 1400, "v": [1.0, 1.0], "ease": [0.34, 1.56, 0.64, 1]}, {"t": 5233, "v": [1.0, 1.0], "ease": "linear"}, {"t": 5466, "v": [0.0, 0.0], "ease": "ease-in"}], "effects": [{"name": "mask", "shape": "circle", "x": 140, "y": 0, "width": 360, "height": 360}]}
    ]}
  ]
}
  • Das Rechteck des Kreises: Ein Quadrat, das so hoch ist wie das Element. Seine x wählt aus, welcher Teil des Bildes angezeigt wird. Die Mitte ist (width - height) / 2, und das ist die zu verwendende: Der Pop skaliert um den origin des Elements, sodass ein von der Mitte weg bewegter Kreis beim Wachsen seitlich driftet. Um einen anderen Teil des Bildes anzuzeigen, wählen Sie einen source_start, bei dem dieser Teil in der Mitte sitzt, oder machen Sie das Element größer und setzen Sie seine x so, dass der Teil im Kreis landet, und keyen Sie dann x auf der Pop-Kurve, damit die Kreismitte stillsteht.
  • Größe: 30–40 % der Rahmenbreite. Der Ring ist 12–24 px breiter als der Kreis, in der hellsten Farbe des Hintergrunds, mit einem weichen shadow.
  • Pop: 350–450 ms auf [0.34, 1.56, 0.64, 1] für beide, von Skalierung 0, auf denselben Keys. Ausgang in 200–300 ms, ease-in, zurück auf 0.
  • Timing: Ein, wenn der Sprecher zum ersten Mal das Ding nennt, das es zeigt, aus einen Schlag vor dem Ende, damit der Abschluss sauber ist.
  • Platzierung: Neben dem Sprecher auf Brusthöhe, frei von Gesicht und Untertitelbox und 40 px oder mehr vom Rahmenrand entfernt.
  • Ton: volume 0, es sei denn, der eigene Ton des Clips ist der Punkt.
  • Prüfen: frame am Höhepunkt des Pops (Start plus 40 % seiner Länge) und überprüfen Sie, ob der Kreis das Gesicht und den Rahmenrand freilässt. frame in Ruheposition und überprüfen Sie, ob der relevante Teil innerhalb des Kreises liegt.

Musik unter einer Sprachspur

Die Musik duckt sich, während die Sprachspur spricht, und kommt in den Pausen wieder hoch. scripts/duck.py schreibt dies als gewöhnliche volume-Keyframes auf das Musikelement, basierend auf den Wortzeitsteuerungen der Sprachspur (--words, einer JSON-Datei), der Musik (--music, einem Pfad) und dem Ausgabeprojekt (-o).

python3 scripts/duck.py --words mytimings.json --music media/track.mp3 -o project_with_duck.json   # duckt eine einzelne Datei
python3 scripts/duck.py --words mytimings.json -o project_with_duck.json                           # duckt das `music`-track-Element im Projekt

Vor dem Ducken: Die Musik in einer DAW vorbereiten. Schneiden Sie die Länge auf den Beitrag zu, passen Sie die Lautstärke des lautesten Abschnitts auf etwa -18 LUFS an (oder leiser für Umgebungsmusik), und normalisieren Sie die Lautstärke auf einen Spitzenwert von -3 dBFS. Exportieren Sie als 44.1 kHz 16-Bit Stereo-WAV.

  • Rückgang: 22–28 dB unter dem Ruhepegel. threshold (Standard -30 dBFS) startet den Rückgang 70–110 ms vor dem Wort. attack 20–40 ms senkt die Lautstärke auf das Verhältnis von floor, hold 40–80 ms hält sie dort, und release 300–500 ms hebt sie wieder an. Engere releases klingen pumpend; weitere klingen natürlich.
  • Ruhepegel: 75–85 % des DAW-Niveaus, damit die Musik hörbar, aber nicht aufdringlich ist.
  • Ducking im Takt: Ducken Sie auf der Eins des Schlags vor dem ersten Wort: --beat setzt den Rückgang des Duckers auf das nächste Vielfache von beat ms vor dem Wort. beat ist das Schlagintervall in ms.
  • Gruppiertes Ducking für denselben Sprecher: Der name des Duckers gruppiert Ducking-Keyframes, sodass ein Ducken in einer Pause zwischen zwei Phrasen desselben Sprechers ein einzelnes Anheben auslöst. Der name des Duckers ist der Name der Sprachspur.
  • Das Timing lesen: Der Ducking-Bericht zeigt jedes Ducking-Ereignis, sodass Sie die Bewegung der Lautstärke in frame-Kacheln überprüfen können.
  • Prüfen: frame --at auf dem ersten Frame der Sprachspur, auf dem Höhepunkt des Duckings und auf dem ersten Frame ohne Sprachspur danach. Die Lautstärke sollte dort sein, wo der Bericht sie vorhersagt.

Vollständiges Projektbeispiel

{
  "frame": {"width": 1080, "height": 1920}, "fps": 30, "background": "#6E7B8B", "duration": 10000, "output": "out/final.mp4",
  "fonts": {"bold": [{"file": "fonts/Inter-Bold.ttf"}]},
  "fontVendor": {"fonts/Inter-Bold.ttf": {"licence": "OFL-1.1", "source": "https://github.com/rsms/inter", "sha256": "288316099b1e0a47a4716d159098005eef7c0066921f34e3200393dbdb01947f"}},
  "tracks": [
    {"name": "background", "layer": 1, "elements": [
      {"id": "bg-video", "type": "video", "start": 0, "end": 10000, "source": "media/background.mp4", "source_start": 0, "source_end": 10000, "x": 540, "y": 960, "origin": "center", "width": 1080, "height": 1920, "fit": "cover", "volume": 1.0}
    ]},
    {"name": "presenter", "layer": 10, "elements": [
      {"id": "presenter", "type": "video", "start": 0, "end": 10000, "source": "media/presenter.mp4", "source_start": 0, "source_end": 10000, "x": 540, "y": 2160, "origin": "bottom-center", "width": 3413, "height": 1920, "fit": "cover", "volume": 1.0, "effects": [{"name": "chroma", "color": "#00FF00", "tolerance": 0.2, "softness": 0.08, "spill": 0.9}]}
    ]},
    {"name": "music", "layer": 2, "elements": [
      {"id": "music", "type": "audio", "start": 0, "end": 10000, "source": "media/music.mp3", "volume": 0.8, "duck": [{"name": "presenter", "threshold": -30, "floor": 0.05, "attack": 30, "hold": 60, "release": 400}]}
    ]},
    {"name": "captions", "layer": 40, "elements": []}
  ]
}

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Verwandte Skills