Melt 抛出“属性 没有服务 'property'”

Melt throws “Property without service 'property'”

当使用 melt 7.1.0 构建某些 mlt 文件时,它们 运行 很好,但是当使用 melt 6.24.0 构建它们时,错误消息

[producer_xml] Property without service 'property'?
[producer_xml] Property without service 'property'??

出现任意次数。下面是一个精确两次显示此警告的最小工作示例:

<?xml version="1.0"?>
<mlt>
    <profile width="1920" height="1080"/>
    <chain id="chain0">
        <property name="resource">mwe-in.mp4</property>
    </chain>
    <playlist id="playlist0">
        <entry producer="chain0"/>
    </playlist>
</mlt>

此错误的来源是什么?如何修复?

关于属性的文档相当稀疏,尤其是似乎没有提到 属性 拥有服务意味着什么。然而,检查没有服务的属性仍然在当前代码中(尽管我还没有检查代码是否已经死了)。

警告

在写这个答案之前,我还没抽空看结果。因此,没有进一步的警告,但是通过以下方法,只会生成黑色(和无声)视频。

旧答案

虽然我对 MLT 框架的内部结构了解不够,甚至对起源一无所知,但我设法通过手动重新排序 mlt 文件来解决这个问题。在我的例子中,当任何 playlist 标签被移动到文件的第一个 chain 标签之前时,错误就会消失。在 MWE 中,可以这样避免错误:

<?xml version="1.0"?>
<mlt>
    <profile width="1920" height="1080"/>
    <playlist id="playlist0">
        <entry producer="chain0"/>
    </playlist>
    <chain id="chain0">
        <property name="resource">mwe-in.mp4</property>
    </chain>
</mlt>

链服务已在 7.0.0 中添加 - 它们在 6.24.0 中尚不支持。

XML 在 2.24.0 中将不起作用,因为它使用链。如果您不需要使用 chain/link 功能,您可以将“chain”更改为“producer”以使其正常工作。