freezer hat geschrieben: Do 06 Aug, 2026 13:29
Falls Du weitere Ideen hast, bitte gerne hier (und ich trage das dort nach) oder im BMD Forum im Thread äußern. Ziel ist es, BMD in die richtige Richtung zu schubsen damit wir das in der API bekommen, was wir für das Scripting am dringendsten benötigen.
Das ist ziemlich cool, Danke Dir für die Mühe und das Organisieren!
So aus dem Kopf (ich denke mir einfach nur dumme Namen aus, haha):
GetSourceTimeAtTimelineTime() - wir haben
GetSourceStartTime und
GetSourceEndTime, die geben aber nicht mal den Zeitpunkt bei den Schnittmarken an, sondern die maximal bzw minimal genutzten Zeitpunkte (wenn ein Clip Rückwärts abspielt sind sie verdreht, bei Bounces können die Punkte komplett woanders sein). Das ist zwar cool um eine Best Length zu ermitteln, aber ich würde gerne auslesen können: "welche Framenummer/TC hat Clip 4 bei Rec TC 00:01:03:22" (bei linearen Clips ohne Retimes geht es schon gut, bei linearen Retimes wirds schon ätzender wegen Rundungen, und bei non-linearen Retimes musst Schnittlisten parsen)
SetTimelineResolution() und
SetTimelineFPS() - neue Timelines haben immer die Specs der Project Settings. Man kann das hacken, indem man per API die Project Settings ändert, erstellt, und wieder zurück setzt - das ist aber fehleranfällig und unnötig lästig
CopyTimelineItem() - aktuell ist es nicht möglich Clips zu kopieren. Man kann zwar zB eine neue Timeline erstellen und das Media Pool Item mit den gleichen In/Out Punkten platzieren, aber die Crux ist ja im Vorschlag oben absehbar: echte In/Outs habe ich gar nicht, und Retimes kann ich auch nicht 1:1 wieder herstellen. Falls nötig kann ich auch gern ausführen, wozu ich das "brauche" (wie den nächsten Eintrag, könnte man es auch via Python hacken)
PlaceCutAt() (zB atTimelineTime) - man kann keinen Schnitt setzen, via API. Wir haben das richtig dirty gelöst, indem Python den Shortcut für einen Cut an Playhead Position durchführt. Aber dafür müssen auch alle nicht gewünschten Timelines abgesperrt werden, dazu es ist auch sau langsam und blockiert den Computer, weil ich nichts anderes machen kann (weg-tabben löst dann den Shortcut in Firefox aus, haha)
FIXES hätte ich gern für
GetSourceStartFrame() und
GetSourceEndFrame(); Dir ist sicher aufgefallen, dass ich oben GetSource%Time erwähnt habe, obwohl ich von Frames spreche. Denn GetSource%Frame liefert gern mal Kokolores, wie uns aufgefallen ist, und liegt dann idR +1 Frame daneben. Meine Theorie: GetSource%Frame entspricht GetSource%Time mit "falscher" Rundung, wenn ich mich recht entsinne mit einem math.round(time) / FPS. Resolve scheint aber intern mit einem wilden math.floor(time + 0.00099 ) / FPS zu arbeiten; zumindest konnten wir das Reverse-Engineering so für uns feststellen.
So oder so: GetSource%Frame gibt andere Frames aus, als der Resolve Viewer anzeigt, und das sollte nicht passieren.
Beste Grüße
//edit
Fast vergessen!
Read- und
Set{everyItemIn "Retime and Scaling"}() - ich hasse es sehr, dass man nicht alle Settings, die im Inspector in "Retime and Scaling" geführt werden setzen kann. Das nervt auch beim Shortcut Alt+V, dass ich zB "Scaling" nicht einfügen kann. Wenn ich es für einen Clip ändere, und Settings kopieren/einfügen will, sind RePos wertlos wenn das Scaling nicht übernommen wird.
ich schreibe hier nur in pausen auf der arbeit.