davinci-resolve-mcp 4.6.4 → 4.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/README.md +4 -4
- package/README.zh-CN.md +5 -5
- package/docs/SKILL.md +1 -1
- package/docs/install.md +2 -2
- package/docs/reference/api-coverage.md +5 -1
- package/docs/reference/resolve211-transcription-type.md +35 -0
- package/install.py +2 -2
- package/package.json +1 -1
- package/src/granular/common.py +1 -1
- package/src/granular/resolve_211.py +32 -0
- package/src/resolve_mcp_server.py +1 -1
- package/src/server.py +8 -2
- package/src/utils/resolve_versions.py +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
Release history for the DaVinci Resolve MCP Server. The latest release is summarized in the root README; older entries live here to keep the README focused.
|
|
4
4
|
|
|
5
|
+
## What's New in v4.7.0 — the Resolve 21.1 transcription and timeline-item type reads are complete
|
|
6
|
+
|
|
7
|
+
The read-only pick from the 21.1 tracker ([#207](https://github.com/samuelgursky/davinci-resolve-mcp/issues/207)), by @legionsound in [#237](https://github.com/samuelgursky/davinci-resolve-mcp/pull/237). Granular 387 → 389; compound unchanged at 37.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Granular `get_media_pool_item_transcription(clip_id, use_nested_clip_transcription=False)`** —
|
|
12
|
+
the complete 21.1 `MediaPoolItem.GetTranscription` dictionary with timed words. The
|
|
13
|
+
compound `media_pool_item get_transcription` already preferred it on 21.1; the
|
|
14
|
+
granular server had no way to reach it.
|
|
15
|
+
- **Compound `timeline_item get_type` and granular
|
|
16
|
+
`get_timeline_item_type(track_type, track_index, item_index)`** — the native
|
|
17
|
+
lowercase `TimelineItem.GetType`, addressed by position like the other 21.1 item
|
|
18
|
+
readers (`get_speed`, `get_fades`), behind the same `_requires_method(..., "21.1")`
|
|
19
|
+
guard. The granular item-properties bundle already carried `type` by id through an
|
|
20
|
+
unguarded call; this is the position-addressed twin of the compound action.
|
|
21
|
+
- `CODE_FLOORS` gains `MediaPoolItem.GetTranscription` and `TimelineItem.GetType` at
|
|
22
|
+
21.1. Docs, README counts, and the generated agent-rule files are regenerated.
|
|
23
|
+
|
|
24
|
+
### Validation
|
|
25
|
+
|
|
26
|
+
- Live on Studio 21.1.0.14 (contributor's measurement, reported): native, compound,
|
|
27
|
+
and granular agreed exactly — one English segment with 19 timed words, and item
|
|
28
|
+
type `video` — matching the 2026-09-09 measurement. `Transcription Status` reads
|
|
29
|
+
empty while processing and `Transcribed` when done.
|
|
30
|
+
`tests/live_resolve211_read_completion.py` reproduces it.
|
|
31
|
+
- Unit-tested: argument validation, the missing-method refusal below 21.1, and both
|
|
32
|
+
interfaces forwarding the native value unchanged. The 19.1.3.7 floor refusal was
|
|
33
|
+
not re-measured on landing (the open project had no timeline or clips); the guard
|
|
34
|
+
is the one the twelve v2.216.0 readers measured refusing on 19.1.3.7.
|
|
35
|
+
- Not tested: nested-clip transcription, non-English or multi-speaker audio,
|
|
36
|
+
`GetType` on audio/subtitle/generator/Fusion items, builds other than 21.1.0.14.
|
|
37
|
+
|
|
5
38
|
## What's New in v4.6.4 — `ripple="false"` no longer ripples
|
|
6
39
|
|
|
7
40
|
### Fixed
|
package/README.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
English | [简体中文](README.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
[](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
|
|
6
6
|
[](https://www.npmjs.com/package/davinci-resolve-mcp)
|
|
7
7
|
[](docs/reference/api-coverage.md)
|
|
8
|
-
[-blue.svg)](#server-modes)
|
|
9
9
|
[-18%20tools-blueviolet.svg)](#server-modes)
|
|
10
10
|
[](docs/reference/api-coverage.md#test-results)
|
|
11
11
|
[](https://www.blackmagicdesign.com/products/davinciresolve)
|
|
@@ -133,7 +133,7 @@ The command starts a loopback-only server and opens the control panel in your br
|
|
|
133
133
|
| Mode | Entry point | Tools | Best for |
|
|
134
134
|
|------|-------------|-------|----------|
|
|
135
135
|
| Compound | `src/server.py` | 37 | Default mode for most assistants. Related Resolve operations are grouped behind action parameters to keep context usage low. |
|
|
136
|
-
| Full / granular | `src/server.py --full` or `src/resolve_mcp_server.py` |
|
|
136
|
+
| Full / granular | `src/server.py --full` or `src/resolve_mcp_server.py` | 389 | Power users who want one MCP tool per Resolve API method. |
|
|
137
137
|
|
|
138
138
|
The compound server is recommended unless you specifically need the granular one-tool-per-method surface.
|
|
139
139
|
|
|
@@ -410,7 +410,7 @@ The default server is a local stdio process launched by your MCP client; it does
|
|
|
410
410
|
|
|
411
411
|
| Metric | Value |
|
|
412
412
|
|--------|-------|
|
|
413
|
-
| MCP Tools | **37** compound / **
|
|
413
|
+
| MCP Tools | **37** compound / **389** granular (live server) |
|
|
414
414
|
| Advanced (offline) tools | **18** — .drp/.drt/.drx + DB authoring, no Resolve running |
|
|
415
415
|
| Kernel Actions | **136** guarded workflow actions across 9 compound tools |
|
|
416
416
|
| API Methods Covered | **361/361** (100%) |
|
package/README.zh-CN.md
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) | 简体中文
|
|
4
4
|
|
|
5
|
-
[](https://github.com/samuelgursky/davinci-resolve-mcp/releases)
|
|
6
6
|
[](https://www.npmjs.com/package/davinci-resolve-mcp)
|
|
7
7
|
[](docs/reference/api-coverage.md)
|
|
8
|
-
[-blue.svg)](#服务器模式)
|
|
9
9
|
[-18%20tools-blueviolet.svg)](#服务器模式)
|
|
10
10
|
[](docs/reference/api-coverage.md#test-results)
|
|
11
11
|
[](https://www.blackmagicdesign.com/products/davinciresolve)
|
|
12
12
|
[](https://www.python.org/downloads/)
|
|
13
13
|
[](https://opensource.org/licenses/MIT)
|
|
14
14
|
|
|
15
|
-
> 本翻译对应 v4.
|
|
15
|
+
> 本翻译对应 v4.7.0 版 README。如与英文原版有出入,以 [英文原版](README.md) 为准。
|
|
16
16
|
|
|
17
17
|
一个 Model Context Protocol (MCP) 服务器,让 AI 助手通过官方脚本 API 控制 DaVinci Resolve Studio(达芬奇)。它提供完整的 API 覆盖,外加带护栏的工作流助手,涵盖剪辑、媒体池整理、渲染设置、审阅标记、调色、Fusion、Fairlight、项目生命周期任务、扩展开发,以及不碰源媒体的媒体分析。
|
|
18
18
|
|
|
@@ -88,7 +88,7 @@ venv/bin/python -m src.control_panel
|
|
|
88
88
|
| 模式 | 入口 | 工具数 | 适合谁 |
|
|
89
89
|
|------|------|--------|--------|
|
|
90
90
|
| Compound(复合) | `src/server.py` | 37 | 大多数助手的默认模式。相关的 Resolve 操作按 action 参数分组,压低上下文占用。 |
|
|
91
|
-
| Full / granular(细粒度) | `src/server.py --full` 或 `src/resolve_mcp_server.py` |
|
|
91
|
+
| Full / granular(细粒度) | `src/server.py --full` 或 `src/resolve_mcp_server.py` | 389 | 想要"一个 Resolve API 方法 = 一个 MCP 工具"的重度用户。 |
|
|
92
92
|
|
|
93
93
|
除非你明确需要一方法一工具的细粒度界面,否则推荐复合模式。
|
|
94
94
|
|
|
@@ -226,7 +226,7 @@ DRX 调色写入**针对 Resolve Studio 做过实机校准**:调色参数默
|
|
|
226
226
|
|
|
227
227
|
| 指标 | 数值 |
|
|
228
228
|
|------|------|
|
|
229
|
-
| MCP 工具 | **37** 复合 / **
|
|
229
|
+
| MCP 工具 | **37** 复合 / **389** 细粒度(实时服务器) |
|
|
230
230
|
| Advanced(离线)工具 | **18**——.drp/.drt/.drx + 数据库创作,无需 Resolve 运行 |
|
|
231
231
|
| 内核 action | 9 个复合工具下 **136** 个带护栏的工作流 action |
|
|
232
232
|
| API 方法覆盖 | **361/361**(100%) |
|
package/docs/SKILL.md
CHANGED
|
@@ -353,7 +353,7 @@ to the user as verified.
|
|
|
353
353
|
| Mode | Entry point | Tool count | Use when |
|
|
354
354
|
|---|---|---|---|
|
|
355
355
|
| Compound (default) | `src/server.py` | 37 tools | Most workflows — keeps context lean |
|
|
356
|
-
| Granular (full) | `src/server.py --full` |
|
|
356
|
+
| Granular (full) | `src/server.py --full` | 389 tools | Power users needing one tool per API method |
|
|
357
357
|
|
|
358
358
|
Resolve 21.1 adds [twelve read-only discovery controls](reference/resolve211-read-controls.md)
|
|
359
359
|
for edition, presets, audio formats/codecs, normalization modes, speed, fades
|
package/docs/install.md
CHANGED
|
@@ -144,7 +144,7 @@ The MCP server comes in two modes:
|
|
|
144
144
|
| Mode | File | Tools | Best For |
|
|
145
145
|
|------|------|-------|----------|
|
|
146
146
|
| **Compound** (default) | `src/server.py` | 37 | Most users — fast, clean, low context usage |
|
|
147
|
-
| **Full** | `src/resolve_mcp_server.py` |
|
|
147
|
+
| **Full** | `src/resolve_mcp_server.py` | 389 | Power users who want one tool per API method |
|
|
148
148
|
|
|
149
149
|
The compound server's `timeline_item` tool includes dedicated actions for common workflows:
|
|
150
150
|
|
|
@@ -159,7 +159,7 @@ The compound server's `timeline_item` tool includes dedicated actions for common
|
|
|
159
159
|
|
|
160
160
|
The installer uses the compound server by default. To use the full server:
|
|
161
161
|
```bash
|
|
162
|
-
python src/server.py --full # Launch full
|
|
162
|
+
python src/server.py --full # Launch full 389-tool server
|
|
163
163
|
# Or point your MCP config directly at src/resolve_mcp_server.py
|
|
164
164
|
```
|
|
165
165
|
|
|
@@ -25,7 +25,7 @@ Every non-deprecated method in the bundled legacy README is represented. This
|
|
|
25
25
|
does not claim complete coverage of the newer Resolve 21.1 typed API. The
|
|
26
26
|
default compound server exposes **37 tools** that group related operations by
|
|
27
27
|
action parameter, keeping LLM context windows lean. The full granular server
|
|
28
|
-
provides **
|
|
28
|
+
provides **389 individual tools** for power users. The legacy coverage spans
|
|
29
29
|
13 API object classes. MCP-level kernel actions are tracked separately in
|
|
30
30
|
[Kernel Action Coverage](../kernels/README.md).
|
|
31
31
|
|
|
@@ -44,6 +44,10 @@ way Blackmagic's MCP exposes `search_scripting_api` — and each result also say
|
|
|
44
44
|
whether this server wraps the method, so a lookup doubles as a parity check.
|
|
45
45
|
See [Querying the typed API](typed-api-search.md).
|
|
46
46
|
|
|
47
|
+
The 21.1 full-transcription and native timeline-item type readers are also
|
|
48
|
+
available through both interfaces. A synthetic spoken clip matched the native
|
|
49
|
+
results exactly; see [Resolve 21.1 transcription and type reads](resolve211-transcription-type.md).
|
|
50
|
+
|
|
47
51
|
The 34th compound tool is `timeline_versioning` (C6) — an MCP-level workflow
|
|
48
52
|
tool, not a wrapper around a Resolve API method. It surfaces the
|
|
49
53
|
version-on-mutate hook that auto-archives the working timeline before any
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Resolve 21.1 transcription and timeline-item type reads
|
|
2
|
+
|
|
3
|
+
Resolve 21.1 added `MediaPoolItem.GetTranscription` and
|
|
4
|
+
`TimelineItem.GetType`. The compound server already preferred the full native
|
|
5
|
+
transcription over the older truncated clip-property preview. This change adds
|
|
6
|
+
the missing granular transcription tool plus direct type reads in both server
|
|
7
|
+
modes.
|
|
8
|
+
|
|
9
|
+
## Live acceptance
|
|
10
|
+
|
|
11
|
+
Tested on Resolve Studio 21.1.0.14 using a disposable project and a 14-second
|
|
12
|
+
synthetic spoken-camera clip. Native `TranscribeAudio(False, False)` completed
|
|
13
|
+
with status `Transcribed`. The official API, compound
|
|
14
|
+
`media_pool_item.get_transcription`, and granular
|
|
15
|
+
`get_media_pool_item_transcription` returned the same English transcription:
|
|
16
|
+
one segment with 19 timed words. Nested-clip transcription was disabled.
|
|
17
|
+
|
|
18
|
+
The clip was also placed on a timeline. Native `TimelineItem.GetType`, compound
|
|
19
|
+
`timeline_item.get_type`, and granular `get_timeline_item_type` all returned the
|
|
20
|
+
lowercase string `video`.
|
|
21
|
+
|
|
22
|
+
The reusable harness is `tests/live_resolve211_read_completion.py`; structured
|
|
23
|
+
evidence is in
|
|
24
|
+
`docs/reference/evidence/resolve211-transcription-type.json`.
|
|
25
|
+
|
|
26
|
+
## Scope
|
|
27
|
+
|
|
28
|
+
This validates a non-nested English transcription on one video-plus-audio item
|
|
29
|
+
and the `video` timeline-item type. It does not establish nested-clip behavior,
|
|
30
|
+
speaker labels, other languages, audio-only items, titles, generators,
|
|
31
|
+
transitions, subtitles, multicam items, or every possible native type string.
|
|
32
|
+
|
|
33
|
+
## Re-run on v4.6.3, 2026-09-15
|
|
34
|
+
|
|
35
|
+
Rebuilt from `main` at v4.6.3 and re-measured on Studio 21.1.0.14 in a local disposable project. Native `GetTranscription`, compound `media_pool_item get_transcription` and granular `get_media_pool_item_transcription` agreed exactly: one English segment, 19 timed words. Native `GetType`, compound `timeline_item get_type` and granular `get_timeline_item_type` all returned `video`. `Transcription Status` reads empty while transcription is still processing and `Transcribed` once it is done.
|
package/install.py
CHANGED
|
@@ -37,7 +37,7 @@ from src.utils.update_check import (
|
|
|
37
37
|
|
|
38
38
|
# ─── Version ──────────────────────────────────────────────────────────────────
|
|
39
39
|
|
|
40
|
-
VERSION = "4.
|
|
40
|
+
VERSION = "4.7.0"
|
|
41
41
|
# Only hard floor: mcp[cli] requires Python 3.10+. There is no upper bound —
|
|
42
42
|
# Resolve's scripting bridge loads into newer interpreters on recent builds
|
|
43
43
|
# (Python 3.14 verified against Resolve Studio 20.3.2). Older Resolve builds
|
|
@@ -1543,7 +1543,7 @@ def verify_resolve_connection(python_path, api_path, lib_path):
|
|
|
1543
1543
|
|
|
1544
1544
|
def print_banner():
|
|
1545
1545
|
title = f"DaVinci Resolve MCP Server — Installer v{VERSION}"
|
|
1546
|
-
subtitle = "37 compound ·
|
|
1546
|
+
subtitle = "37 compound · 389 full · 3 platforms"
|
|
1547
1547
|
print()
|
|
1548
1548
|
print(bold(" ╔══════════════════════════════════════════════════════╗"))
|
|
1549
1549
|
print(bold(f" ║{title:^54}║"))
|
package/package.json
CHANGED
package/src/granular/common.py
CHANGED
|
@@ -93,7 +93,7 @@ if not logging.getLogger().handlers:
|
|
|
93
93
|
handlers=[logging.StreamHandler()],
|
|
94
94
|
)
|
|
95
95
|
|
|
96
|
-
VERSION = "4.
|
|
96
|
+
VERSION = "4.7.0"
|
|
97
97
|
logger = logging.getLogger("davinci-resolve-mcp")
|
|
98
98
|
logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION}")
|
|
99
99
|
logger.info(f"Detected platform: {get_platform()}")
|
|
@@ -57,6 +57,25 @@ def get_project_settings_presets() -> dict:
|
|
|
57
57
|
return {"presets": proj.GetProjectSettingsPresetList()}
|
|
58
58
|
|
|
59
59
|
|
|
60
|
+
@mcp.tool(annotations=READ_ONLY_TOOL)
|
|
61
|
+
def get_media_pool_item_transcription(clip_id: str, use_nested_clip_transcription: bool = False) -> dict:
|
|
62
|
+
"""Read the complete 21.1 transcription dictionary for one Media Pool item, including timed words."""
|
|
63
|
+
if not isinstance(clip_id, str) or not clip_id:
|
|
64
|
+
return {"error": "clip_id must be a non-empty string"}
|
|
65
|
+
if type(use_nested_clip_transcription) is not bool:
|
|
66
|
+
return {"error": "use_nested_clip_transcription must be a boolean"}
|
|
67
|
+
_, proj = get_current_project()
|
|
68
|
+
if proj is None:
|
|
69
|
+
return {"error": "No project currently open"}
|
|
70
|
+
clip = _find_clip_by_id(proj.GetMediaPool().GetRootFolder(), clip_id)
|
|
71
|
+
if clip is None:
|
|
72
|
+
return {"error": "Media Pool item not found"}
|
|
73
|
+
missing = _requires_method(clip, "GetTranscription", "21.1")
|
|
74
|
+
if missing:
|
|
75
|
+
return missing
|
|
76
|
+
return {"transcription": clip.GetTranscription(use_nested_clip_transcription)}
|
|
77
|
+
|
|
78
|
+
|
|
60
79
|
@mcp.tool(annotations=READ_ONLY_TOOL)
|
|
61
80
|
def get_audio_render_formats() -> dict:
|
|
62
81
|
"""Read GetAudioRenderFormats (documented on Resolve 21.1+)."""
|
|
@@ -129,6 +148,19 @@ def get_timeline_item_fades(track_type: str = "video", track_index: int = 1, ite
|
|
|
129
148
|
return missing
|
|
130
149
|
return {"fades": item.GetFades()}
|
|
131
150
|
|
|
151
|
+
@mcp.tool(annotations=READ_ONLY_TOOL)
|
|
152
|
+
def get_timeline_item_type(track_type: str = "video", track_index: int = 1, item_index: int = 0) -> dict:
|
|
153
|
+
"""Read the native lowercase TimelineItem type documented on Resolve 21.1+."""
|
|
154
|
+
if track_type not in ("video", "audio") or track_index < 1 or item_index < 0:
|
|
155
|
+
return {"error": "Use video/audio, a 1-based track index and a non-negative item index"}
|
|
156
|
+
item, error = _get_timeline_item(track_type, track_index, item_index)
|
|
157
|
+
if error:
|
|
158
|
+
return error
|
|
159
|
+
missing = _requires_method(item, "GetType", "21.1")
|
|
160
|
+
if missing:
|
|
161
|
+
return missing
|
|
162
|
+
return {"type": item.GetType()}
|
|
163
|
+
|
|
132
164
|
@mcp.tool(annotations=READ_ONLY_TOOL)
|
|
133
165
|
def get_timeline_item_output_blanking(track_type: str = "video", track_index: int = 1, item_index: int = 0) -> dict:
|
|
134
166
|
"""Read GetOutputBlanking (documented on Resolve 21.1+). Pixel coordinates; clips inheriting timeline blanking return an empty dict."""
|
|
@@ -34,7 +34,7 @@ from src.utils.update_check import start_background_update_check
|
|
|
34
34
|
if __name__ == "__main__":
|
|
35
35
|
try:
|
|
36
36
|
start_background_update_check(VERSION, project_dir, logger)
|
|
37
|
-
logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION} (
|
|
37
|
+
logger.info(f"Starting DaVinci Resolve MCP Server v{VERSION} (389 granular tools)")
|
|
38
38
|
run_fastmcp_stdio(mcp)
|
|
39
39
|
except KeyboardInterrupt:
|
|
40
40
|
logger.info("Server shutdown requested")
|
package/src/server.py
CHANGED
|
@@ -11,7 +11,7 @@ Usage:
|
|
|
11
11
|
python src/server.py --full # Start the 377-tool granular server instead
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
-
VERSION = "4.
|
|
14
|
+
VERSION = "4.7.0"
|
|
15
15
|
|
|
16
16
|
import base64
|
|
17
17
|
import os
|
|
@@ -26403,6 +26403,7 @@ def timeline_item(action: str, params: Optional[Dict[str, Any]] = None) -> Dict[
|
|
|
26403
26403
|
set_fades(options, ...) -> {success} — native 21.1 FadeIn/FadeOut integer frames.
|
|
26404
26404
|
get_speed(...) -> {speed} — documented on Resolve 21.1+.
|
|
26405
26405
|
get_fades(...) -> {fades} — documented on Resolve 21.1+. Native frame durations.
|
|
26406
|
+
get_type(...) -> {type} — native lowercase TimelineItem type documented on Resolve 21.1+.
|
|
26406
26407
|
get_output_blanking(...) -> {blanking} — documented on Resolve 21.1+. Pixel coordinates; empty on a clip inheriting timeline blanking.
|
|
26407
26408
|
get_use_timeline_for_output_blanking(...) -> {use_timeline} — documented on Resolve 21.1+.
|
|
26408
26409
|
get_name(track_type?, track_index?, item_index?) -> {name}
|
|
@@ -26516,6 +26517,11 @@ def timeline_item(action: str, params: Optional[Dict[str, Any]] = None) -> Dict[
|
|
|
26516
26517
|
if missing:
|
|
26517
26518
|
return missing
|
|
26518
26519
|
return {"fades": _ser(item.GetFades())}
|
|
26520
|
+
if action == "get_type":
|
|
26521
|
+
missing = _requires_method(item, "GetType", "21.1")
|
|
26522
|
+
if missing:
|
|
26523
|
+
return missing
|
|
26524
|
+
return {"type": _ser(item.GetType())}
|
|
26519
26525
|
if action == "get_output_blanking":
|
|
26520
26526
|
missing = _requires_method(item, "GetOutputBlanking", "21.1")
|
|
26521
26527
|
if missing:
|
|
@@ -26702,7 +26708,7 @@ def timeline_item(action: str, params: Optional[Dict[str, Any]] = None) -> Dict[
|
|
|
26702
26708
|
return _err(f"Invalid interpolation. Must be one of: {', '.join(valid)}")
|
|
26703
26709
|
return {"success": bool(item.SetKeyframeInterpolation(p["property"], p["frame"], p["interpolation"]))}
|
|
26704
26710
|
|
|
26705
|
-
return _unknown(action, ["set_output_blanking","set_use_timeline_for_output_blanking","flatten_multicam","add_transition","set_speed","set_fades","get_speed","get_fades","get_output_blanking","get_use_timeline_for_output_blanking","get_name","get_property","set_property","get_duration","get_start","get_end","get_source_start_frame","get_source_end_frame","get_source_start_time","get_source_end_time","get_left_offset","get_right_offset","set_clip_enabled","get_clip_enabled","update_sidecar","get_unique_id","get_media_pool_item","get_stereo_convergence","get_stereo_left_window","get_stereo_right_window","get_linked_items","get_track_type_and_index","get_source_audio_mapping","load_burnin_preset","set_name","get_voice_isolation_state","set_voice_isolation_state","get_retime","set_retime","get_transform","set_transform","get_crop","set_crop","get_composite","set_composite","get_audio","set_audio","get_keyframes","add_keyframe","modify_keyframe","delete_keyframe","set_keyframe_interpolation"])
|
|
26711
|
+
return _unknown(action, ["set_output_blanking","set_use_timeline_for_output_blanking","flatten_multicam","add_transition","set_speed","set_fades","get_speed","get_fades","get_type","get_output_blanking","get_use_timeline_for_output_blanking","get_name","get_property","set_property","get_duration","get_start","get_end","get_source_start_frame","get_source_end_frame","get_source_start_time","get_source_end_time","get_left_offset","get_right_offset","set_clip_enabled","get_clip_enabled","update_sidecar","get_unique_id","get_media_pool_item","get_stereo_convergence","get_stereo_left_window","get_stereo_right_window","get_linked_items","get_track_type_and_index","get_source_audio_mapping","load_burnin_preset","set_name","get_voice_isolation_state","set_voice_isolation_state","get_retime","set_retime","get_transform","set_transform","get_crop","set_crop","get_composite","set_composite","get_audio","set_audio","get_keyframes","add_keyframe","modify_keyframe","delete_keyframe","set_keyframe_interpolation"])
|
|
26706
26712
|
|
|
26707
26713
|
|
|
26708
26714
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
@@ -250,6 +250,8 @@ CODE_FLOORS: Dict[str, str] = {
|
|
|
250
250
|
"Timeline.GetOutputBlanking": "21.1",
|
|
251
251
|
"TimelineItem.GetSpeed": "21.1",
|
|
252
252
|
"TimelineItem.GetFades": "21.1",
|
|
253
|
+
"MediaPoolItem.GetTranscription": "21.1",
|
|
254
|
+
"TimelineItem.GetType": "21.1",
|
|
253
255
|
"TimelineItem.GetOutputBlanking": "21.1",
|
|
254
256
|
"TimelineItem.GetUseTimelineForOutputBlanking": "21.1",
|
|
255
257
|
|