A Python script that marks a video clip with comments based on human-written instructions inside the FinalCut Pro video editor.
This python file marks a video clip with comments based on human-written instructions inside the FinalCut Pro video editor.
In a fast-paced TV, Film, and Video production environment Video Editors often receive stakeholder’s notes in a text format. The notes would normally include a timestamp and a comment on what needs to be changed in a free form like:
1:02 switch angle here
14:05 replace this shot
In the case of Documentary films or long interviews, the length of the footage can be very long. And so do the notes.
Instead of manually selecting these clips in Video Editing Software or copy-pasting the one timecode at a time this script automatically adds comments to a single clip or compound clip in a form of markers inside FinalCut Pro based on stakeholder’s notes, therefore, increasing productivity, precision, and eliminating mistakes.
Once added, the markers stay attached to the actual clips no matter where those clips get moved. This eliminates the need for Video Editors to make edits from behind in order to preserve timings specified in stakeholders’ notes.
I first created this workflow when I was Directing and Video Editing TV mini-series. Since deadlines were extremely tight I was looking at every opportunity to speed up the delivery times while maintaining high quality. I later used it for commercial Videography projects. This solution fits my workflow very well and has proven to be very useful.
It was originally built simply by using a stack of regular expressions executed in the TextSoap.app along with some operations in Excel and copy-pasting the code manually. Later most of the steps were combined in a single Python script that is presented here.
Python 3.9.4
, compatible with Python 2.7
and abovedatetime
integrated module to work with date and timere
integrated regular expression operations moduleos
a portable way of using operating system dependent functionalityDownload text_to_video_markers.py
file from this GitHub repository.
In FinalCut Pro create a New Project
and load clips into the timeline. In a sample project, I duplicated the same clips to make the project over one hour long.
Now Select all
, choose File -> New -> Compound Clip
, and make at least one marker on the newly created compound clip by hitting “M” key.
Choose File -> Export XML
. Rename it to clip.fcpxml
and save it in the same folder with text_to_video_markers.py
file.
Write instructions on where you want to place markers. The text:
hh
ss
or mm:ss
format.Here is a sample provided in this project:
0:01 camera shake here
music louder?
00:2 a bit to dark here
0:3 try to change angle for 0:14 sec
from 03:07 cut out until 3:20
04:17 fantastic shot!
4:31 add transition
1:4:40 add titles here
01:04:48 fade to black
As you can see the formatting can be quite loose.
Save the text as videomarkers.txt
, and move the file into the same folder with clip.fcpxml
and text_to_video_markers.py
.
Open Terminal.app. Type python
, add space
, then drag and drop text_to_video_markers.py
and press Return
.
Alternatively you can instal the latest version of Python. Right-click on text_to_video_markers.py
file and choose Open with -> Python Launcher.app
.
Either method will run the script and create export.fcpxml
file in the same folder.
Select newly created export.fcpxml
file and Open with -> FinalCut Pro
. Upon opening choose the original library, then Keep Both
. This will create the second project with your_original_name_1
that will include all the edits specified in videomarkers.txt
.
That’s it! We have just automatically created markers on a compound clip inside FinalCut Pro based on human-written text instructions.
The project is: complete
I am no longer working on it since I am not working for TV any longer. But if you have some ideas or want me to modify something contact me and we should be able to collaborate.
clip.fcpxml
and videomarkers.txt
.text_to_video_markers.py
, clip.fcpxml
, videomarkers.txt
) must be located in the same folder.This project is open-source and available under the GNU General Public License v3.0
Created by @DmytroNorth - feel free to contact me at dmytronorth@gmail.com!