Davinci Resolve Audiospur auslesen und per Python Script Text+ Elemente hinzufügen
Verfasst: Sonntag 24. November 2024, 15:44
Hallo liebe Python Freunde,
ich nutze Davinci Resolve und habe eine Audiospur bestehend aus 174 Audio-Teilen. Zu jedem Audio-Teil möchte ich ein "Text+" Element in die Videospur einfügen in der Länge der jeweiligen Audiospur, per Script. Da kommt jetzt Python ins Spiel. Wie mache ich das am Besten? Habe Python 3.13 installiert, aber keine Programmierkenntnisse. Der Sinn ist es, den gesprochenen Text als Schrift im Video angezeigt zu bekommen. Leider werde ich in Zukunft diese Arbeit wiederholt erledigen müssen, deswegen mache ich mir lieber jetzt die Mühe, dass zu automatisieren. Tausende von Text+ Feldern händisch einzufügen und der länge nach der Audiospur anzupassen ist eine sehr monotone Arbeit.
Chat-GPT hat mir ein Script vorgeschlagen, dass die Audiospur ausgelesen wird und dann anhand dessen die "Text+" Elemente eingefügt werden.
Programmcode Vorschlag von Chat-GPT:
import DaVinciResolveScript as dvr
def main():
# Verbindung zur DaVinci Resolve API herstellen
resolve = dvr.scriptapp("Resolve")
project_manager = resolve.GetProjectManager()
project = project_manager.GetCurrentProject()
timeline = project.GetCurrentTimeline()
if not timeline:
print("Keine Timeline ausgewählt.")
return
# Audiospur auswählen
audio_track_number = 1 # Wähle die gewünschte Audiospur (z. B. Spur 1)
audio_clips = timeline.GetItemListInTrack("audio", audio_track_number)
if not audio_clips:
print(f"Keine Clips in Audiospur {audio_track_number} gefunden.")
return
# Videospur für Text+ Clips
video_track_number = 2 # Wähle die gewünschte Videospur (z. B. Spur 2)
print(f"Erstelle Text+ Clips für {len(audio_clips)} Audio-Clips auf Audiospur {audio_track_number}.")
for audio_clip in audio_clips:
# Start- und Endzeit des Audio-Clips ermitteln
start_frame = audio_clip.GetStart()
end_frame = audio_clip.GetEnd()
# Text+ Clip erstellen
text_clip = timeline.CreateFusionTitleClip("Text+")
text_clip.SetTrack(video_track_number)
text_clip.SetStart(start_frame)
text_clip.SetEnd(end_frame)
# Optional: Text anpassen
text_clip.SetProperty("Text", "Dein Text hier") # Beispieltext
print("Text+ Clips erfolgreich erstellt.")
if __name__ == "__main__":
main()
Hat das jemand mal gemacht? Weiß jemand weiter? Vielen Dank!
ich nutze Davinci Resolve und habe eine Audiospur bestehend aus 174 Audio-Teilen. Zu jedem Audio-Teil möchte ich ein "Text+" Element in die Videospur einfügen in der Länge der jeweiligen Audiospur, per Script. Da kommt jetzt Python ins Spiel. Wie mache ich das am Besten? Habe Python 3.13 installiert, aber keine Programmierkenntnisse. Der Sinn ist es, den gesprochenen Text als Schrift im Video angezeigt zu bekommen. Leider werde ich in Zukunft diese Arbeit wiederholt erledigen müssen, deswegen mache ich mir lieber jetzt die Mühe, dass zu automatisieren. Tausende von Text+ Feldern händisch einzufügen und der länge nach der Audiospur anzupassen ist eine sehr monotone Arbeit.
Chat-GPT hat mir ein Script vorgeschlagen, dass die Audiospur ausgelesen wird und dann anhand dessen die "Text+" Elemente eingefügt werden.
Programmcode Vorschlag von Chat-GPT:
import DaVinciResolveScript as dvr
def main():
# Verbindung zur DaVinci Resolve API herstellen
resolve = dvr.scriptapp("Resolve")
project_manager = resolve.GetProjectManager()
project = project_manager.GetCurrentProject()
timeline = project.GetCurrentTimeline()
if not timeline:
print("Keine Timeline ausgewählt.")
return
# Audiospur auswählen
audio_track_number = 1 # Wähle die gewünschte Audiospur (z. B. Spur 1)
audio_clips = timeline.GetItemListInTrack("audio", audio_track_number)
if not audio_clips:
print(f"Keine Clips in Audiospur {audio_track_number} gefunden.")
return
# Videospur für Text+ Clips
video_track_number = 2 # Wähle die gewünschte Videospur (z. B. Spur 2)
print(f"Erstelle Text+ Clips für {len(audio_clips)} Audio-Clips auf Audiospur {audio_track_number}.")
for audio_clip in audio_clips:
# Start- und Endzeit des Audio-Clips ermitteln
start_frame = audio_clip.GetStart()
end_frame = audio_clip.GetEnd()
# Text+ Clip erstellen
text_clip = timeline.CreateFusionTitleClip("Text+")
text_clip.SetTrack(video_track_number)
text_clip.SetStart(start_frame)
text_clip.SetEnd(end_frame)
# Optional: Text anpassen
text_clip.SetProperty("Text", "Dein Text hier") # Beispieltext
print("Text+ Clips erfolgreich erstellt.")
if __name__ == "__main__":
main()
Hat das jemand mal gemacht? Weiß jemand weiter? Vielen Dank!