Test Resolve import of FCPXML and metadata CSV #21
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crowmaki/ai-studio#21
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #1
Question
What does the owner's installed DaVinci Resolve actually do with the export ingredients from "Resolve FCPXML import fidelity" (#16)? In a scratch project: (1) import a hand-made FCPXML 1.10 with a few clips, a still, linked stereo audio, markers, keywords, a note and a rating, and record what survives; (2) import a metadata CSV via File > Import Metadata To > Media Pool, and record the exact column headers Resolve expects for Good Take, Comments, Keywords, Scene/Shot/Take and the values Good Take accepts; (3) optionally try a native
.otiowith markers. Record the Resolve version used. See branchresearch/resolve-fcpxml.Resolution
Tested on the owner's DaVinci Resolve 21.1.1.10 (free edition), Windows, on 2026-10-06. Media for the test: four 3 s H.264 clips (
12A-1.movand others) at 1376×768, 24 fps, with stereo AAC and a 01:00:00:00 start, plus a PNG Board still.1. FCPXML 1.10
Put only the Animatic project in the file: one
eventthat holds oneproject. If the file also has events with loose browserasset-clips (we had used them for per-Scene bins), the whole import fails with "No valid sequences are present in the file". A bisect of 11 variants showed that only removing those events fixes it. None of these mattered: DOCTYPE, custom format name (FFVideoFormat1376x768p24), the still, notes/markers/keywords/rating, assetmetadata, or a 01:00:00:00tcStart. Resolve's own 1.10 export has the same shape: one event holding one project.What survives:
<video ref=… duration="2s">that points at aduration="0s"PNG asset, imported at the right length;file:///E:/…URLs with%20escapes.Clips are relinked by path to the existing Media Pool items.
What is lost: clip and timeline
markers, andmd com.apple.proapps.spotlight.kMDItemDescription. The test could not settle whetherkeyword,noteandmdscene/take reach the Media Pool, because the metadata CSV overwrote those fields afterwards. Treat them as unsupported, as #16 recommended.Resolve exports FCPXML 1.10 as a
.fcpxmlbundle folder (Info.fcpxmlinside it), withfile://localhost/URLs. It imports a flat.fcpxmlwithout any problem.2. Metadata CSV (File > Import Metadata To > Media Pool)
Start TCandEnd TC. Without them the import reports "No matching media pool entries were found", because timecode matching is on by default. With them, a UTF-8 CSV matched all clips. Resolve's own export is UTF-16 LE with a BOM, but import doesn't need that.File Name,Clip Directory,Start TC,End TC,Scene,Shot,Take,Comments,Keywords,Description,Tag,Good Take. Keywords take a comma-separated list in one quoted cell.Tag, notGood Take. The Inspector's File > Metadata > Tag control has three options: Untagged, Good Take and Rejected.1and2.Tag=1ticks Good Take, andTag=0clears it (tested).TrueandYesare stored as strings but tick nothing.Tag=2→ Rejected is inferred from export only. It maps onto NG Takes.Good Takecolumn is free text:1,TrueandYeswere all stored as given, and none ticked the box. Don't use it.Descriptionset earlier was kept.Tagcolumn once at least one clip has a tag.3. Native OTIO
.otiowritten with OpenTimelineIO imports cleanly: cuts, linked audio and the Board still.Consequences for the edit package
animatic.fcpxml: single event and project. Don't put bins or markers in it.takes.csv: UTF-8, matched byFile Name+Start TC/End TC, so Renditions need known start timecodes. Circled →Tag=1, NG →Tag=2. Notes go inComments; Scene/Shot/Take go in their own fields..otiois the only carrier that worked.Test kit
Local and gitignored, in
scratch/resolve-test/:AIS_probe.luaandAIS_dump.lua(Resolve's console Lua: noio; usebmd/native exports);takes*.csv;results/: Resolve's reference FCPXML, OTIO and FCP 7 exports, and the metadata CSVs.Not tested: FCP 7 XML import of bins and comments.