You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenTimelineIO转换FCP文件至Kdenlive时遇SerializableCollection错误

问题核心

从修复后的FCP XML导入OpenTimelineIO后得到的是SerializableCollection对象(内部包含目标Timeline),但PyPI版本的Kdenlive适配器仅支持直接处理单个Timeline对象,调用input_otio.duration()时,SerializableCollection无此方法,触发AttributeError。

解决方法

方法1:修改XML文件(无需改动代码)

打开ep4_fixed.fcpxml,找到包裹时间线的顶层集合节点(如<library>),直接提取其中的<timeline>节点,保存为新的XML文件。用新文件执行otioconvert,此时导入结果为单个Timeline,适配器可正常处理。

方法2:修复Kdenlive适配器源码

找到PyPI安装的适配器文件(路径:/usr/local/lib/python3.11/site-packages/opentimelineio_contrib/adapters/kdenlive.py),修改write_to_string函数开头,增加SerializableCollection的处理逻辑:

def write_to_string(input_otio, **kwargs):
    # 处理SerializableCollection,提取内部的Timeline对象
    if isinstance(input_otio, otio.schema.SerializableCollection):
        # 遍历集合,取第一个Timeline
        for item in input_otio:
            if isinstance(item, otio.schema.Timeline):
                input_otio = item
                break
    
    rate = input_otio.duration().rate
    # 后续代码保持不变

保存修改后,重新运行转换命令即可。

方法3:正确安装带Kdenlive适配器的源码版

主分支OTIO源码不含Kdenlive适配器,因为它属于独立的opentimelineio-contrib项目,安装步骤:

  1. 卸载现有包:
    pip uninstall opentimelineio opentimelineio-contrib -y
    
  2. 克隆并安装contrib项目:
    git clone https://github.com/PixarAnimationStudios/OpenTimelineIO-contrib.git
    cd OpenTimelineIO-contrib
    pip install -e .
    
  3. 之后可按方法2修改源码,或提交PR修复兼容性问题。
验证

运行转换命令:

otioconvert -i /path/to/modified_file.fcpxml -o /path/to/output.kdenlive

无报错后,直接在Kdenlive中导入生成的.kdenlive文件。

内容的提问来源于stack exchange,提问作者ginjaemocoes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:41:07