statisches Web-Tool
Bridge.py Anleitung
14
API-Objekte
120+
Methoden
5
Export-Formate
3
Script-Pfade
Timeline Visualizer (Demo)
V3
GFX_Logo
GFX_Lower3
V2
Interview_B
Interview_C_wide
Interview_D
V1
A-Camera_Master.mov
A1
Dialogue_Mix.wav
A2
Music_Bed.wav
Quick Start — VerbindungIMMER ZUERST

Einstieg für jedes Resolve-Script. Diesen Block immer an den Anfang setzen.

python
import DaVinciResolveScript as bmd

resolve = bmd.scriptapp("Resolve")
pm      = resolve.GetProjectManager()
project = pm.GetCurrentProject()
tl      = project.GetCurrentTimeline()
pool    = project.GetMediaPool()

print(f"Projekt: {project.GetName()}")
print(f"Timeline: {tl.GetName()}")
Script-PfadeSETUP

Scripts müssen in diesen Ordnern liegen damit Resolve sie findet:

macOS
/Library/Application Support/
Blackmagic Design/DaVinci Resolve/
Fusion/Scripts/Comp/
Windows
C:\ProgramData\Blackmagic Design\
DaVinci Resolve\Support\
Developer\Scripting\Examples\
API Objekt-Hierarchie
Resolve └── ProjectManager └── Project ├── MediaPoolBinMediaPoolItem ├── TimelineTimelineItem │ ├── FusionComp │ └── Marker ├── Gallery → GalleryStillAlbum → GalleryStill └── RenderSettings ResolveMediaStorage (unabhängig)
Verbindung
Timeline
Marker
Clips
Render & Export
OUTPUT — main.py
# ResolveScripter — Script Builder # Wähle links Blocks aus um Code zu generieren
Neuen Marker definieren
Frame
Name
Notiz
Dauer
Farbe
Generierter Code
python
# Marker-Code erscheint hier
Marker-Liste
Definierte Marker
Noch keine Marker definiert.
Batch-Code (alle Marker)
python
# Batch-Code für alle Marker erscheint hier
Export-Format
MOV
H.265 Master — ProRes-ähnlich
MP4
H.264 — Web / Delivery
MXF
DNxHD — Broadcast
ProRes
422 HQ — Post Production
Einstellungen
Zielordner
Dateiname
Bereich
Generierter Code
python
# Render-Code erscheint nach Konfiguration
Render-Queue
Jobs
Noch keine Jobs in der Queue.
Gesamt-Fortschritt 0%
Methode Rückgabe Beschreibung
Alle Clips eines Tracks iterieren
items = tl.GetItemListInTrack("video", 1)
for item in items:
    name  = item.GetName()
    start = item.GetStart()
    end   = item.GetEnd()
    dur   = item.GetDuration()
    print(f"{name}: {start}{end} ({dur} frames)")
Marker nach Farbe filtern
markers = tl.GetMarkers()
red_markers = {
    frame: data
    for frame, data in markers.items()
    if data['color'] == 'Red'
}
for frame, d in red_markers.items():
    print(f"Frame {frame}: {d['name']}")
Alle Timelines auflisten
count = project.GetTimelineCount()
print(f"{count} Timelines im Projekt")

for i in range(1, count + 1):
    t = project.GetTimelineByIndex(i)
    fps = t.GetSetting("timelineFrameRate")
    print(f"{i}. {t.GetName()} @ {fps}fps")
MediaPool: Bin erstellen + importieren
pool    = project.GetMediaPool()
root    = pool.GetRootFolder()
new_bin = pool.AddSubFolder(root, "Neuer Bin")
pool.SetCurrentFolder(new_bin)

clips = pool.ImportMedia([
    "/pfad/zu/clip1.mov",
    "/pfad/zu/clip2.mov"
])
Render mit Fortschritts-Loop
import time

project.SetRenderSettings({
    "SelectAllFrames": True,
    "TargetDir":       "/pfad/output",
    "CustomName":      "Export_v1"
})
jid = project.AddRenderJob()
project.StartRendering()

while project.IsRenderingInProgress():
    s = project.GetRenderJobStatus(jid)
    p = s.get('CompletionPercentage', 0)
    print(f"\r{p:.0f}%", end="")
    time.sleep(1)
Timeline exportieren (EDL + XML)
base = "/Users/mark/Desktop"

tl.Export(
    f"{base}/timeline.edl",
    resolve.EXPORT_EDL,
    resolve.EXPORT_NONE
)
tl.Export(
    f"{base}/timeline.xml",
    resolve.EXPORT_FCPXML,
    resolve.EXPORT_NONE
)
print("Export fertig.")
Alle Clips rot flaggen
v_count = tl.GetTrackCount("video")
flagged = 0

for i in range(1, v_count + 1):
    items = tl.GetItemListInTrack("video", i)
    for item in items:
        item.AddFlag("Red")
        flagged += 1

print(f"{flagged} Clips geflaggt")
Timeline-Setting-Dump
keys = [
    "timelineFrameRate",
    "timelineResolutionWidth",
    "timelineResolutionHeight",
    "timelineDropFrameTimecode",
    "timelineInterlaceProcessing",
]
for k in keys:
    val = tl.GetSetting(k)
    print(f"{k:35} = {val}")