AcademySoftwareFoundation / AcademySoftwareFoundation/OpenTimelineIO
Avid Media Composer AAF fails when reading group clips
- Dominant language
- C++
- Stars
- 2k
- Forks
- 351
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 1
Description
I'm experimenting with OTIO for AAF roundtrips in Avid and doing some programmatic reordering of clips. Pretty simple stuff, let's say sorting the clips alphabetically.
I am running into problems with group clips. Sometimes they work, sometimes they don't. It's unclear when there is a problem.
Are AAF Group Clips from Avid supported in the current adapter set? Any guidance in getting this working? Or maybe some hints as to where to look?
ISSUE 1
```
Traceback (most recent call last):
File "Python/opentimelinio-testing/controller.py", line 3, in
timeline = otio.adapters.read_from_file("/Users/russellanderson/Desktop/thetest.aaf")
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio/adapters/__init__.py", line 140, in read_from_file
return adapter.read_from_file(
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio/adapters/adapter.py", line 137, in read_from_file
result = self._execute_function(
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio/plugins/python_plugin.py", line 174, in _execute_function
return (getattr(self.module(), func_name)(**kwargs))
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 1147, in read_from_file
result = _transcribe(top, parents=list(), edit_rate=None)
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 562, in _transcribe
result.append(_transcribe(child, parents + [item], edit_rate, indent + 2))
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 247, in _transcribe
track = _transcribe(slot, parents + [item], edit_rate, indent + 2)
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 448, in _transcribe
child = _transcribe(item.segment, parents + [item], edit_rate, indent + 2)
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 434, in _transcribe
child = _transcribe(component, parents + [item], edit_rate, indent + 2)
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 497, in _transcribe
alternates = [
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 498, in
_transcribe(alt, parents + [item], edit_rate, indent + 2)
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 262, in _transcribe
mobs = _find_timecode_mobs(item)
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 130, in _find_timecode_mobs
for c in item.walk():
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/aaf2/components.py", line 204, in walk
raise NotImplementedError("Sequence returned {} not "
NotImplementedError: Sequence returned not implemented
```
ISSUE 2
```
Untitled SourceClip_MUTED
Untitled SourceClip
Untitled SourceClip
Untitled SourceClip_MUTED
Untitled SourceClip
Untitled SourceClip
Traceback (most recent call last):
File "Python/opentimelinio-testing/controller.py", line 11, in
anything = otio.adapters.write_to_file(timeline, "/Users/russellanderson/Desktop/mydemo.aaf")
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio/adapters/__init__.py", line 191, in write_to_file
return adapter.write_to_file(
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio/adapters/adapter.py", line 194, in write_to_file
result = self._execute_function(
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio/plugins/python_plugin.py", line 174, in _execute_function
return (getattr(self.module(), func_name)(**kwargs))
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 1174, in write_to_file
aaf_writer.validate_metadata(timeline)
File "Python/opentimelinio-testing/venv/lib/python3.9/site-packages/opentimelineio_contrib/adapters/aaf_adapter/aaf_writer.py", line 200, in validate_metadata
raise AAFValidationError("\n" + "\n".join(
opentimelineio_contrib.adapters.aaf_adapter.aaf_writer.AAFValidationError:
Untitled SourceClip_MUTED Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
Untitled SourceClip_MUTED Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
Untitled SourceClip Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
Untitled SourceClip Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
Untitled SourceClip Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
Untitled SourceClip Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
Untitled SourceClip_MUTED Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
Untitled SourceClip_MUTED Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
Untitled SourceClip Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
Untitled SourceClip Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
Untitled SourceClip Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
Untitled SourceClip Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
```
Contributor guide
Research direction
Start with opentimelineio_contrib/adapters/advanced_authoring_format.py, especially _transcribe and _find_timecode_mobs, then inspect aaf_writer.py's validate_metadata. Reproduce the two AAF cases described in the traceback and trace group-clip reading and writing. Done means the reported group clips can be read and written without these exceptions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100