Skip to content

A module to construct Media Lovin' Toolkit (MLT) projects and export them in XML.

License

Notifications You must be signed in to change notification settings

DavidRobertAnsart/mlt-xml

Repository files navigation

mlt-xml

This module will construct Media Lovin' Toolkit (MLT) projects and export them in XML.

It has typescript definitions for the ressources used by the framework. You can define your MTL project with A JSON object and export it to XML.

Install

yarn add mlt-xml

or with npm

npm install mlt-xml --save

Example

import { mltToXml } from 'mlt-xml';

console.log(
  mltToXml({
    title: 'watermarkOnVideo',
    elements: [
      {
        name: 'producer',
        attributes: {
          id: 'video',
          in: '0',
          out: '1000',
          resource: 'clip.mpeg',
        },
      },
      {
        name: 'producer',
        attributes: {
          id: 'watermark',
          in: '0',
          out: '1000',
          resource: 'watermark.png',
          mlt_service: 'qimage',
          length: '1000',
        },
      },
      {
        name: 'tractor',
        attributes: {
          id: 'tractor0',
        },
        elements: [
          {
            name: 'multitrack',
            attributes: {
              id: 'multitrack0',
            },
            elements: [
              {
                name: 'playlist',
                attributes: {
                  id: 'video_track',
                  in: '0',
                  out: '1000',
                },
                elements: [
                  {
                    name: 'entry',
                    attributes: {
                      producer: 'video',
                      in: '0',
                      out: '1000',
                    },
                  },
                ],
              },
              {
                name: 'playlist',
                attributes: {
                  id: 'watermark_track',
                  in: '0',
                  out: '1000',
                },
                elements: [
                  {
                    name: 'entry',
                    attributes: {
                      producer: 'watermark',
                      in: '0',
                      out: '1000',
                    },
                  },
                ],
              },
            ],
          },
          {
            name: 'transition',
            attributes: {
              id: 'transition0',
              a_track: 0,
              b_track: 1,
              geometry: '85%/5%:10%x10%',
              factory: 'loader',
              progressive: 1,
              mlt_service: 'composite',
              fill: 1,
              sliced_composite: 1,
            },
          },
        ],
      },
    ],
  }),
);

Returns:

<?xml version="1.0" encoding="utf-8"?>
<mlt title="watermarkOnVideo">
  <producer id="video" in="0" out="1000">
    <property name="resource">clip.mpeg</property>
  </producer>
  <producer id="watermark" in="0" out="1000">
    <property name="resource">watermark.png</property>
    <property name="mlt_service">qimage</property>
    <property name="length">1000</property>
  </producer>
  <tractor id="tractor0">
    <multitrack id="multitrack0">
      <playlist id="video_track" in="0" out="1000">
        <entry producer="video" in="0" out="1000"/>
      </playlist>
      <playlist id="watermark_track" in="0" out="1000">
        <entry producer="watermark" in="0" out="1000"/>
      </playlist>
    </multitrack>
    <transition id="transition0">
      <property name="a_track">0</property>
      <property name="b_track">1</property>
      <property name="geometry">85%/5%:10%x10%</property>
      <property name="factory">loader</property>
      <property name="progressive">1</property>
      <property name="mlt_service">composite</property>
      <property name="fill">1</property>
      <property name="sliced_composite">1</property>
    </transition>
  </tractor>
</mlt>

Contributing

Contributions, issues and feature requests are welcome!

License

Copyrigth 2022 David Robert-Ansart
This project is MIT licensed.

About

A module to construct Media Lovin' Toolkit (MLT) projects and export them in XML.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published