New XML format questions

amindfv at mailbox.org amindfv at mailbox.org
Wed Aug 25 18:35:53 BST 2021


Hi Camille, thanks for the response! Hopefully the devs will be able to chime in with more detail.

The issues in this case are definitely Kdenlive-specific: MLT actually does have a DTD [0], which I've helped update a couple times in order to keep in-the-wild .kdenlive files compliant with the MLT spec. [1][2] I'm able to parse .kdenlive files as MLT XML, but I can't make sense of the Kdenlive-specific features below.

Thanks,
Tom

[0] https://github.com/mltframework/mlt/blob/master/src/modules/xml/mlt-xml.dtd
[1] https://sourceforge.net/p/mlt/mailman/message/37335893/
[2] https://sourceforge.net/p/mlt/mailman/message/37125973/


On Wed, Aug 25, 2021 at 05:36:21PM +0200, Camille wrote:
> Hi Tom,
> 
> I have no precise answers to your questions, so that's just a quick message
> to let you feel not completely on your own on this topic, which is a complex
> one and lacks documentation indeed.
> 
> Kdenlive's file format  depends a lot on MLT's file format, which is also
> lacking documentation.  Typically, there is no validating DTD or schema.
> 
> Maybe devs will have time to chime in to give you more precise details on
> the points you raised.
> 
> Cheers,
> 
> Camille
> 
> 
> Le 25/08/2021 à 03:06, amindfv at mailbox.org a écrit :
> > Or is there a better place to ask questions like this than the mailing list?
> > 
> > Thanks,
> > Tom
> > 
> > On Sat, Aug 21, 2021 at 12:20:04PM -0600, amindfv at mailbox.org wrote:
> > > Can anyone help with this? The Kdenlive File Format docs (https://community.kde.org/Kdenlive/Development/File_format) are out of date and don't discuss any of the below.
> > > 
> > > Thanks!
> > > Tom
> > > 
> > > On Thu, Aug 19, 2021 at 10:34:51PM -0600, amindfv at mailbox.org wrote:
> > > > With the new Kdenlive version I've got (20.12.3), there are a bunch of new things I'm trying to get my head around in the project XML. Here's a snippet with a few of them:
> > > > 
> > > >      <playlist id="playlist6">
> > > >       <entry producer="1" in="00:00:00.000" out="00:00:22.042">
> > > >        <property name="kdenlive:id">2</property>
> > > >       </entry>
> > > >       <blank length="00:00:01.042"/>
> > > >       <entry producer="producer0" in="00:00:01.125" out="00:00:04.958">
> > > >        <property name="kdenlive:id">3</property>
> > > >       </entry>
> > > >       <blank length="00:00:01.208"/>
> > > >       <entry producer="1" in="00:00:00.000" out="00:00:04.958">
> > > >        <property name="kdenlive:id">2</property>
> > > >       </entry>
> > > >       <entry producer="producer0" in="00:00:00.000" out="00:00:01.083">
> > > >        <property name="kdenlive:id">3</property>
> > > >       </entry>
> > > >      </playlist>
> > > >      <playlist id="playlist7"/>
> > > >      <tractor id="tractor3" in="00:00:00.000" out="00:00:34.292">
> > > >       <property name="kdenlive:track_name">Video 1</property>
> > > >       <property name="kdenlive:trackheight">71</property>
> > > >       <property name="kdenlive:timeline_active"/>
> > > >       <property name="kdenlive:thumbs_format"/>
> > > >       <property name="kdenlive:audio_rec"/>
> > > >       <track producer="playlist6"/>
> > > >       <track producer="playlist7"/>
> > > >      </tractor>
> > > > 
> > > > The above makes a Kdenlive track ("Video 1"). In previous versions, this would have been represented as a single playlist. Now there seem to be two playlists - one empty - fed into a tractor.
> > > > 
> > > > Here's an example of the new grouping syntax as well:
> > > > 
> > > >      <property name="kdenlive:docproperties.groups">[
> > > >        {
> > > >            "children": [
> > > >                {
> > > >                    "data": "3:555",
> > > >                    "leaf": "clip",
> > > >                    "type": "Leaf"
> > > >                },
> > > >                {
> > > >                    "data": "0:555",
> > > >                    "leaf": "clip",
> > > >                    "type": "Leaf"
> > > >                }
> > > >            ],
> > > >            "type": "AVSplit"
> > > >        }
> > > >      ]
> > > >      </property>
> > > > 
> > > > 
> > > > I have many questions. Help with any of them is much appreciated:
> > > > 
> > > >    - Why are there two playlists for "Video 1"? What is the purpose of the empty "playlist7"?
> > > >    - Entries now have a "kdenlive:id" property. What is this ID? Note in the above the IDs are doubled: there are two different Entries with ID 2, and two with ID 3.
> > > >    - In the group syntax, what is the "data" property? As a guess, is it a kdenlive ID and a number of frames from the beginning of the track?
> > > >    - What group types are there other than "AVSplit" and "Leaf"? Where can I find a list of the types and their meanings?
> > > >    - What "leaf" types are there other than "clip"?
> > > > 
> > > > Thanks,
> > > > Tom


More information about the kdenlive mailing list