Bug 42109 - Не работает OpenTimelineIO в KdenLive
Summary: Не работает OpenTimelineIO в KdenLive
Status: CLOSED FIXED
Alias: None
Product: New/proposed packages
Classification: Development
Component: Обычный репозиторий (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P1 major
Assignee: Andrey Cherepanov
QA Contact: Andrey Cherepanov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-03-12 15:27 MSK by Semenov
Modified: 2023-10-04 12:29 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Semenov 2022-03-12 15:27:15 MSK
При попытке экспорта проекта в OpenTimelineIO выходит сообщение: "Не удалось найти сценарий «otioconvert».
Необходимо установить OpenTimelineIO,
через ваш менеджер пакетов, если он доступен,
или воспользоваться командой «pip3 install opentimelineio»
и проверить установлены ли сценарии в каталоге, указанном в переменной среде PATH"
В менеджере пакетов "Альт" нет OpenTimelineIO. Команда "pip3 install opentimelineio" - не работает.
Чтобы его собрать в репозиторий, а так понимаю, есть ссыла: https://github.com/PixarAnimationStudios/OpenTimelineIO
Но я этого делать не умею, и прошу помочь эту опциональную функцию программы KdenLive поместить в дополнения к программе.
Это крайне важная функция, которая на самом деле является основной для профессионального видеомонтажа в кино и телевидении. Она обеспечивает экспорт документов о проекте, с помощью которого проект можно автоматизировано "пересобрать" в других программах и средах, для конечной обработки (цветокоррекции, переозвучания и прочих видов финальных сборок).
Когда эта функция появится в KdenLive, можно будет констатировать, что в среде "Альт" есть программа полностью закрывающая вопросы профессиональной сборки видеоматериалов.
Comment 1 Aleksei Kalinin 2023-04-10 18:19:18 MSK
Фактически это не Bug. KdenLive обладает инструментами для установки дополнений средствами пакетного менеджера pip.
Возможно пакет pip не установлен в системе. Для установки pip необходимо исполнить команду:
`sudo sh -c "apt-get update && apt-get install pip -y"`.
После Kdenlive сможет устанавливать модули самостоятельно. Kdenlive запускает установку модулей из под пользователя, и складывает модули "$HOME/.local/bin/" это считается правильным, но это путь по умолчанию не попадает в переменную $PATH.

Поэтому можно запустить приложение из консоли добавив необходимый путь:
`PATH=$PATH:$HOME/.local/bin/ kdenlive `
Для удобства можно создать ярлык и заменить секцию Exec=… на Exec=sh -c "PATH=$PATH:$HOME/.local/bin/ kde5 kdenlive %F"

Так же можно использовать пакетный менеджер flatpack, версия Kdenlive собрана со всеми дополнениями. Использование пакетного менеджера flatpack разобрано здесь: https://youtu.be/Fwe_-2FlGqY?t=294
Comment 2 Sergey V Turchin 2023-04-17 18:16:26 MSK
opentimelineio по хорошему надо упаковать.

P.S.
В идеале нужно представлять, что устанавливаем систему с диска при отсутствии интернет.
Comment 3 Aleksei Kalinin 2023-04-17 18:18:24 MSK
Более подробное рассмотрение вопроса навело на мысль. Возможно, поскольку по умолчанию kdenlive запускается через kde5, лучше будет добавить путь для локальных модулей pip($HOME/.local/bin) в утилиту kde5 пакета kf5-filesystem.
Так:
--- a/kde5
+++ b/kde5
@@ -4,7 +4,7 @@
 if [ "$KDE_SESSION_VERSION" != "5" ] ; then

     OLD_PATH=$PATH
-    PATH=`echo "$PATH" | sed "s|$HOME/bin|$HOME/bin:/usr/lib/kf5/bin|"`
+    PATH=`echo "$PATH" | sed "s|$HOME/bin|$HOME/bin:$HOME/.local/bin:/usr/lib/kf5/bin|"`
     [ "$PATH" != "$OLD_PATH" ] || PATH="/usr/lib/kf5/bin:$PATH"
     export PATH 

Или же действительно добавить пакет OpenTimeLineIO, но это будет не универсальным методом и все что будет ставиться автоматизированными средствами kdenlive  работать не будет.
Comment 4 Sergey V Turchin 2023-04-17 18:23:03 MSK
(Ответ для Aleksei Kalinin на комментарий #3)
> лучше будет добавить путь для
> локальных модулей pip($HOME/.local/bin
Лучше не городить костылей. Есть ~/bin/
Comment 5 Aleksei Kalinin 2023-04-17 18:36:18 MSK
(In reply to Sergey V Turchin from comment #4)
> (Ответ для Aleksei Kalinin на комментарий #3)
> > лучше будет добавить путь для
> > локальных модулей pip($HOME/.local/bin
> Лучше не городить костылей. Есть ~/bin/

Да, увидел коментарий comment #2. Понял. С вашего позволения займусь подготовкой пакет.
Comment 6 Sergey V Turchin 2023-04-18 14:46:57 MSK
(Ответ для Aleksei Kalinin на комментарий #5)
> С вашего позволения займусь подготовкой пакет.
Да, я только за.
Автоматическую зависимость на него я пока замочил. Как только появится в p10, сразу сделаю.
Comment 7 Semenov 2023-06-12 04:31:28 MSK
(Ответ для Aleksei Kalinin на комментарий #5)

Здравствуйте! Я так понял, вы всё-таки хотите подготовить пакет OpenTimelineIO? Как узнать, когда он будет готов?
Comment 8 Sergey V Turchin 2023-06-13 17:36:48 MSK
(Ответ для Semenov на комментарий #7)
> Как узнать, когда он будет готов?
Заходить периодически на страницу:
https://packages.altlinux.org/ru/search/?branch=sisyphus&q=OpenTimelineIO
Comment 9 Aleksei Kalinin 2023-06-13 17:42:44 MSK
(In reply to Semenov from comment #7)
> (Ответ для Aleksei Kalinin на комментарий #5)
> 
> Здравствуйте! Я так понял, вы всё-таки хотите подготовить пакет
> OpenTimelineIO?

Доброго дня!

На данный момент пакет предварительно собран и проходит согласование по возможности добавления его в репозиторий.
Вы можете попробовать текущий вариант сборки в качестве тестирования. Для этого можете временно добавить репозиторий по номеру задачи:

# apt-repo add 322896

И установить пакет:

# apt-get install python3-module-OpenTimelineIO

Обратите внимание, что пропитанный функционал от Adobe, такие как RV и Maya работать не будет. Его нужно устанавливать отдельно.

Инструкции по установке:
https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_html 

https://help.autodesk.com/view/MAYAUL/2024/ENU/?guid=GUID-D64ACA64-2566-42B3-BE0F-BCE843A1702F
Comment 10 Semenov 2023-06-13 22:48:38 MSK
(Ответ для Aleksei Kalinin на комментарий #9)

При попытке совершить экспорт OpenTimelineIO выходит сообщение:

Сбой преобразования проекта OpenTimelineIO

Traceback (most recent call last):
  File "/usr/bin/otioconvert", line 9, in <module>
    sys.exit(main())
  File "/home/semenov/.local/lib/python3/site-packages/opentimelineio/console/otioconvert.py", line 278, in main
    otio.adapters.write_to_file(
  File "/home/semenov/.local/lib/python3/site-packages/opentimelineio/adapters/__init__.py", line 192, in write_to_file
    return adapter.write_to_file(
  File "/home/semenov/.local/lib/python3/site-packages/opentimelineio/adapters/adapter.py", line 198, in write_to_file
    result = self._execute_function(
  File "/home/semenov/.local/lib/python3/site-packages/opentimelineio/plugins/python_plugin.py", line 153, in _execute_function
    return (getattr(self.module(), func_name)(**kwargs))
  File "/home/semenov/.local/lib/python3/site-packages/opentimelineio_contrib/adapters/advanced_authoring_format.py", line 1618, in write_to_file
    otio2aaf = aaf_writer.AAFFileTranscriber(timeline, f, **kwargs)
  File "/home/semenov/.local/lib/python3/site-packages/opentimelineio_contrib/adapters/aaf_adapter/aaf_writer.py", line 88, in __init__
    self._clip_mob_ids_map = _gather_clip_mob_ids(input_otio, **kwargs)
  File "/home/semenov/.local/lib/python3/site-packages/opentimelineio_contrib/adapters/aaf_adapter/aaf_writer.py", line 239, in _gather_clip_mob_ids
    raise AAFAdapterError("Cannot find mob ID for clip {}".format(otio_clip))
opentimelineio_contrib.adapters.aaf_adapter.aaf_writer.AAFAdapterError: Cannot find mob ID for clip Clip("", ExternalReference("Видео/Копия linux.m4v"), TimeRange(RationalTime(0, 25), RationalTime(6250, 25)), {})

Мне трудно понять что здесь написано. Скажите пожалуйста, это у меня в компьютере что-то нужно налаживать, или нужно какое-то исправление в пакете?
Comment 11 Andrey Cherepanov 2023-06-14 11:06:17 MSK
(Ответ для Aleksei Kalinin на комментарий #9)
> (In reply to Semenov from comment #7)
> > (Ответ для Aleksei Kalinin на комментарий #5)
> > 
> > Здравствуйте! Я так понял, вы всё-таки хотите подготовить пакет
> > OpenTimelineIO?
> 
> Доброго дня!
> 
> На данный момент пакет предварительно собран и проходит согласование по
> возможности добавления его в репозиторий.
> Вы можете попробовать текущий вариант сборки в качестве тестирования. Для
> этого можете временно добавить репозиторий по номеру задачи:
> 
> # apt-repo add 322896
> 
> И установить пакет:
> 
> # apt-get install python3-module-OpenTimelineIO
> 
> Обратите внимание, что пропитанный функционал от Adobe, такие как RV и Maya
> работать не будет. Его нужно устанавливать отдельно.
> 
> Инструкции по установке:
> https://help.autodesk.com/view/SGSUB/ENU/?guid=SG_RV_rv_manuals_html 
> 
> https://help.autodesk.com/view/MAYAUL/2024/ENU/?guid=GUID-D64ACA64-2566-42B3-
> BE0F-BCE843A1702F

Проще: apt-repo test 322896
Это временно добавит источник, обновит индексы, установит из задания все пакеты (кроме -devel и -debuginfo) и удалит источник.
Comment 12 Aleksei Kalinin 2023-06-14 20:48:17 MSK
(In reply to Semenov from comment #10)
> (Ответ для Aleksei Kalinin на комментарий #9)
> 
> При попытке совершить экспорт OpenTimelineIO выходит сообщение:
> 
> Сбой преобразования проекта OpenTimelineIO
> 
> Traceback (most recent call last):
>   File "/usr/bin/otioconvert", line 9, in <module>
>     sys.exit(main())
>   File
> "/home/semenov/.local/lib/python3/site-packages/opentimelineio/console/
> otioconvert.py", line 278, in main
>     otio.adapters.write_to_file(
>   File
> "/home/semenov/.local/lib/python3/site-packages/opentimelineio/adapters/
> __init__.py", line 192, in write_to_file
>     return adapter.write_to_file(
>   File
> "/home/semenov/.local/lib/python3/site-packages/opentimelineio/adapters/
> adapter.py", line 198, in write_to_file
>     result = self._execute_function(
>   File
> "/home/semenov/.local/lib/python3/site-packages/opentimelineio/plugins/
> python_plugin.py", line 153, in _execute_function
>     return (getattr(self.module(), func_name)(**kwargs))
>   File
> "/home/semenov/.local/lib/python3/site-packages/opentimelineio_contrib/
> adapters/advanced_authoring_format.py", line 1618, in write_to_file
>     otio2aaf = aaf_writer.AAFFileTranscriber(timeline, f, **kwargs)
>   File
> "/home/semenov/.local/lib/python3/site-packages/opentimelineio_contrib/
> adapters/aaf_adapter/aaf_writer.py", line 88, in __init__
>     self._clip_mob_ids_map = _gather_clip_mob_ids(input_otio, **kwargs)
>   File
> "/home/semenov/.local/lib/python3/site-packages/opentimelineio_contrib/
> adapters/aaf_adapter/aaf_writer.py", line 239, in _gather_clip_mob_ids
>     raise AAFAdapterError("Cannot find mob ID for clip {}".format(otio_clip))
> opentimelineio_contrib.adapters.aaf_adapter.aaf_writer.AAFAdapterError:
> Cannot find mob ID for clip Clip("", ExternalReference("Видео/Копия
> linux.m4v"), TimeRange(RationalTime(0, 25), RationalTime(6250, 25)), {})
> 
> Мне трудно понять что здесь написано. Скажите пожалуйста, это у меня в
> компьютере что-то нужно налаживать, или нужно какое-то исправление в пакете?

Пока видно что у Вас скрипты берутся из домашней дирректории. До установки пакета желательно удалить OpentimelineIO установленный средствами pip

$ pip uninstall OpentimelineIO
Comment 13 Aleksei Kalinin 2023-06-14 20:52:57 MSK
(In reply to Andrey Cherepanov from comment #11)
> 
> Проще: apt-repo test 322896
> Это временно добавит источник, обновит индексы, установит из задания все
> пакеты (кроме -devel и -debuginfo) и удалит источник.

Доброго дня Андрей!

Согласен, удалить источник после тестирования стоит. Но в данном случае в задаче  слишком много пакетов которые необходимы только для сборка, и их нет нужды устанавливать. А для работы из задачи необходимы только:
	python3-module-pyaaf2 	python3-module-OpenTimelineIO
Comment 14 Semenov 2023-06-14 21:24:21 MSK
(Ответ для Aleksei Kalinin на комментарий #12)

> Пока видно что у Вас скрипты берутся из домашней дирректории. До установки
> пакета желательно удалить OpentimelineIO установленный средствами pip
> 
> $ pip uninstall OpentimelineIO

Сделал, и переустановил, но ошибка повторяется с идентичным текстом.
Удалил с помощью команды: $ pip uninstall OpentimelineIO
После дополнительно из Sinaptic удалил пакет OpentimelineIO (который почему-то там остался).
На всякий случай сделал:
# apt-get update
# apt-get clean
Снова повторил указанную вами процедуру установки из временного репозитория, и всё повторяется. Что я мог cделать не так? Что я мог упустить или пропустить?
Comment 15 Aleksei Kalinin 2023-06-16 17:28:57 MSK
Евгений, спасибо за комментарии!
Судя по описанию со страницы руководства модуля, формат aaf, которым Вы пользовались, всё еще находится в разработке и ручаться за его полноценную работоспособность нет возможности.
https://opentimelineio.readthedocs.io/en/latest/tutorials/adapters.html

Модуль OpenTimelineIO обещает работу с форматами в режимах импорта-экспорта:
OTIO import adapters: "*.aaf *.ale *.edl *.fcpxml *.kdenlive *.m3u8 *.ma *.mb *.otio *.otiod *.otioz *.xges *.xml " 
OTIO export adapters: "*.aaf *.ale *.edl *.fcpxml *.kdenlive *.m3u8 *.ma *.mb *.otio *.otiod *.otioz *.rv *.svg *.xges *.xml "

Как уже писал, некоторые проприетарные, а некоторые работают в зависимости от состава проекта. На данный момент в режиме экспорта проверена работа форматов: .ale .otio .otiod .otioz .svg .xges .xml

Стоит отметить некоторую особенность интерфейса kdenlive, которая выглядит крайне не очевидной.
Для экспорта в необходимый формат, необходимо снять галочку “Автоматически выбирать формат .aaf” и в названии проекта указать расширение из доступного списка. По расширению модуль понимает какой адаптер использовать для экспорта.
Что примечательно, в русской локали, в отличии от en_US.UTF-8,
 в поле “Фильтр” доступные форматы не отображаются.
Comment 16 Aleksei Kalinin 2023-10-03 16:45:38 MSK
@e.semyonov Пакет собран. На данный момент OpenTimelineIO находится в sisyphus.
https://packages.altlinux.org/en/sisyphus/srpms/python3-module-OpenTimelineIO/
Тестируйте, считаю задача выполнена. Если буду замечания пишите.