28 April 2022

Vantage CML Playlist File

Added ability to use CML file as source files description.

You can use a CML (Content Markup Language) playlist file as instruction set for a job request

The Vantage CML file is a specialized playlist format that contains a collection of hosted source media locations and instructions for media processing, such as timed video timelines, effects and layers. Availability of source media locations within a CML file will be validated before processing begins.

<?xml version="1.0"?>
<query>
    <userid><<id>></userid> <!-- required -->
    <userkey><<key>></userkey> <!-- required -->
    <action>AddMedia</action> <!-- required -->
    <cml_source>[CMLSourceFile]</cml_source>
    <format>
        <output>[output]</output> <!-- required -->
        <!-- format params -->
    </format>
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "AddMedia", // required
        "cml_source": "[CMLSourceFile]", // required
        "format": {
            "output": "[output]" // required
            // format parameters
        }
    }
}
ParameterDescriptionAllowed ValuesDefault Value
cml_sourceCML source file URLValid URLnone

CML File Structure

🚧

CML Features implementation

CML file as source description is in beta status and some CML features not implemented yet.

<?xml version="1.0" encoding="utf-8" ?>
<Composition name="[CompositionName]" version="1.0" created="[CreatedDate]">
    <Source identifier="[SourceIdentifier]" timecode="[SourceTimecode]"> <!-- timecode not implemented -->
        <File location="[SourceLocationURL]"/>
        <Subtitle preserve708="[true|false]"/> <!-- Subtitle not implemented -->
    </Source>
    <Source identifier="[SourceIdentifier]" timecode="[SourceTimecode]"> <!-- timecode not implemented -->
        <File location="[SourceLocationURL]"/>
        <Subtitle preserve708="[true|false]"/> <!-- Subtitle not implemented -->
    </Source>
    <!-- ... -->
    <Source identifier="[SourceIdentifier]" timecode="[SourceTimecode]"> <!-- timecode not implemented -->
        <!-- Source Params -->
    </Source>
    <Sequence>
        <Segment>
            <Canvas duration="[DurationTimeCode]@[FrameRate]"/>
            <!-- blank frames -->
        </Segment>
        <Segment instructions="[SegmentInstructions]"> <!-- instructions not implemented -->
            <Video source="[SourceIdentifier]">
                <Head>
                    <Edit mode="[TimeCodeMode]" time="[StartTimeCode]@[FrameRate]"/> <!-- mode not implemented -->
                    <!-- video start time -->
                </Head>
                <Tail>
                    <Edit mode="[TimeCodeMode]" time="[StartTimeCode]@[FrameRate]"/> <!-- mode not implemented -->
                    <!-- video end time -->
                </Tail>
            </Video>
            <Image layout="[Layout]"
                   location="[OverlaySource]"
                   duration="[DurationTimeCode]@[FrameRate]"> <!-- layout not implemented -->
                <Head>
                    <Opacity level="[Opacity]%"/> <!-- Opacity not implemented -->
                    <Fade duration="[FadeTimeCode]@[FrameRate]" shape="linear"/> <!-- shape not implemented -->
                    <!-- overlay fade in time -->
                </Head>
                <Body>
                    <Opacity level="[Opacity]%"/> <!-- Opacity not implemented -->
                </Body>
                <Tail>
                    <Opacity level="[Opacity]%"/> <!-- Opacity not implemented -->
                    <Fade duration="FadeTimeCode]@[FrameRate]" shape="linear"/> <!-- shape not implemented -->
                    <!-- overlay fade out time -->
                </Tail>
            </Image>
        </Segment>
        <Segment instructions="[SegmentInstructions]"> <!-- instructions not implemented -->
            <!-- Segment Params -->
        </Segment>
    </Sequence>
</Composition>

Detect Silent Black Frames

Added ability to detect and remove only silent black frames.

<?xml version="1.0"?>
<query>
    <userid><<id>></userid> <!-- required-->
    <userkey><<key>></userkey> <!-- required-->
    <action>[Action]</action> <!-- required-->
    <source>[SourceFile]</source> <!-- required-->
    <format>
        <output>[output]</output> <!-- required -->
        <cut_black>
            <enable>yes</enable>
            <silence_check>[yes|no]</silence_check>
            <silence_threshold>[SilenceThreshold]</silence_threshold>
            <!-- cut_black params -->
        </cut_black>
        <!-- format parameters -->
    </format>
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "[Action]", // required
        "source": "[SourceFile]", // required
        "format": {
            "output": "[output]", // required
            "cut_black": {
                "enable": "yes",
                "silence_check": "[yes|no]",
                "silence_threshold": "[SilenceThreshold]"
                // cut_black params
            }
            // format parameters
        }
    }
}
ParameterDescriptionAllowed ValuesDefault Value
silence_checkDetect black frames only if audio recognized as silentyes, nono
silence_thresholdNoise tolerance in dBInteger number-60

Default Main audio service identifier in EAC3 Descriptor

Added option to unset audio service identifier in EAC3 Descriptor

<?xml version="1.0"?>
<query>
    <userid><<id>></userid> <!-- required-->
    <userkey><<key>></userkey> <!-- required-->
    <action>[Action]</action> <!-- required-->
    <source>[SourceFile]</source> <!-- required-->
    <format> <!-- required -->
        <output>mpegts</output> <!-- required -->
        <atsc_eac3_descriptor>
            <mainid>[ServiceID]</mainid>
            <!-- atsc_eac3_descriptor params -->
        </atsc_eac3_descriptor>
        <audio_stream>
            <atsc_eac3_descriptor>
                <mainid>[ServiceID]</mainid>
                <!-- atsc_eac3_descriptor params -->
            </atsc_eac3_descriptor>
            <!-- audio_stream params -->
        </audio_stream>
        <audio_stream>
            <!-- audio_stream params -->
        </audio_stream>
    </format>
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "[Action]", // required
        "source": "[SourceFile]", // required
        "format": {
            "output": "mpegts", // required
            "atsc_eac3_descriptor": {
                "mainid": "[ServiceID]"
                // atsc_eac3_descriptor params
            },
            "audio_stream": [
                {
                    "atsc_eac3_descriptor": {
                        "mainid": "[ServiceID]"
                        // atsc_eac3_descriptor params
                    }
                    // audio_stream params
                },
                {
                    // audio_stream params
                }
            ]
        }
    }
}
<?xml version="1.0"?>
<query>
    <userid><<id>></userid> <!-- required-->
    <userkey><<key>></userkey> <!-- required-->
    <action>[Action]</action> <!-- required-->
    <source>[SourceFile]</source> <!-- required-->
    <format> <!-- required -->
        <output>advanced_hls</output> <!-- required -->
        <destination>[DestFile]</destination> <!-- required -->
        <stream>
            <atsc_eac3_descriptor>
                <mainid>[ServiceID]</mainid>
                <!-- atsc_eac3_descriptor params -->
            </atsc_eac3_descriptor>
            <audio_stream>
                <atsc_eac3_descriptor>
                    <mainid>[ServiceID]</mainid>
                    <!-- atsc_eac3_descriptor params -->
                </atsc_eac3_descriptor>
                <!-- audio_stream params -->
            <audio_stream>
            <!-- stream params -->
        </stream>
        <stream>
            <!-- stream params -->
        </stream>
    </format>
</query>
{
    "query": {
        "userid": "<<id>>", // required
        "userkey": "<<key>>", // required
        "action": "[Action]", // required
        "source": "[SourceFile]", // required
        "format": {
            "output": "advanced_hls", // required
            "stream": [
                {
                    "atsc_eac3_descriptor": {
                        "mainid": "[ServiceID]"
                        // atsc_eac3_descriptor params
                    },
                    "audio_stream": {
                        "atsc_eac3_descriptor": {
                            "mainid": "[ServiceID]"
                            // atsc_eac3_descriptor params
                        }
                        // audio_stream params
                    }
                    // stream params
                },
                {
                    // stream params
                }
            ]
        }
    }
}
ParameterDescriptionAllowed ValuesDefault Value
mainidMain audio service identifierno, 0, 1, 2, 3, 4, 5, 6, 7no