Melt throws “Property without service 'property'”

60 Views Asked by At

When building certain mlt files with melt 7.1.0, they run just fine, but when building them with melt 6.24.0, the error message

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

appears any number of times. A minimal working example showing this warning precisely twice is the following:

<?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>

What is the origin of this error? How can it be fixed?

The documentation is rather sparse on properties and in particular does not seem to mention what it would even mean for a property to have a service. The check for properties without services however is still in the current code (though I have not checked whether the code is dead by now).

2

There are 2 best solutions below

1
Brian On BEST ANSWER

Chain services were added in 7.0.0 - they were not supported in 6.24.0 yet.

The XML will not work in 2.24.0 because it uses a chain. You can change "chain" to "producer" to make it work if you do not need to use chain/link features.

0
Hermann Döppes On

Caveat

Before writing this answer, I had not yet gotten around to look at the result. Thus, it stands that no further warnings are given, but with the following approach, only black (and silent) video will be generated.

Old Answer

While I do not understand enough about the internals of the MLT framework to have even an inkling about the origins, I managed to work around this problem by manually reordering the mlt files. In my cases, the error disappeared consistenly when any playlist tag was moved before the first chain tag of the file. In the MWE the error can thus be avoided like this:

<?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>