programmatic EDL
2015 May 17What do you need to know about EDL to be able to work with it programmatically?
What is an EDL?
In the days of linear tape editing, EDLs were used to save and restore the timecode information for each edit performed on a computer-controlled editing system. Because timecode editing systems were expensive, many editors would perform offline edits with window dubs (low-quality copies of original footage with timecode visually superimposed, or burned, directly onto the image) and then create an EDL by hand for delivery to a computer-controlled editing system for the online edit.[ ... ] If you need to move a project to or from a different system or editing workstation, you can export your project to an interchange file format such as EDL or Final Cut Pro XML Interchange Format.
From Apple documentation
Example
TITLE: Jesselyn Radack
FCM: NON-DROP FRAME
001 time AA/V C 00:03:11:11 00:03:22:24 00:00:00:00 00:00:11:13
* FROM CLIP NAME: JR cam B transcription.mp4
FINAL CUT PRO REEL: time REPLACED BY: time
002 time AA/V C 00:04:40:24 00:04:46:23 00:00:11:13 00:00:17:11
* FROM CLIP NAME: JR cam B transcription.mp4
FINAL CUT PRO REEL: time REPLACED BY: time
So we have a head, wich is title and Drop frame informations for NTSC sequences, then a body which is composed of lines that describe each video segment. Which in EDL terminaology are called events.
an event
In an EDL, each clip in your sequence is represented by a line of text called an event, which has a unique event number. A clip in an EDL is defined by a source reel name and two pairs of timecode In and Out points. The first pair of timecode numbers describes the source tape (or clip) In and Out points. The second pair describes the timecode location where that clip should be placed onto a master tape (or Timeline).
Edit# Reel Name Channel Trans Source IN Source OUT Record IN Record OUT
001 time AA/V C 0:03:11:11 00:03:22:24 00:00:00:00 00:00:11:13
Track Type
Each edit uses one or more tracks in the sequence. In the case of tape-to-tape editing, this field determines which tracks are turned on on the record deck during this event.
V: Video
A: Audio (Some EDL formats label this 1 or 2.)
A2: Audio 2
AA: Both channels of audio
Edit (or Transition) Type
An EDL can represent several kinds of video edits, or transitions. A cut requires a single source, while all other types of edits require two sources, and thus two lines in an EDL.
C
: Cut. This is the simplest kind of edit.D
: Dissolve. This transition begins with one source and dissolves to a second source.W
: A wipe. This is followed by a wipe code that indicates the type of standard wipe.K
: A key edit. Clips on Video track 2 can be used as the foreground (fill) layer in a standard video key.A
dissolve from a Final Cut Pro sequence is shown below in EDL format.
* FROM CLIP NAME: JR cam B transcription.mp4
The reel name is shorten to 7 char if it exceeds that limit, and the original reel name is kept track in this field.
A reel name describes which source tape (or reel) the clip comes from. Final Cut Pro assumes that clips without reel names come from non-tape sources, such as color bars, black, or other generators. Final Cut Pro automatically designates these auxiliary sources with the reel name AX.
FINAL CUT PRO REEL: time REPLACED BY: time
For a basic EDL composer this could be represented as the following object
var edlSqDemo = {
"title": "Demo Title of project",
"offset": "00:00:28:08", //optional
"events": [
{
"id":1,
"startTime": 10, // in deconds
"endTime": 20,
"reelName":"SomeReelName", //optional
"clipName":"Something.mov"
},
{
"id":2,
"startTime": 45,
"endTime": 55,
"reelName":"SomeOtherReelName", //optional
"clipName":"SomethingElse.mov"
}
]
}
offset
if not present, then the composer it defaults to zero. This is essentially for footage filmed from camcorders,where the footage has a timecode set by the camera such as "free run", "rec run", "time of the day" etc.. and therfore different to the one you'd get by start counting form beginning of the video file.
We need to add this otherwise we'd get a missmatch when reconnecting.
This assumes that C
and AA/V
don't change. but this could be added to out EDL object, and added to the mix at a later stage should a use case arise.
More on EDL specs in Apple documentation and here
Optional ReelName
If the video/audio file does not come directly from a comcorder the reel name might not be present, in that case it should be replaced with AX
.
001 AX V C 01:00:00:00 01:00:05:00 00:00:00:00 00:00:05:00
* FROM CLIP NAME: Title 01
- no
reel
name AX
- only V channel
- normal cut
C
- need to decide on duration to make in and out of source. in will always be
00:00:00:00