-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simple Timeline Example (with linked MXFs) #116
Comments
Ok, I've done some digging into this and have solved my own issue. I can create a sequence linked to source clips. Here's my code below: from __future__ import (
unicode_literals,
absolute_import,
print_function,
division,
)
import dumper
import inspect
import aaf2
import os
os.system('cls') # for mac and linux os.system('clear')
source_files = ["Z:\\Avid MediaFiles\\MXF\\SFX_BBC_MXFs\\4Minute_BBA01.5E5D05003B53A.mxf",
"Z:\\Avid MediaFiles\\MXF\\SFX_BBC_MXFs\\4Minute_BBA02.5E5D05003CA7A.mxf"]
with aaf2.open("output.aaf", "w") as f:
# Firstly, add links to existing MXF OP-Atom files
# This creates mobs for each file, along with a MasterMob which links the individual stereo files.
print("Adding MXF files")
for source_file_path in source_files:
f.content.link_external_mxf(source_file_path)
# Get the MasterMob, so that we can use it.
master_mob = next(mob for mob in f.content.mobs if isinstance(mob, aaf2.mobs.MasterMob))
print("Creating a sequence")
# Create a new 24 fps timeline.
video_rate = " 24000/1001"
# A timeline is a CompositionMob with TimelineMobSlots per track (video and audio)
comp_mob = f.create.CompositionMob() # A sequence in Avid terminology
comp_mob.name = "Test sequence"
f.content.mobs.append(comp_mob)
v1_timeline = comp_mob.create_timeline_slot(video_rate) #TimelineMobSlot, a track on a sequence
a1_timeline = comp_mob.create_timeline_slot(video_rate)
a2_timeline = comp_mob.create_timeline_slot(video_rate)
# Each TimelineMobSlot has a segment property. This can hold a variety of different kinds of object, but the simplest
# is a Sequence, which just represents a Sequence of sequential elements.
v1_sequence = f.create.Sequence(media_kind="picture") #Sequence of elements
a1_sequence = f.create.Sequence(media_kind="sound") #Sequence of elements
a2_sequence = f.create.Sequence(media_kind="sound") #Sequence of elements
v1_timeline.segment = v1_sequence
a1_timeline.segment = a1_sequence
a2_timeline.segment = a2_sequence
# Now let's create 10 clips, and 10 spaces on each timeline
for i in range(10):
v1_clip = f.create.Filler('picture', 200)
v1_sequence.components.append(v1_clip)
# NOTE, a clip doesn't have a start timecode, and they are just placed sequentially.
v1_clip = f.create.Filler('picture', 100)
v1_sequence.components.append(v1_clip)
a1_clip = master_mob.create_source_clip(slot_id=1) #get the first track from the master_mob, and create a source clip from it.
a1_clip.start = 20 # Note, this is 20 edit_units in sequence units
a1_clip.length = 200 # Note, if you want the full clip, have to get the length
a1_sequence.components.append(a1_clip)
a1_clip_2 = f.create.Filler('sound', 100)
a1_sequence.components.append(a1_clip_2)
a2_clip = master_mob.create_source_clip(slot_id=2)
a2_clip.length = 200
a2_sequence.components.append(a2_clip)
a2_clip_2 = f.create.Filler('sound', 100)
a2_sequence.components.append(a2_clip_2)
print("---")
print("MXF File written") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I asked this on the original PYAAF repo by mistake.
I'm hoping to bring in some simple edits into my Avid system using
pyaaf2
.I just wondered if you can guide me in creating a very quick sample. I'm bashing my head against a wall.
I've got as far as your
test_create_sequence.py
file and worked out how to link the existing MXF files into that file. I can even put some of the clips on a timeline (after an hour or so - yay!)What's funky here is that my OP-ATOM files aren't all recognised correctly. My OP-ATOM files are individual tracks of stereo files which are linked together. I think they should be showing up as a single mob with two slots, but in fact they're coming in as 4 mobs (maybe???) with single slots.
Anyway, a little help would be fantastic if you've got a second!
The text was updated successfully, but these errors were encountered: