Introduction
FCPXML is the interchange format of Apple’s Final Cut Pro. Final Cut Pro keeps its own work in libraries, but it can export events, projects and clips as FCPXML so that other software can read the edit: colour grading, audio mixing, captioning and conversion tools all use it, and DaVinci Resolve can import it.
FCPXML is not the same as the older Final Cut Pro 7 XML (XMEML), which has a different structure and is what Premiere Pro imports.
Each release of Final Cut Pro may raise the FCPXML version number, given in the root
element. Newer versions of Final Cut Pro export a bundle with the extension
.fcpxmld, a folder holding the XML and related files.
Structure
The root element is fcpxml with a version attribute. The
resources element defines everything the edit refers to by ID: video
formats, media assets with the paths of their files, effects and titles. Then a
library holds event elements, and an event holds clips and
project elements.
A project contains a sequence, whose spine is the main line
of the timeline: clips, gaps and transitions in order. Connected clips sit inside the
clip they are attached to. Times are written as rational numbers of seconds, such as
1001/30000s for one frame at 29.97 frames a second.
<fcpxml version="1.10">
<resources>
<format id="r1" frameDuration="1/25s" width="1920" height="1080"/>
<asset id="r2" name="Interview" start="0s" duration="120s" hasVideo="1" hasAudio="1">…</asset>
</resources>
<library>
<event name="Day 1">
<project name="Rough cut">
<sequence format="r1">
<spine>
<asset-clip ref="r2" offset="0s" start="10s" duration="5s"/>
</spine>
</sequence>
</project>
</event>
</library>
</fcpxml>
Links
Software
- Final Cut Pro (macOS)
- DaVinci Resolve (Windows, macOS, Linux)
Developers
- OpenTimelineIO, Python and C++, which has an FCPXML adapter