Closed vade closed 4 months ago
I have the same issue with 0.17.0-dev1
Feedback from Slack from @markreidvfx
In a new venv
pip install opentimelineio==v0.17.0.dev1
pip install opentimelineio-plugins==0.17.0.dev1
results in an error from Avid when opening the AAF
I noticed the rate for global start time and clips is set to 1.0. Is that intentional?
Yea, I noticed that as well. It might be a hiccup with our internal timeline -> OTIO converter. Is that something that would cause an AAF to fail?
I'm sorry, I don't have much experience with AAF.
No apologies necessary! Im in the same boat haha.
Some more info:
In a clean venv installing OTIO like so:
pip install opentimelineio==v0.17.0.dev1
pip install opentimelineio-plugins==0.17.0.dev1
And then attempting to convert the OTIO sample of https://dpel.aswf.io/aws-picchu-edit/
OpenTImelineIO download
results in:
otioconvert -i ~/Downloads/aws-picchu-edit-4096x2048.otioz -o ~/Downloads/aws-picchu-edit-4096x2048.aaf -O 'AAF' -A use_empty_mob_ids="True"
Traceback (most recent call last):
File "/Users/vade/miniconda3/envs/otio/bin/otioconvert", line 8, in <module>
sys.exit(main())
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/opentimelineio/console/otioconvert.py", line 278, in main
otio.adapters.write_to_file(
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/opentimelineio/adapters/__init__.py", line 192, in write_to_file
return adapter.write_to_file(
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/opentimelineio/adapters/adapter.py", line 189, in write_to_file
result = self._execute_function(
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/opentimelineio/plugins/python_plugin.py", line 142, in _execute_function
return (getattr(self.module(), func_name)(**kwargs))
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/otio_aaf_adapter/adapters/advanced_authoring_format.py", line 1604, in write_to_file
aaf_writer.validate_metadata(timeline)
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/otio_aaf_adapter/adapters/aaf_adapter/aaf_writer.py", line 179, in validate_metadata
raise AAFValidationError("\n" + "\n".join(
otio_aaf_adapter.adapters.aaf_adapter.aaf_writer.AAFValidationError:
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
Carolina_Galarza_11 years old.mov<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 59.94005994005994 (actual)
Carolina_Galarza_11 years old.mov<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 59.94005994005994 (actual)
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 30.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 30.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 30.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 30.0 (actual)
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
519291-139337-felix-blume-wind-is-blowing-in-the-grass-of-a-patagonian-plain-wind-is-blowing-in-the-trees-in-background-tier.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 25.0 (actual)
519291-139337-felix-blume-wind-is-blowing-in-the-grass-of-a-patagonian-plain-wind-is-blowing-in-the-trees-in-background-tier.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 25.0 (actual)
519291-139337-felix-blume-wind-is-blowing-in-the-grass-of-a-patagonian-plain-wind-is-blowing-in-the-trees-in-background-tier.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 25.0 (actual)
519291-139337-felix-blume-wind-is-blowing-in-the-grass-of-a-patagonian-plain-wind-is-blowing-in-the-trees-in-background-tier.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 25.0 (actual)
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
Cross Fade 0 dB<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 30.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 30.0 (actual)
Which renders out the following AAF:
And MC reports
Using otiotool
to remove transitions did not help, im getting the errors with rate which im assuming is some sort of either slow down or conform in the timeline (speed ramp or just treating 30 as 24fps for an over cranked look?
(otio) vade@Attitude-Adjuster ~ % otioconvert -i ~/Downloads/aws-picchu-edit-4096x2048/content-no-transition.otio -o ~/Downloads/aws-picchu-edit-4096x2048/content-no-transition.aaf -O 'AAF'
Traceback (most recent call last):
File "/Users/vade/miniconda3/envs/otio/bin/otioconvert", line 8, in <module>
sys.exit(main())
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/opentimelineio/console/otioconvert.py", line 278, in main
otio.adapters.write_to_file(
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/opentimelineio/adapters/__init__.py", line 192, in write_to_file
return adapter.write_to_file(
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/opentimelineio/adapters/adapter.py", line 189, in write_to_file
result = self._execute_function(
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/opentimelineio/plugins/python_plugin.py", line 142, in _execute_function
return (getattr(self.module(), func_name)(**kwargs))
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/otio_aaf_adapter/adapters/advanced_authoring_format.py", line 1604, in write_to_file
aaf_writer.validate_metadata(timeline)
File "/Users/vade/miniconda3/envs/otio/lib/python3.10/site-packages/otio_aaf_adapter/adapters/aaf_adapter/aaf_writer.py", line 179, in validate_metadata
raise AAFValidationError("\n" + "\n".join(
otio_aaf_adapter.adapters.aaf_adapter.aaf_writer.AAFValidationError:
Carolina_Galarza_11 years old.mov<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 59.94005994005994 (actual)
Carolina_Galarza_11 years old.mov<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 59.94005994005994 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 30.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 30.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 30.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 30.0 (actual)
519291-139337-felix-blume-wind-is-blowing-in-the-grass-of-a-patagonian-plain-wind-is-blowing-in-the-trees-in-background-tier.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 25.0 (actual)
519291-139337-felix-blume-wind-is-blowing-in-the-grass-of-a-patagonian-plain-wind-is-blowing-in-the-trees-in-background-tier.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 25.0 (actual)
519291-139337-felix-blume-wind-is-blowing-in-the-grass-of-a-patagonian-plain-wind-is-blowing-in-the-trees-in-background-tier.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 25.0 (actual)
519291-139337-felix-blume-wind-is-blowing-in-the-grass-of-a-patagonian-plain-wind-is-blowing-in-the-trees-in-background-tier.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 25.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate not equal to 24.0 (expected) != 30.0 (actual)
250376-Pigs_shriek_and_squeals_chewing_and_rumble_sheep_bells.wav<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate not equal to 24.0 (expected) != 30.0 (actual)
And otiostat has one validation on the sample otio file:
otiostat ~/Downloads/aws-picchu-edit-4096x2048/content.otio
parsed: True
top level object: Timeline.1
number of tracks: 26
There was a system error: track 5 is not the same duration as the other tracks. Track RationalTime(10547, 24) duration, vs: RationalTime(10588, 24)
deepest nesting: 4
number of clips: 508
total duration: RationalTime(10588, 24)
total duration in timecode: 00:07:21:04
top level rate: 24.0
clips with cdl data: 0
Tracks with non standard types: 0
Moved this to : https://github.com/OpenTimelineIO/otio-aaf-adapter/issues/42
Bug Report
Hello
I have a native macOS application which is using OTIO (via the OTIO Swift Bindings package) to create a
Timeline
objectThis timeline saved to disk as a raw
.otio
file (not.otiod
or.otioz
, and then converted viaotioconvert
to an AAF.The resulting AAF is being imported into Avid Media Composer 23.12.0 which results in a beachball / hang.
This OTIO converts to FCPX and FCP7 XML without issue, and loads in FCPX / Premiere just fine.
I'm honestly unsure if this is an issue on my end, or on the adaptor end. Any ideas welcome, and apologies if this is in the wrong repo, just LMK!
To Reproduce
Mclane.json
see attached simple OTIO file (rename to .otio - was named json to attach to the issue)
run
otioconvert -i ~/Downloads/Mclane.otio -o ~/Downloads/Mclane.aaf -O 'AAF' -A use_empty_mob_ids="True"
Open AAF in Media Composer.
Operating System
[OpenTimelineIO @ 7302ff1](https://github.com/PixarAnimationStudios/OpenTimelineIO/tree/7302ff1547e6dc24c375cb79f403c18c77346b7b)
Python version
OpenTimelineIO release version or commit hash
Compiler information: Xcode 14.3.1 and 15.1
Expected Behavior
An AAF that opens correctly.