DaVinci Resolve offre une flexibilité exceptionnelle pour personnaliser et automatiser notre flux de travail. L’une des clés de cette personnalisation réside dans l’API de scripting de DaVinci Resolve, qui permet de contrôler beaucoup d’aspects du logiciel. Cependant, pour tirer pleinement parti de cette puissante API, il est essentiel de comprendre la hiérarchie des objets afin de pouvoir naviguer entre eux et obtenir ce que l’on veut.
En tant que développeur, la curiosité nous pousse souvent à plonger dans les entrailles d’un logiciel pour comprendre comment il fonctionne en profondeur. Lorsque j’ai entrepris d’explorer l’API de scripting de DaVinci Resolve, j’ai rapidement compris que la clé pour maîtriser cet outil résidait dans la hiérarchie des objets.
Cette hiérarchie, telle une structure arborescente, s’étend du niveau global de l’objet « Resolve » jusqu’aux objets plus spécialisé et spécifique pour contrôlé les timeline, les items etc. Entre ces deux extrêmes, se trouvent toute une gamme d’objets qui permettent de gérer des projets, des médias, des effets, et bien plus encore. C’est comme si chaque objet avait sa propre spécialité dans l’écosystème de DaVinci Resolve et qu’il refléter une partie de fonctionnement de l’interface.
Lorsque l’on explore l’univers du scripting dans DaVinci Resolve, une première étape cruciale consiste à comprendre les objets préchargés par le logiciel. Ces objets sont déjà disponibles dans l’environnement de DaVinci Resolve et nous permettent de commencer à enquêter sur la hiérarchie des objets.
Deux fonctions essentielles sont à notre disposition pour cette exploration : print()
et dir()
. En utilisant ces fonctions en Python, nous pouvons obtenir une liste des objets préchargés qui sont disponibles dans notre programme. Là où cela devient vraiment intéressant, c’est que DaVinci Resolve nous place déjà dans un environnement qu’il a soigneusement conçu pour faciliter notre travail.
print(dir())
Résultat de la console :
['OrderedDict', '_UIAutoTbl', '_UIDefault', '_UIDispatcher', '_UIWindow', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', '_thisapp', 'app', 'bmd', 'currentProject', 'fu', 'fu_stderr', 'fu_stdout', 'fusion', 'importlib', 'pprint', 'projectManager', 'res', 'resolve', 'sys']
C’est ainsi que j’ai découvert : l’objet « Resolve ». Ce dernier sert de pilier central à l’ensemble de l’API de Scripting, offrant un accès à toutes les fonctionnalités et aux éléments du logiciel. Il existe aussi « Project » et « Project Manager », directement disponibles. Cependant, il convient de noter qu’il est préférable de ne pas les utiliser tels quels, car ils ne sont pas toujours correctement mis à jour, ce qui peut entraîner des problèmes. Nous les chargerons plutôt à partir de l’objet le plus important, « Resolve ».
L’objet « Resolve » constitue le cœur de l’API de Scripting de DaVinci Resolve. Il offre un accès essentiel à de nombreuses fonctionnalités du logiciel. On peut très facilement lister les méthodes de cet object à l’aide de « print » et dir »:
print(dir(resolve))
Voici un aperçu des fonctions disponibles avec une description personnelle de ce que j’ai compris des différente méthode au sein de cet objet :
Fonction | Description |
---|---|
DeleteLayoutPreset | Supprime un préréglage de disposition. |
ExportBurnInPreset | Exporte un préréglage de texte incrusté. |
ExportLayoutPreset | Exporte un préréglage de disposition. |
ExportRenderPreset | Exporte un préréglage de rendu. |
Fusion | Accès à l’objet Fusion de DaVinci Resolve. |
GetCurrentPage | Obtient la page actuellement ouverte dans DaVinci Resolve. |
GetMediaStorage | Obtient le stockage des médias utilisé dans le projet. |
GetProductName | Obtient le nom du produit (DaVinci Resolve). |
GetProjectManager | Obtient l’objet Project Manager. |
GetVersion | Obtient la version de DaVinci Resolve. |
GetVersionString | Obtient une chaîne de version détaillée. |
ImportBurnInPreset | Importe un préréglage de texte incrusté. |
ImportLayoutPreset | Importe un préréglage de disposition. |
ImportRenderPreset | Importe un préréglage de rendu. |
LoadLayoutPreset | Charge un préréglage de disposition. |
OpenPage | Ouvre une page spécifique dans DaVinci Resolve. |
Affiche des informations dans la console. | |
Quit | Quitte DaVinci Resolve. |
SaveLayoutPreset | Enregistre un préréglage de disposition. |
SetHighPriority | Définit la priorité élevée pour l’application. |
UpdateLayoutPreset | Met à jour un préréglage de disposition. |
Ces fonctions offrent un large éventail de possibilités pour interagir avec DaVinci Resolve à travers le scripting. Elles permettent notamment de gérer des préréglages, d’accéder à des fonctionnalités spécifiques comme Fusion, d’obtenir des informations sur le projet.
Pour descendre d’un niveau dans l’objet résolve, nous allons simplement instancier l’objet Project manager grâce à l’objet résolve.
projectManager = resolve.GetProjectManager()
De cette manière, nous avons maintenant accès, grâce à cette variable, à l’ensemble des outils du Project manager. Le « Project Manager » (Gestionnaire de Projets) est un objet central dans l’écosystème de DaVinci Resolve. Son rôle principal est de gérer et de superviser l’ensemble des projets et des ressources associées au sein du logiciel. C’est grâce à cet objet que vous pourrez définir dans quel projet vous êtes. Ouvrir un autre projet, aller récupérer un élément d’un autre projet, Obtenir la liste de tous vos projets, etc..
Toujours grâce à la fonction print et dir on va lister les méthode de cet objet.
print(dir(projectManager))
Et Voici la liste des méthodes obtenues avec leur description de ce que j’ai compris.
Méthode | Description |
---|---|
ArchiveProject | Archive le projet actuel. |
CloseProject | Ferme le projet actuel. |
CreateFolder | Crée un dossier dans le projet actuel. |
CreateProject | Crée un nouveau projet. |
DeleteFolder | Supprime un dossier du projet actuel. |
DeleteProject | Supprime le projet actuel. |
ExportProject | Exporte le projet actuel. |
GetCurrentDatabase | Obtient la base de données actuelle. |
GetCurrentFolder | Obtient le dossier actuel. |
GetCurrentProject | Obtient le projet actuel. |
GetDatabaseList | Obtient la liste des bases de données. |
GetFolderListInCurrentFolder | Obtient la liste des dossiers dans le dossier actuel. |
GetFoldersInCurrentFolder | Obtient la liste des dossiers dans le dossier actuel. |
GetProjectLastModifiedTime | Obtient la date de dernière modification du projet actuel. |
GetProjectListInCurrentFolder | Obtient la liste des projets dans le dossier actuel. |
GetProjectsInCurrentFolder | Obtient la liste des projets dans le dossier actuel. |
GotoParentFolder | Accède au dossier parent. |
GotoRootFolder | Accède au dossier racine. |
ImportProject | Importe un projet. |
LoadProject | Charge un projet. |
OpenFolder | Ouvre un dossier. |
Affiche du texte dans la console. | |
RestoreProject | Restaure le projet actuel. |
SaveProject | Enregistre le projet actuel. |
SetCurrentDatabase | Définit la base de données actuelle. |
Pour descendre d’un niveau dans l’objet résolve, nous allons simplement instancier l’objet currentProject grâce à l’objet ProjectManager.
mediaPool = resolve.GetProjectManager().GetCurrentProject().GetMediaPool()
Le CurrentProject
(Projet Actuel) est un objet essentiel dans l’écosystème de DaVinci Resolve. Il représente le projet actuellement ouvert dans le logiciel. Grâce à cet objet, vous pouvez accéder à diverses fonctionnalités liées au projet en cours de travail. Il vous permet notamment de manipuler les timelines, d’ajouter des travaux de rendu, de gérer les préréglages de rendu, d’accéder au Media Pool du projet, de travailler avec la galerie de médias, et bien plus encore. Le CurrentProject
est votre porte d’entrée pour interagir avec toutes les ressources et fonctionnalités spécifiques au projet que vous éditez.
voici la liste des méthodes avec une description de ce que j’ai compris à l’aide de la commande suivante dans la console davinci :
print(dir(resolve.GetProjectManager().GetCurrentProject()))
Méthode | Description |
---|---|
AddRenderJob | Ajoute un travail de rendu au projet actuel. |
DeleteAllRenderJobs | Supprime tous les travaux de rendu du projet actuel. |
DeleteRenderJob | Supprime un travail de rendu spécifique du projet actuel. |
ExportCurrentFrameAsStill | Exporte l’image actuelle comme une image fixe. |
GetCurrentRenderFormatAndCodec | Récupère le format de rendu actuel et le codec utilisé. |
GetCurrentRenderMode | Récupère le mode de rendu actuel. |
GetCurrentTimeline | Récupère la timeline actuellement ouverte dans le projet. |
GetGallery | Récupère la galerie de médias actuelle. |
GetMediaPool | Récupère le Media Pool du projet actuel. |
GetName | Récupère le nom du projet actuel. |
GetPresetList | Récupère la liste des préréglages disponibles. |
GetPresets | Récupère les préréglages actuellement définis. |
GetRenderCodecs | Récupère la liste des codecs de rendu disponibles. |
GetRenderFormats | Récupère la liste des formats de rendu disponibles. |
GetRenderJobList | Récupère la liste des travaux de rendu dans le projet actuel. |
GetRenderJobStatus | Récupère l’état d’un travail de rendu spécifique. |
GetRenderJobs | Récupère tous les travaux de rendu du projet actuel. |
GetRenderPresetList | Récupère la liste des préréglages de rendu disponibles. |
GetRenderPresets | Récupère les préréglages de rendu actuellement définis. |
GetRenderResolutions | Récupère la liste des résolutions de rendu disponibles. |
GetSetting | Récupère un paramètre de configuration spécifique du projet. |
GetTimelineByIndex | Récupère une timeline spécifique par son index. |
GetTimelineCount | Récupère le nombre total de timelines dans le projet. |
GetUniqueId | Récupère un identifiant unique. |
InsertAudioToCurrentTrackAtPlayhead | Insère un fichier audio à la position actuelle dans la piste audio en cours. |
IsRenderingInProgress | Vérifie si un rendu est en cours. |
LoadBurnInPreset | Charge un préréglage de superposition de données. |
LoadRenderPreset | Charge un préréglage de rendu spécifique. |
RefreshLUTList | Actualise la liste des tables de consultation de couleur. |
SaveAsNewRenderPreset | Enregistre un nouveau préréglage de rendu. |
SetCurrentRenderFormatAndCodec | Définit le format de rendu et le codec à utiliser. |
SetCurrentRenderMode | Définit le mode de rendu actuel. |
SetCurrentTimeline | Définit la timeline actuellement active. |
SetName | Définit le nom du projet actuel. |
SetPreset | Applique un préréglage spécifique. |
SetRenderSettings | Définit les paramètres de rendu. |
SetSetting | Définit un paramètre de configuration spécifique du projet. |
StartRendering | Démarre un travail de rendu spécifique. |
StopRendering | Arrête un travail de rendu en cours. |
Pour descendre d’un niveau dans l’objet résolve, nous allons simplement instancier l’objet MediaPool grâce à l’objet CurrentProject.
mediaPool = resolve.GetProjectManager().GetCurrentProject().GetMediaPool()
Le Media Pool (ou Pool Média en français) est un élément essentiel de DaVinci Resolve. Il s’agit d’une bibliothèque de médias virtuels dans laquelle vous pouvez organiser, gérer et accéder à tous les éléments multimédias que vous utilisez dans vos projets. Ces éléments multimédias peuvent inclure des vidéos, des images, des clips audio, des effets spéciaux, des transitions, des titres, et bien d’autres choses.
Je vous présente la liste des méthodes avec une description de ce que j’ai compris à l’aide de la commande suivante dans la console davinci :
print(dir(resolve.GetProjectManager().GetCurrentProject().GetMediaPool()))
Méthode | Description |
---|---|
AddSubFolder | Ajoute un sous-dossier au dossier courant du Media Pool. |
AppendToTimeline | Ajoute des éléments du Media Pool à la timeline actuelle. |
CreateEmptyTimeline | Crée une nouvelle timeline vide dans le Media Pool. |
CreateTimelineFromClips | Crée une timeline à partir de clips du Media Pool. |
DeleteClipMattes | Supprime les masques des clips sélectionnés. |
DeleteClips | Supprime les clips sélectionnés du Media Pool. |
DeleteFolders | Supprime les dossiers sélectionnés du Media Pool. |
DeleteTimelines | Supprime les timelines sélectionnées du Media Pool. |
ExportMetadata | Exporte les métadonnées des clips sélectionnés. |
GetClipMatteList | Obtient la liste des masques des clips sélectionnés. |
GetCurrentFolder | Obtient le dossier actuellement sélectionné dans le Media Pool. |
GetRootFolder | Obtient le dossier racine du Media Pool. |
GetTimelineMatteList | Obtient la liste des masques des clips dans une timeline. |
GetUniqueId | Obtient un identifiant unique. |
ImportFolderFromFile | Importe un dossier depuis un fichier dans le Media Pool. |
ImportMedia | Importe des médias dans le Media Pool. |
ImportTimelineFromFile | Importe une timeline depuis un fichier dans le Media Pool. |
MoveClips | Déplace des clips dans le Media Pool. |
MoveFolders | Déplace des dossiers dans le Media Pool. |
Affiche des informations sur les éléments du Media Pool. | |
RefreshFolders | Actualise les dossiers du Media Pool. |
RelinkClips | Rétablit les liens vers les médias associés aux clips. |
SetCurrentFolder | Définit le dossier actuellement sélectionné dans le Media Pool. |
UnlinkClips | Supprime les liens entre les clips et les médias source. |
Pour descendre d’un niveau dans l’objet résolve, nous allons instancier l’objet folder root grâce à l’objet CurrentProject.
RootFolder = resolve.GetProjectManager().GetCurrentProject().GetMediaPool().GetRootFolder()
Le Root Folder (ou dossier racine) dans DaVinci Resolve joue un rôle essentiel dans l’organisation et la gestion des médias, des projets et des ressources au sein du logiciel. Il s’agit du point de départ de la hiérarchie des dossiers et des fichiers dans le Media Pool, ce qui en fait un élément central de la structure du projet. Le Root Folder est le premier niveau de la structure de fichiers dans le Media Pool. Tous les autres dossiers et fichiers sont organisés en dessous de lui. Vous pouvez créer des sous-dossiers et des structures hiérarchiques sous le Root Folder pour mieux organiser vos médias et vos projets.
En somme, le Root Folder agit comme un point de départ centralisé pour l’organisation et la gestion de vos ressources dans DaVinci Resolve. Il vous permet de maintenir l’ordre dans vos projets, d’accéder facilement à vos médias et de les utiliser efficacement pour vos projets de montage vidéo.
Je vous présente la liste des méthodes avec une description de ce que j’ai compris à l’aide de la commande suivante dans la console davinci :
print(dir(resolve.GetProjectManager().GetCurrentProject().GetMediaPool().GetRootFolder()))
Méthode | Description |
---|---|
Export | Cette méthode permet d’exporter ou de sauvegarder les éléments contenus dans le Root Folder. Cela peut inclure des clips, des dossiers ou d’autres ressources médiatiques. |
GetClipList | Renvoie une liste des clips présents dans le Root Folder. Cette méthode vous permet d’accéder à tous les clips qui sont directement situés dans le Root Folder. |
GetClips | Cette méthode est similaire à GetClipList et renvoie également une liste de clips dans le Root Folder. Elle peut être utilisée pour accéder à l’ensemble des clips. |
GetIsFolderStale | Cette méthode vérifie si le contenu du Root Folder est obsolète ou doit être mis à jour. Elle peut être utile pour détecter des changements dans le contenu du dossier. |
GetName | Renvoie le nom du Root Folder. Vous pouvez utiliser cette méthode pour obtenir le nom du dossier racine. |
GetSubFolderList | Renvoie une liste des sous-dossiers contenus dans le Root Folder. Cette méthode vous permet d’accéder aux dossiers situés directement sous le Root Folder. |
GetSubFolders | Similaire à GetSubFolderList, cette méthode renvoie une liste des sous-dossiers du Root Folder, offrant une autre façon d’accéder à ces sous-dossiers. |
GetUniqueId | Renvoie un identifiant unique associé au Root Folder. Cet identifiant peut être utilisé pour identifier de manière unique le dossier racine. |
Cette méthode permet d’afficher des informations sur le Root Folder dans la console de script de DaVinci Resolve. Elle peut être utile pour le débogage et l’exploration du contenu du dossier racine. |
Repartons à la base de l’objet résolve pour utiliser un autre objet, le MediaStorage :
resolve.GetMediaStorage()
L’objet « MediaStorage » au sein de DaVinci Resolve joue un rôle crucial en matière de gestion des médias au sein du logiciel. Il offre un accès aux fonctionnalités liées au stockage des médias dans l’application. Grâce à MediaStorage, il est possible d’explorer, de manipuler et de contrôler les fichiers multimédias associés à un projet Resolve. Cela inclut la possibilité de rechercher des clips, de gérer les métadonnées, d’importer, d’exporter et de manipuler les média.
Je vous présente la liste des méthodes avec une description de ce que j’ai compris à l’aide de la commande suivante dans la console davinci :
print(dir(resolve.GetProjectManager().GetCurrentProject().GetMediaPool().GetRootFolder()))
Méthode | Description |
---|---|
AddClipMattesToMediaPool | Ajoute les mattes de clip au Media Pool. |
AddItemListToMediaPool | Ajoute une liste d’éléments au Media Pool. |
AddItemsToMediaPool | Ajoute des éléments au Media Pool. |
AddTimelineMattesToMediaPool | Ajoute les mattes de la timeline au Media Pool. |
GetFileList | Récupère la liste des fichiers du Media Pool. |
GetFiles | Récupère les fichiers du Media Pool. |
GetMountedVolumeList | Récupère la liste des volumes montés. |
GetMountedVolumes | Récupère les volumes montés. |
GetSubFolderList | Récupère la liste des sous-dossiers. |
GetSubFolders | Récupère les sous-dossiers. |
Affiche des informations de débogage. | |
RevealInStorage | Révèle l’emplacement dans le stockage. |