DaVinci Resolve Studio (达芬奇)脚本 API 说明文档(翻译版)python版

在本安装包中,您将找到 DaVinci Resolve Studio 脚本 API(应用程序编程接口)的简要介绍。除本 README.txt 文件外,该安装包还包含多个文件夹,其中包含用于脚本访问的基础导入模块(如 DaVinciResolve.py)以及部分代表性示例脚本。

从 v16.2.0 版本开始,SetLUT() 和 SetCDL() 函数接收的 nodeIndex(节点索引)参数由 “0 基索引” 改为 “1 基索引”,即参数取值范围为 1 ≤ nodeIndex ≤ 总节点数

一、概述

与 Blackmagic Fusion 脚本相同,DaVinci Resolve Studio 支持用户使用 Lua 和 Python 编程语言编写脚本。默认情况下,脚本可通过以下方式调用:

  • Fusion 页面中的 “控制台” 窗口;
  • 命令行。

您可在 Resolve 偏好设置中修改脚本调用权限:仅允许通过控制台调用,或允许通过本地网络调用。请注意:当允许从 Resolve 应用程序外部进行脚本访问时,需关注潜在的安全风险。

二、前置条件

要使用 DaVinci Resolve 脚本功能,需为所有用户安装以下任一环境:

  • Lua 5.1
  • 64 位 Python 3.6 及以上版本
  • 64 位 Python 2.7 版本

三、脚本使用方法

DaVinci Resolve 必须处于运行状态,脚本才能被调用。

1. 从外部文件夹执行脚本

若要从外部文件夹执行 Resolve 脚本,脚本需先知晓 API 的存放位置。您可能需要设置以下环境变量,确保 Python 安装环境能正确加载所需依赖,不同系统的配置方式如下:

(1)Mac OS X 系统

bash

RESOLVE_SCRIPT_API="/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting" RESOLVE_SCRIPT_LIB="/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so" PYTHONPATH="$PYTHONPATH:$RESOLVE_SCRIPT_API/Modules/" 
(2)Windows 系统

cmd

RESOLVE_SCRIPT_API="%PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting" RESOLVE_SCRIPT_LIB="C:\Program Files\Blackmagic Design\DaVinci Resolve\fusionscript.dll" PYTHONPATH="%PYTHONPATH%;%RESOLVE_SCRIPT_API%\Modules\" 
(3)Linux 系统

bash

RESOLVE_SCRIPT_API="/opt/resolve/Developer/Scripting" RESOLVE_SCRIPT_LIB="/opt/resolve/libs/Fusion/fusionscript.so" PYTHONPATH="$PYTHONPATH:$RESOLVE_SCRIPT_API/Modules/" 
注:对于标准 ISO 格式的 Linux 安装,上述路径可能需修改为 /home/resolve(而非 /opt/resolve)。

2. 从菜单或控制台执行脚本

与 Fusion 脚本类似,Resolve 脚本也可通过软件菜单或控制台调用:

    • 放在 “Utility” 文件夹:所有页面均可看到;
    • 放在 “Comp” 或 “Tool” 文件夹:仅 Fusion 页面可见;
    • 放在 “Edit”“Color”“Deliver” 等文件夹:仅对应页面可见(“Deliver” 文件夹下的脚本还会在渲染任务列表中显示)。
  • 控制台调用:交互式 “控制台” 窗口可快速执行简单脚本命令(如查询 / 修改属性、测试脚本),支持 Python 2.7、Python 3.6 和 Lua 语言,输入命令后会立即执行。有关控制台的详细使用方法,请参考《DaVinci Resolve 用户手册》。

菜单调用(推荐):DaVinci Resolve 启动时,会扫描以下目录的子文件夹,并将发现的脚本在 “工作区” 应用菜单的 “脚本” 选项下列出。您可根据需求将脚本放在对应子文件夹中,实现 “特定页面可见”:不同系统的脚本存放路径如下:

系统所有用户路径单个用户路径
Mac OS X/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Scripts/Users/<用户名>/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Scripts
Windows%PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Fusion\Scripts%APPDATA%\Roaming\Blackmagic Design\DaVinci Resolve\Support\Fusion\Scripts
Linux/opt/resolve/Fusion/Scripts(或 /home/resolve/Fusion/Scripts,依安装路径而定)$HOME/.local/share/DaVinciResolve/Fusion/Scripts

3. 示例脚本:创建简单项目

以下 Python 脚本示例演示了如何创建一个基础项目:

python

运行

#!/usr/bin/env python # 导入 DaVinci Resolve 脚本模块 import DaVinciResolveScript as dvr_script # 连接到 Resolve 应用 resolve = dvr_script.scriptapp("Resolve") # 获取 Fusion 对象(用于访问 Fusion 脚本功能) fusion = resolve.Fusion() # 获取项目管理器对象 projectManager = resolve.GetProjectManager() # 创建名为“Hello World”的项目 projectManager.CreateProject("Hello World") 
说明:resolve 对象是 Resolve 脚本的基础入口(原生对象),可通过以下方式查看其可脚本化属性:Lua 语言:使用表格迭代(table iteration)和 getmetatable 函数;Python 语言:使用 dir()help() 等函数。其中 fusion 对象是重要的可脚本化对象,可通过它访问所有 Fusion 脚本功能。

四、以无头模式运行 DaVinci Resolve

DaVinci Resolve 可通过命令行参数 -nogui 以 “无头模式”(无用户界面)启动。在此模式下,软件界面会被禁用,但所有脚本 API 仍可正常工作。

五、DaVinci Resolve API 详解

以下介绍部分常用 API 函数(*)。与 resolve 对象类似,每个对象的属性和函数均可通过上述 “查看属性” 的方式查询。

1. Resolve 对象(软件全局入口)

函数名返回值类型功能说明
Fusion()Fusion返回 Fusion 对象,是 Fusion 脚本的入口。
GetMediaStorage()MediaStorage返回媒体存储对象,用于查询和操作媒体文件路径。
GetProjectManager()ProjectManager返回当前已打开数据库的项目管理器对象。
OpenPage(pageName)Bool(布尔值)切换到 DaVinci Resolve 的指定页面,pageName 可选值:"media"(媒体)、"cut"(剪辑)、"edit"(编辑)、"fusion"(Fusion)、"color"(调色)、"fairlight"(音频)、"deliver"(交付)。
GetCurrentPage()String(字符串)返回主窗口当前显示的页面,可选值同上,无页面时返回 None。
GetProductName()String返回产品名称。
GetVersion()[版本字段列表]以 [主版本号,次版本号,补丁号,构建号,后缀] 格式返回产品版本。
GetVersionString()String以 “主版本号。次版本号。补丁号 [后缀]. 构建号” 格式返回产品版本(如 "18.5.1.build7")。
LoadLayoutPreset(presetName)Bool从已保存的预设 “presetName” 加载 UI 布局。
UpdateLayoutPreset(presetName)Bool用当前 UI 布局覆盖预设 “presetName”。
ExportLayoutPreset(presetName, filePath)Bool将预设 “presetName” 导出到路径 “filePath”。
DeleteLayoutPreset(presetName)Bool删除预设 “presetName”。
SaveLayoutPreset(presetName)Bool将当前 UI 布局保存为预设 “presetName”。
ImportLayoutPreset(filePath, presetName)Bool从路径 “filePath” 导入预设;可选参数 “presetName” 指定预设名称,未指定则以文件名作为预设名。
Quit()None(无返回值)关闭 Resolve 应用。
ImportRenderPreset(presetPath)Bool从路径 “presetPath” 导入渲染预设,并设为当前渲染预设。
ExportRenderPreset(presetName, path)Bool若预设 “presetName” 存在,将其导出到路径 “path”。
ImportBurnInPreset(presetPath)Bool从路径 “presetPath” 导入数据叠加(burn-in)预设。
ExportBurnInPreset(presetName, path)Bool若预设 “presetName” 存在,将其导出到路径 “path”。
GetKeyframeMode()keyframeMode(枚举)返回当前关键帧模式(整数),详情见 “关键帧模式说明” 章节。
SetKeyframeMode(keyframeMode)Bool成功设置关键帧模式(枚举值)时返回 True,详情见 “关键帧模式说明” 章节。

2. ProjectManager 对象(项目管理器)

函数名返回值类型功能说明
ArchiveProject(projectName, filePath, isArchiveSrcMedia=True, isArchiveRenderCache=True, isArchiveProxyMedia=False)Bool将项目 “projectName” 归档到路径 “filePath”,可选参数控制是否归档源媒体(isArchiveSrcMedia)、渲染缓存(isArchiveRenderCache)、代理媒体(isArchiveProxyMedia)。
CreateProject(projectName)Project若 “projectName” 名称唯一,创建并返回项目;否则返回 None。
DeleteProject(projectName)Bool若项目 “projectName” 未加载,从当前文件夹中删除该项目。
LoadProject(projectName)Project若找到名称为 “projectName” 的项目,加载并返回该项目;否则返回 None。
GetCurrentProject()Project返回当前已加载的 Resolve 项目。
SaveProject()Bool以当前名称保存已加载的项目,成功返回 True。
CloseProject(project)Bool关闭指定项目(不保存)。
CreateFolder(folderName)Bool若 “folderName” 名称唯一,创建文件夹。
DeleteFolder(folderName)Bool若文件夹 “folderName” 存在,删除该文件夹,成功返回 True。
GetProjectListInCurrentFolder()[项目名称列表]返回当前文件夹中的所有项目名称。
GetFolderListInCurrentFolder()[文件夹名称列表]返回当前文件夹中的所有子文件夹名称。
GotoRootFolder()Bool打开数据库的根文件夹。
GotoParentFolder()Bool若当前文件夹有父文件夹,打开父文件夹。
GetCurrentFolder()String返回当前文件夹名称。
OpenFolder(folderName)Bool打开名称为 “folderName” 的文件夹。
ImportProject(filePath, projectName=None)Bool从路径 “filePath” 导入项目,可选参数 “projectName” 指定项目名,成功返回 True。
ExportProject(projectName, filePath, withStillsAndLUTs=True)Bool将项目 “projectName” 导出到路径 “filePath”,默认包含静帧和 LUT(调色文件),成功返回 True。
RestoreProject(filePath, projectName=None)Bool从路径 “filePath” 恢复项目,可选参数 “projectName” 指定项目名,成功返回 True。
GetCurrentDatabase(){数据库信息字典}返回当前数据库连接的信息字典,包含键:"DbType"(数据库类型)、"DbName"(数据库名)、可选键 "IpAddress"(IP 地址)。
GetDatabaseList()[{数据库信息字典列表}]返回所有已添加到 Resolve 的数据库信息列表,每个元素为上述字典。
SetCurrentDatabase({dbInfo})Bool切换当前数据库连接到 “dbInfo” 指定的数据库(需包含 "DbType"("Disk" 或 "PostgreSQL")、"DbName"(数据库名),PostgreSQL 数据库可选 "IpAddress",默认 "127.0.0.1"),切换前会关闭所有已打开项目。
CreateCloudProject({cloudSettings})Project创建并返回云项目,“cloudSettings” 参数详情见 “云项目设置” 章节。
LoadCloudProject({cloudSettings})Project若找到匹配 “cloudSettings” 的云项目,加载并返回该项目;否则返回 None,参数详情见 “云项目设置” 章节。
ImportCloudProject(filePath, {cloudSettings})Bool从路径 “filePath” 导入云项目,成功返回 True,参数详情见 “云项目设置” 章节。
RestoreCloudProject(folderPath, {cloudSettings})Bool从文件夹路径 “folderPath” 恢复云项目,成功返回 True,参数详情见 “云项目设置” 章节。

3. 其他核心对象 API 概览

除上述对象外,文档还详细定义了 Project(项目)、MediaStorage(媒体存储)、MediaPool(媒体池)、Timeline(时间线)、TimelineItem(时间线片段)等核心对象的 API,以下为各对象的核心功能总结:

对象名核心功能代表性函数举例
Project单个项目的操作(媒体池、时间线、渲染任务管理)GetMediaPool ()(获取媒体池)、AddRenderJob ()(添加渲染任务)、StartRendering ()(开始渲染)
MediaStorage媒体文件管理(查询路径、导入素材到媒体池)GetFileList (folderPath)(获取文件夹内文件列表)、AddItemListToMediaPool ()(导入素材到媒体池)
MediaPool媒体池文件夹 / 时间线管理(创建时间线、导入素材、移动剪辑)CreateEmptyTimeline ()(创建空时间线)、ImportMedia ()(导入媒体)、AppendToTimeline ()(添加片段到时间线)
Folder媒体池文件夹操作(查询剪辑、子文件夹、导出文件夹)GetClipList ()(获取文件夹内剪辑列表)、Export (filePath)(导出文件夹为 DRB 格式)
MediaPoolItem单个媒体素材操作(修改名称、添加标记、链接代理媒体)SetName ()(修改素材名)、AddMarker ()(添加标记)、LinkProxyMedia ()(链接代理媒体)
Timeline时间线操作(添加轨道、删除片段、生成字幕、导出工程文件)AddTrack ()(添加轨道)、CreateSubtitlesFromAudio ()(从音频生成字幕)、Export ()(导出 AAF/EDL 等工程文件)
TimelineItem时间线片段操作(缩放、调色、防抖、添加 Fusion 合成)SetProperty ()(修改片段属性如缩放)、Stabilize ()(片段防抖)、ExportLUT ()(导出 LUT 调色文件)
Gallery静帧 / 调色预设管理(创建相册、导入 / 导出静帧)CreateGalleryStillAlbum ()(创建静帧相册)、ImportStills ()(导入静帧)
Graph调色节点图操作(设置 LUT、重置调色、启用 / 禁用节点)SetLUT ()(给节点设置 LUT)、ResetAllGrades ()(重置所有调色)、SetNodeEnabled ()(启用 / 禁用节点)
ColorGroup调色组操作(修改组名、查询组内片段、分配片段到组)SetName ()(修改组名)、GetClipsInTimeline ()(查询组内片段)

六、数据结构说明

除基础数据类型(如整数、字符串)外,Resolve Python API 主要使用 列表(List) 和 字典(Dict) 两种数据结构:

  • 列表:用 [元素1, 元素2, ...] 表示,如 [1, 2, 3]
  • 字典:用 {键1: 值1, 键2: 值2, ...} 表示,如 {"name": "项目1", "frameRate": 24}

由于 Lua 语言不原生支持列表和字典,其 API 用 “表格(Table)” 模拟这两种结构:

  • 列表 → 带索引的表格:{ [1] = 元素1, [2] = 元素2, ... }
  • 字典 → 带键的表格:{ 键1 = 值1, 键2 = 值2, ... }

七、关键补充说明

1. 关键帧模式说明

Resolve.GetKeyframeMode() 和 Resolve.SetKeyframeMode() 函数中的 “关键帧模式(keyframeMode)” 为枚举值,对应含义如下:

枚举值整数对应值功能说明
resolve.KEYFRAME_MODE_ALL0操作所有类型关键帧
resolve.KEYFRAME_MODE_COLOR1仅操作调色类型关键帧
resolve.KEYFRAME_MODE_SIZING2仅操作缩放 / 尺寸类型关键帧

2. 缓存模式说明

Graph.GetNodeCacheMode() 和 Graph.SetNodeCacheMode() 函数中的 “缓存模式(cache_value)” 为枚举值,对应含义如下:

枚举值整数对应值功能说明
resolve.CACHE_AUTO_ENABLED-1自动启用缓存
resolve.CACHE_DISABLED0禁用缓存
resolve.CACHE_ENABLED1启用缓存

3. 云项目设置说明

ProjectManager 的 CreateCloudProject()LoadCloudProject() 等函数需传入 {cloudSettings} 字典参数,包含以下键(默认值已标注):

键名类型默认值功能说明
resolve.CLOUD_SETTING_PROJECT_NAMEString""(空字符串)云项目名称
resolve.CLOUD_SETTING_PROJECT_MEDIA_PATHString""云项目媒体文件路径(必填)
resolve.CLOUD_SETTING_IS_COLLABBoolFalse是否启用协作模式
resolve.CLOUD_SETTING_SYNC_MODEsyncMode(枚举)resolve.CLOUD_SYNC_PROXY_ONLY同步模式,可选值:resolve.CLOUD_SYNC_NONE(不同步)、resolve.CLOUD_SYNC_PROXY_ONLY(仅同步代理)、resolve.CLOUD_SYNC_PROXY_AND_ORIG(同步代理和原文件)
resolve.CLOUD_SETTING_IS_CAMERA_ACCESSBoolFalse是否允许相机访问
注:LoadCloudProject() 仅支持上述前 3 个键,且同一系统首次加载时会应用所有 3 个设置,后续加载仅需指定 “项目名称”。

4. 音频同步设置说明

MediaPool.AutoSyncAudio() 函数需传入 {audioSyncSettings} 字典参数,用于设置音视频自动同步规则,包含以下键(默认值已标注):

键名类型默认值功能说明
resolve.AUDIO_SYNC_MODEaudioSyncMode(枚举)resolve.AUDIO_SYNC_TIMECODE同步模式,可选值:resolve.AUDIO_SYNC_WAVEFORM(波形同步)、resolve.AUDIO_SYNC_TIMECODE(时间码同步)
resolve.AUDIO_SYNC_CHANNEL_NUMBERchannelNumber(枚举 / 整数)1声道偏移(波形同步时生效),可选值:resolve.AUDIO_SYNC_CHANNEL_AUTOMATIC(自动,-1)、resolve.AUDIO_SYNC_CHANNEL_MIX(混合声道,-2)、1~ 最大声道数(具体声道偏移)
resolve.AUDIO_SYNC_RETAIN_EMBEDDED_AUDIOBoolFalse是否保留嵌入音频
resolve.AUDIO_SYNC_RETAIN_VIDEO_METADATABoolFalse是否保留视频元数据

5. 项目 / 剪辑属性说明

Project.GetSetting()MediaPoolItem.GetClipProperty() 等函数用于获取 / 设置 “项目设置” 或 “剪辑属性”(对应软件 UI 中的 “项目设置” 和 “剪辑属性” 对话框),操作规则如下:

  • 获取属性:调用函数时传入属性键(如 project.GetSetting("timelineFrameRate")),可获取单个属性值;若不传入参数(或传入 None / 空字符串),可获取所有可查询属性的 “键 - 值” 快照(但效率较低,建议按键查询)。
  • 设置属性:调用函数时传入 “属性键 + 值”(如 project.SetSetting("timelineFrameRate", "24")),需通过返回值(Bool)确认是否设置成功。

部分属性有固定枚举值,例如:

  • 项目属性 “superScale”(超缩放):0 = 自动、1 = 无缩放、2=2 倍缩放、3=3 倍缩放、4=4 倍缩放;
  • 剪辑属性 “Cloud Sync”(云同步):-1 = 默认、0 = 排队下载、1 = 下载中、2 = 下载成功等。

6. 音频映射说明

MediaPoolItem.GetAudioMapping() 和 TimelineItem.GetSourceAudioChannelMapping() 函数返回音频映射信息(JSON 格式字符串),包含嵌入式音频、链接音频、轨道映射等信息。例如,某素材包含 “1 个立体声嵌入式轨道 + 2 个链接轨道(7.1 声道、5.1 声道)”,返回结果格式如下:

json

{ "embedded_audio_channels": 2, // 所有轨道的嵌入式音频总声道数 "linked_audio": { // 链接音频信息列表 "1": { // 第1个链接音频(7.1声道) "channels": 8, // 声道数 "offset": -100, // 音频偏移(媒体0帧对应文件100帧) "path": "链接音频文件路径" }, "2": { // 第2个链接音频(5.1声道) "channels": 6, "offset": 200, // 媒体0帧对应文件200帧(前200帧为黑场) "path": "链接音频文件路径" } }, "track_mapping": { // 轨道映射(对应软件“音频剪辑属性”界面) "1": { // 第1个轨道(立体声) "channel_idx": [1, 3], // 声道索引(1=嵌入式第1声道,3=第1个链接音频第1声道) "mute": true, // 是否静音 "type": "Stereo" // 轨道类型(声道数与“channel_idx”长度一致) }, "2": { // 第2个轨道(7.1声道) "channel_idx": [3,4,5,6,7,8,9,10], "mute": true, "type": "7.1" }, "3": { // 第3个轨道(5.1声道) "channel_idx": [1,1,1,1,15,16], "mute": false, "type": "5.1" } } } 

7. 自动字幕设置说明

Timeline.CreateSubtitlesFromAudio() 函数需传入 {autoCaptionSettings} 字典参数,用于设置从音频生成字幕的规则,包含以下键(默认值已标注):

键名类型默认值功能说明
resolve.SUBTITLE_LANGUAGElanguageID(枚举)resolve.AUTO_CAPTION_AUTO字幕语言,可选值如英语(AUTO_CAPTION_ENGLISH)、中文简体(AUTO_CAPTION_MANDARIN_SIMPLIFIED)等
resolve.SUBTITLE_CAPTION_PRESETpresetType(枚举)resolve.AUTO_CAPTION_SUBTITLE_DEFAULT字幕预设,可选值:默认(SUBTITLE_DEFAULT)、电视文字广播(TELETEXT)、Netflix 标准(NETFLIX)
resolve.SUBTITLE_CHARS_PER_LINE整数42每行字符数(1~60),部分预设(如 Netflix)会自动调整默认值(如韩语默认 16)
resolve.SUBTITLE_LINE_BREAKlineBreakType(枚举)resolve.AUTO_CAPTION_LINE_SINGLE换行模式,可选值:单行(LINE_SINGLE)、双行(LINE_DOUBLE)
resolve.SUBTITLE_GAP整数0字幕间隙(0~10)

8. 渲染设置说明

Project.SetRenderSettings() 函数需传入 {settings} 字典参数,用于配置渲染规则,核心键如下:

键名类型功能说明
"SelectAllFrames"Bool设为 True 时,忽略 “MarkIn” 和 “MarkOut”(渲染整个时间线)
"MarkIn"/"MarkOut"整数渲染起始 / 结束帧(需设 “SelectAllFrames” 为 False)
"TargetDir"String渲染文件输出目录
"CustomName"String渲染文件名前缀
"ExportVideo"/"ExportAudio"Bool是否导出视频 / 音频
"AudioCodec"String音频编码(如 "wav"、"aac")
"AudioBitDepth"整数音频位深(如 16、24)
"AudioSampleRate"浮点数音频采样率(如 44100、48000)
"VideoQuality"整数 / 字符串视频质量(0 = 自动,1~ 最大值 = 比特率,或 "Low"/"Medium"/"High"/"Best")

9. 时间线导出属性说明

Timeline.Export(fileName, exportType, exportSubtype) 函数用于导出时间线为工程文件,参数说明如下:

  • exportType(导出类型):枚举值,如 resolve.EXPORT_AAF(AAF 格式)、resolve.EXPORT_EDL(EDL 格式)、resolve.EXPORT_FCPXML_1_10(FCPXML 1.10 格式)等;
  • exportSubtype(导出子类型):部分导出类型必填,例如:
    • 导出 AAF 时:可选 resolve.EXPORT_AAF_NEW(新建)或 resolve.EXPORT_AAF_EXISTING(更新现有);
    • 导出 EDL 时:可选 resolve.EXPORT_CDL(包含 CDL 调色)、resolve.EXPORT_SDL(包含 SDL 信息)等。
注:从 DaVinci Resolve 18.1 开始,不再支持 EXPORT_FCPXML_1_3 到 EXPORT_FCPXML_1_7 等旧版 FCPXML 格式。

10. 时间线片段属性说明

TimelineItem.SetProperty() 和 TimelineItem.GetProperty() 函数用于设置 / 获取时间线片段的属性,部分核心属性及取值范围如下:

属性名取值范围功能说明
"Pan"/"Tilt"-4.0× 宽度~4.0× 宽度 /-4.0× 高度~4.0× 高度平移 / 倾斜
"ZoomX"/"ZoomY"0.0 ~ 100.0X/Y 轴缩放比例
"RotationAngle"-360.0 ~ 360.0旋转角度
"Opacity"0.0 ~ 100.0不透明度
"CompositeMode"枚举值(如 COMPOSITE_NORMAL = 正常、COMPOSITE_MULTIPLY = 正片叠底)合成模式
"RetimeProcess"枚举值(如 RETIME_FRAME_BLEND = 帧混合、RETIME_OPTICAL_FLOW = 光流法)变速处理方式

11. LUT 导出说明

TimelineItem.ExportLUT(exportType, path) 函数用于导出片段的 LUT 调色文件,exportType(导出类型)为枚举值,对应含义如下:

枚举值功能说明
resolve.EXPORT_LUT_17PTCUBE导出 17 点 CUBE 格式 LUT
resolve.EXPORT_LUT_33PTCUBE导出 33 点 CUBE 格式 LUT
resolve.EXPORT_LUT_65PTCUBE导出 65 点 CUBE 格式 LUT
resolve.EXPORT_LUT_PANASONICVLUT导出松下 VLUT 格式 LUT
注:若导出路径未指定后缀或后缀错误,函数会自动添加正确后缀(.cube 或 .vlt)。

八、废弃与不支持的 API 函数

1. 废弃函数(不建议使用,有替代方案)

对象名废弃函数替代函数
ProjectManagerGetProjectsInCurrentFolder()GetProjectListInCurrentFolder()
ProjectManagerGetFoldersInCurrentFolder()GetFolderListInCurrentFolder()
ProjectGetPresets()GetPresetList()
ProjectGetRenderJobs()GetRenderJobList()
MediaStorageGetMountedVolumes()GetMountedVolumeList()
MediaStorageAddItemsToMediaPool()AddItemListToMediaPool()
FolderGetClips()GetClipList()
TimelineGetItemsInTrack()GetItemListInTrack()

2. 不支持的函数(完全无法使用)

对象名不支持的函数替代方案
ProjectStartRendering(index1, index2, ...)使用任务 ID 替代索引,如 StartRendering (jobId1, jobId2, ...)
ProjectDeleteRenderJobByIndex(idx)DeleteRenderJob (jobId)(用任务 ID 删除)
ProjectGetRenderJobStatus(idx)GetRenderJobStatus (jobId)(用任务 ID 查询)
Project设置属性 “videoMonitorUseRec601For422SDI”替换为 “videoMonitorUseMatrixOverrideFor422SDI” 和 “videoMonitorMatrixOverrideFor422SDI”
Project设置属性 “perfProxyMediaOn”替换为 “perfProxyMediaMode”(0 = 禁用、1 = 有代理时使用、2 = 无原文件时使用)

Read more

C语言预处理指令与宏定义的灵活运用

C语言预处理指令与宏定义的灵活运用

C语言预处理指令与宏定义的灵活运用 💡 学习目标:掌握C语言预处理指令的分类与使用方法,熟练编写带参数与不带参数的宏定义,理解条件编译的核心逻辑,能够通过预处理指令优化代码结构;学习重点:宏定义的语法与陷阱、条件编译的常用场景、文件包含的注意事项。 43.1 预处理的概念与工作机制 C语言程序的执行流程分为预处理、编译、汇编、链接四个阶段,预处理是整个流程的第一步,也是构建灵活代码的关键环节。 43.1.1 预处理的核心作用 💡 预处理阶段由预处理器完成,它不参与代码的编译,仅对源代码进行文本替换、文件包含、条件筛选等操作。 预处理的输出是经过处理的C语言源代码,该代码会直接进入编译阶段。 预处理指令的特点: 1. 所有预处理指令都以 # 开头 2. 预处理指令不需要分号结尾 3. 预处理指令的作用域是整个源文件 4. 预处理阶段不进行语法检查,仅做文本处理 43.1.2 预处理指令的分类 C语言的预处理指令主要分为三大类: * 文件包含指令:#include,用于引入头文件 * 宏定义指令:

By Ne0inhk

Python纪念币预约自动化工具:快速上手配置指南

Python纪念币预约自动化工具:快速上手配置指南 【免费下载链接】auto_commemorative_coin_booking 项目地址: https://gitcode.com/gh_mirrors/au/auto_commemorative_coin_booking 还在为纪念币预约手忙脚乱而烦恼?这款基于Python的纪念币预约自动化工具,能够帮助你轻松应对繁琐的预约流程,大幅提升预约成功率。无论是个人收藏还是批量预约,都能让你事半功倍。 工具核心优势对比 与传统手动预约方式相比,Python自动化工具在多个方面展现出明显优势: 功能维度传统方式自动化工具操作效率依赖手速程序自动执行验证码识别人工判断AI智能识别信息填写逐个输入批量自动处理成功率表现随机性高稳定可靠 快速配置实战步骤 环境准备阶段 首先确保你的电脑已安装Python 3.6或更高版本。打开命令行工具,执行以下命令安装必要依赖: pip install selenium pytesseract pymysql opencv-python pillow 项目获取与部署 在命令行

By Ne0inhk
机器学习:数据清洗与预处理 | Python

机器学习:数据清洗与预处理 | Python

个人主页-爱因斯晨 文章专栏-Python学习 文章目录 * 个人主页-爱因斯晨 * 文章专栏-Python学习 * 前言 * 了解数据清洗 * 数据清洗的步骤 * 1. 环境准备与库导入 * 2. 数据加载 * 3. 数据初探与理解 * 4. 缺失值处理 * 5. 重复值处理 * 6. 异常值处理 * 7. 数据类型转换 * 8. 数据标准化 / 归一化(预处理) * 实例实践 * 总结 前言 我们不论在学习机器学习还是数据分析中,都会涉及很多数据。但原数据不可避免有很多杂志,为了确保结果的准确性,我们需要首先进行数据清洗和预处理。 了解数据清洗 数据清洗就像是一场数据的“大扫除”。它是从原始数据中找出并修正那些错误、不完整、重复或不一致的数据。通过数据清洗,能显著提升数据质量,为后续数据分析、挖掘和建模等工作提供准确、可靠、干净的数据基础,从而让基于数据得出的结论更具可信度和价值。 数据清洗的步骤 1. 环境准备与库导入

By Ne0inhk
Python 多线程日志错乱:logging.Handler 的并发问题

Python 多线程日志错乱:logging.Handler 的并发问题

Python 多线程日志错乱:logging.Handler 的并发问题 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的蝴蝶。 🔬 每一次代码审查都是我的显微镜观察,每一次重构都是我的化学实验。 🎵 在编程的交响乐中,我既是指挥家也是演奏者。让我们一起,在技术的音乐厅里,奏响属于程序员的华美乐章。 目录 Python 多线程日志错乱:logging.Handler 的并发问题 摘要 1. 问题现象与复现 1.1 典型的日志错乱场景 2. logging模块的线程安全机制分析 2.1 Handler级别的线程安全 2.2 锁竞争的性能影响分析 3. 深入源码:竞态条件的根本原因 3.1 Handler.emit()方法的竞态分析 3.2 I/O操作的原子性问题

By Ne0inhk