Kdenlive 22.12.0 export of timeline with library clips fails with multiple errors

Abierto
#1,504 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
tooling

Línea de trabajo

Comienza reproduciendo la exportación de un clip de biblioteca de Kdenlive con OpenTimelineIO 0.15.0; después, sigue el punto de entrada otioconvert a través de adapters.write_to_file, advanced_authoring_format.py y validate_metadata de aaf_writer.py. Compara las referencias de medios de Clip y los metadatos de Transition de la línea de tiempo generada con los requisitos de validación de AAF. Se considera terminado cuando la exportación se completa sin los errores de validación indicados y el archivo resultante se puede importar.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

Bug Report

Incorrect Functionality and General Questions

Kdenlive OTIO export fails with multiple errors.

To Reproduce

  1. Operating System: EndeavourOS, up to date
  2. Python version: 3.10.8
  3. OpenTimelineIO release version or commit hash
$ otioconvert --version
OpenTimelineIO version: 0.15.0
No pkg_resource plugins installed.
  1. Compiler information:
    binary installed, not compiled locally.

Expected Behavior

In Kdenlive 22.12.0, in an existing project, create a few library clips from timeline segments that contain multiple clips. See this documentation https://docs.kdenlive.org/en/glossary/useful_information/the_library.html

In a new project, put one of those library clips onto the timeline. (Note that it might be a good idea to "expand" the library clip so that the original clips appear on the timeline, but this functionality is currently broken.)

Choose the menu option "Export OpenTimelineIO...", provide a name for the new file, click save, and get a new file successfully created.

Screenshots

n/a

Logs

An apparently useless 124 KB file is created that has no project-specific content and gives an error when I try to import it.

When I choose "export", give a name, and click Save, I get this error:

Traceback (most recent call last):
  File "/usr/bin/otioconvert", line 33, in <module>
    sys.exit(load_entry_point('OpenTimelineIO==0.15.0', 'console_scripts', 'otioconvert')())
  File "/usr/lib/python3.10/site-packages/opentimelineio/console/otioconvert.py", line 278, in main
    otio.adapters.write_to_file(
  File "/usr/lib/python3.10/site-packages/opentimelineio/adapters/__init__.py", line 192, in write_to_file
    return adapter.write_to_file(
  File "/usr/lib/python3.10/site-packages/opentimelineio/adapters/adapter.py", line 198, in write_to_file
    result = self._execute_function(
  File "/usr/lib/python3.10/site-packages/opentimelineio/plugins/python_plugin.py", line 153, in _execute_function
    return (getattr(self.module(), func_name)(**kwargs))
  File "/usr/lib/python3.10/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 1616, in write_to_file
    aaf_writer.validate_metadata(timeline)
  File "/usr/lib/python3.10/site-packages/opentimelineio_contrib/adapters/aaf_adapter/aaf_writer.py", line 179, in validate_metadata
    raise AAFValidationError("\n" + "\n".join(
opentimelineio_contrib.adapters.aaf_adapter.aaf_writer.AAFValidationError: 
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.duration.rate does not exist, 'NoneType' object has no attribute 'duration'
<class 'opentimelineio._otio.Clip'> Clip.media_reference.available_range.start_time.rate does not exist, 'NoneType' object has no attribute 'start_time'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['PointList'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['DataDefinition']['Name'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Description'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['OperationGroup']['Operation']['Name'] does not exist, 'AAF'
<class 'opentimelineio._otio.Transition'> Transition.metadata['AAF']['CutPoint'] does not exist, 'AAF'
Lenguaje dominante
C++
Estrellas
2.1k
Forks
362
Merge medio
1 d 20 h
PR fusionados (30 d)
5

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de AcademySoftwareFoundation/OpenTimelineIO

Todos los issues de AcademySoftwareFoundation/OpenTimelineIO

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.