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 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()
- Check out the usage examples
- Or go deep in the documentation
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:
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.
For pydavinci
to work by launching scripts outside the embedded console, make sure external scripting is set to Local
in Settings -> System -> General
Contributors are always welcome! I currently have a few things I want to change, some of them are:
-
Document all possible values ofNew in 0.2.0!get_setting
andset_setting
-
Add a better way of interfacing with the wholeNew in 0.2.0!get_setting
andset_setting
methods using a proxy class or something to that effect -
Deal with markers in a better wayNew in 0.2.0! - 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 - Do the same wrapper made for settings to Metadata and Properties