Skip to content

pydavinci

A lightly opinionated DaVinci Resolve Python API wrapper

Provides auto completion, type hints and great API reference documentation.

I really just wanted auto completion in the IDE and to program transcoding RAW formats


Install pydavinci

Install via pip using a Python 3.6 environment

pip install pydavinci

Now, with Davinci Resolve open, we just need to import it!

from pydavinci import davinci

resolve = davinci.Resolve()

Examples and documentation


Installation requirements and guidelines

pydavinci only works with Python 3.6.*, as that's a requirement on DaVinci Resolve's part.

For launching scripts externally, you also need the Studio version.

If you're working with the built-in Davinci Resolve Python console, you need to install pydavinci for the Python interpreter that's used by Davinci's console.

For avoiding conflicts when using inside the embedded console, don't use resolve as the entry point variable, as that's reserved by the console. Example of suggested usage:


Davinci Resolve v18 beta

For the newer DaVinci Resolve v18, currently in beta, newer Python installations are supported.

If you want to try out pydavinci with new Python versions for Resolve v18, use pip with the --ignore-requires-python flag.

Note that while I did some quick tests, I can't guarantee everything works on Resolve v18 beta. Full testing will become available as further betas come through, and will be supported fully on the official release.


Launching scripts externally (Studio version)

For pydavinci to work by launching scripts outside the embedded console, make sure external scripting is set to Local in Settings -> System -> General

To-do and contributing

Contributors are always welcome! I currently have a few things I want to change, some of them are:

  • Document all possible values of get_setting and set_setting
  • Add a better way of interfacing with the whole get_setting and set_setting methods using a proxy class or something to that effect
  • Deal with markers in a better way
  • Auto launch Resolve when it's not open - I've ran into some issues while trying to connect to the C extension right after launching it, a dirty way to do it is to just implement a time.sleep before trying to import the fusionscript module, otherwise we'll need to create another entrypoint to the api for launching the process and then signaling when it's ready

If you want to contribute feel free to open a pull request!