Editing & Graphics

Customize Your VOD Content at Scale

Whether inserting custom logos, concatenating source files, adding customer-shot video or text overlays, or muxing closed caption files, you’ll experience more powerful, more efficient playout workflows on Vantage Gateway.

 

Customization Tools for Your
File-Based Workflow

EDC_Image-Image-Conversion-header.png

Automated cloud-based editing and graphics insertion within the processing workflow lets you customize content after you’ve output it as a file. We offer a suite of features initiated via our robust API, including:

 

Video Watermarking

watermarking.png

Automated watermarking through our API speeds the addition of logos, credits or imagery to large content libraries. Simply specify the source, opacity and X and Y coordinates to position your watermark.

XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <format> <!-- Format fields --> <logo> <logo_source>[LogoURL]</logo_source> <!-- required--> <logo_x>[LogoLeft]</logo_x> <logo_y>[LogoTop]</logo_y> <logo_mode>[LogoMode]</logo_mode> <logo_threshold>[LogoTreshold]</logo_threshold> <logo_transparent>[LogoTransparent]</logo_transparent> <!-- logo_transparent is alias for logo_threshold --> </logo> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "format": { "logo": { "logo_source": "[LogoURL]", "logo_x": "[LogoLeft]", "logo_y": "[LogoTop]", "logo_mode": "[LogoMode]", "logo_threshold": "[LogoTreshold]", "logo_transparent": "[LogoTransparent]" } } } }


Concatenation

Concatenation allows you to combine several videos into one file. We support concatenation of video from multiple source locations and multiple video formats.

Concatenation.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>[Action]</action> <mediaid>[MediaID]</mediaid> <source>[SourceFile]</source> <source>[SourceFile1]</source> <!-- if multiple SourceFile added, they will be concatenated --> <!-- Source fields --> <source>[SourceFileN]</source> <!-- Format fields --> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "mediaid": "[MediaID]", "source": [ "[SourceFile]", "[SourceFile1]", "[SourceFileN]" ] } }


Thumbnail Creation

The two most common thumbnail formats are VTT and JPG. We support the creation of both. Our API allows you to set a time interval for captures, as well as a percentage interval. You can also control the width and height of the thumbnail capture.

thumbnails_vtt.png
thumbnails_sprite.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <source>[SourceFile]</source> <!-- required--> <format> <output>thumbnail</output> <!-- required--> <time>[Time]</time> <width>[Width]</width> <height>[Size]</height> <use_vtt>[yes|no]</use_vtt> <vtt_line_size>[LineSize]</vtt_line_size> <vtt_max_lines>[MaxLinesPerTile]</vtt_max_lines> <vtt_destination>[VTTDestination]</vtt_destination> <public_url>[PublicURL]</public_url> <public_vtt_url>[VTTManifestPublicURL]</public_vtt_url> <quality>[Quality]</quality> <destination>[DestFile]</destination> <!-- Format params --> </format> </query>
JSON
{ "query": { "userid": "[UserID]", // required "userkey": "[UserKey]", // required "action": "[Action]", // required "source": "[SourceFile]", // required "format": { "output": "thumbnail", // required "time": "[Time]", "width": "[Width]", "height": "[Size]", "use_vtt": "[yes|no]", "vtt_line_size": "[LineSize]", "vtt_max_lines": "[MaxLinesPerTile]", "vtt_destination": "[VTTDestination]", "public_url": "[PublicURL]", "public_vtt_url": "[VTTManifestPublicURL]", "quality": "[Quality]", "destination": "[DestFile]" } } }


Video Rotation

Our API lets you rotate the orientation of your source video.

video_rotation.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <format> <rotate>[RotateDegree]</rotate> <set_rotate>[RotateMeta]</set_rotate> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "format": { "rotate": "[RotateDegree]", "set_rotate": "[RotateMeta]" } } }


Video Cropping

Our cropping feature allows you to select top, bottom, left and right crop dimensions of any source content.

Video-Cropping.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <format> <crop_top>[CropTop]</crop_top> <crop_right>[CropRight]</crop_right> <crop_bottom>[CropBottom]</crop_bottom> <crop_left>[CropLeft]</crop_left> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "format": { "crop_top": "[CropTop]", "crop_right": "[CropRight]", "crop_bottom": "[CropBottom]", "crop_left": "[CropLeft]" } } }


Video Clipping

Easily clip out a portion of your source video by specifying a starting point and duration in seconds, or by specifying start and finish using timecode with frames (HH:MM:SS:FF) or whole integers.

XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <format> <!-- Format fields --> <start>[StartTimecode]</start> <finish>[FinishTimecode]</finish> <duration>[Duration]</duration> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "format": { "start": "[StartTimecode]", "finish": "[FinishTimecode]", "duration": "[Duration]" } } }


Video Fading

Our fading capability adds fade to black or fade into the next piece of content. Just set the fade in and fade out starting times, and the duration for each.

video_fading.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <format> <fade_in>[FadeInStamp]</fade_in> <fade_out>[FadeOutStamp]</fade_out> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "format": { "fade_in": "[FadeInStamp]", "fade_out": "[FadeOutStamp]" } } }


Muxing

Multiplexing — merging multiple streams of video with audio or closed captions — is currently supported for two sources.

EDC_Muxing.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required --> <userkey>[UserKey]</userkey> <!-- required --> <action>AddMedia</action> <!-- required --> <source>[SourceFile1]</source> <!-- required --> <source> <url>[SourceFile2]</url> <url>[AdditionalSourceFile2]</url> <audio_stream> <use_stream_id>[SourceMediaAudioStreamID]</use_stream_id> <natural_order>[yes|no]</natural_order> <language>[Language]</language> <channel> <id>[OutputChannelID]</id> <in> <id>[SourceTrackID:SourceChannelID]</id> <gain>[ChannelGainLevel]</gain> </in> <in> <!-- Input channel params --> </in> </channel> <channel> <!-- Audio channel params --> </channel> <normalize>[yes|no]</normalize> <layout>[AudioLayoutName]</layout> <start>[StartTimecode]</start> <finish>[FinishTimecode]</finish> <duration>[Duration]</duration> </audio_stream> <!-- Multiple audio streams --> <audio_stream> <!-- Audio stream params --> </audio_stream> </source> <source> <url>[SourceFile3]</url> <!-- Source params --> </source> <format> <!-- required --> <!-- Format params --> </format> </query>
JSON
{ "query": { "userid": "[UserID]", // required "userkey": "[UserKey]", // required "action": "AddMedia", // required "source": [ // required "[SourceFile1]", { "url": [ "[SourceFile2]", "[AdditionalSourceFile2]" ], "audio_stream": [ { "use_stream_id": "[SourceMediaAudioStreamID]", "natural_order": "[yes|no]", "language": "[Language]", "channel": [ { "id": "[OutputChannelID]", "in": [ { "id": "[SourceTrackID:SourceChannelID]", "gain": "[ChannelGainLevel]" }, { // Input channel params } ] }, { // Audio channel params } ], "normalize": "[yes|no]", "layout": "[AudioLayoutName]", "start": "[StartTimecode]", "finish": "[FinishTimecode]", "duration": "[Duration]" }, { //Audio stream params } ] }, { "url": "[SourceFile3]" // Source params } ], "format": { // required // Format params } } }


Embed Metadata

We support the following metadata parameters: Author, Title, Album, Description, Copyright and Copy.

XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <source>[SourceFile]</source> <!-- required--> <format> <output>[OutputFormat]</output> <!-- required--> <metadata> <title>[Title]</title> <copyright>[Copyright]</copyright> <author>[Author]</author> <description>[Description]</description> <album>[Album]</album> <service_name>[ServiceName]</service_name> <service_provider>[ServiceProvider]</service_provider> </metadata> </format> <!-- Format params --> </query>
JSON
{ "query": { "userid": "[UserID]", // required "userkey": "[UserKey]", // required "action": "[Action]", // required "source": "[SourceFile]", // required "format": { "output": "[OutputFormat]", // required "metadata": { "title": "[Title]", "copyright": "[Copyright]", "author": "[Author]", "description": "[Description]", "album": "[Album]", "service_name": "[ServiceName]", "service_provider": "[ServiceProvider]" } // format params } } }


Split Screen

Combine several sources into one split-screen video.

EDC_Split-Screen-62.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <!-- Main fields --> <source>[SourceFile1]</source> <!-- ... --> <source>[SourceFileN]</source> <split_screen> <columns>[ColumnsNumber]</columns> <rows>[RowsNumber]</rows> <padding_left>[PaddingLeftInPx]</padding_left> <padding_right>[PaddingRightInPx]</padding_right> <padding_bottom>[PaddingBottomInPx]</padding_bottom> <padding_top>[PaddingTopInPx]</padding_top> </split_screen> <format> <!-- Format fields --> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "source": [ "[SourceFile1]", "[SourceFileN]" ], "split_screen": { "columns": "[ColumnsNumber]", "rows": "[RowsNumber]", "padding_left": "[PaddingLeftInPx]", "padding_right": "[PaddingRightInPx]", "padding_bottom": "[PaddingBottomInPx]", "padding_top": "[PaddingTopInPx]" }, "format": "" } }


Text, Audio & Video Overlays

If you need to place a full motion video or digital graphics, text or audio over existing video, our API automates the process. Just select your source, set the X and Y axis of the overlay, the size, the start time and the duration.

EDC_Video-overlay-63,png.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <source>[SourceFile]</source> <!-- required--> <format> <!-- Format params --> <overlay> <overlay_start>[Overlay1StartInSeconds]</overlay_start> <overlay_duration>[Overlay1DurationInSeconds]</overlay_duration> <overlay_fade_in>[Overlay1FadeInInSeconds]</overlay_fade_in> <overlay_fade_out>[Overlay1FadeOutInSeconds]</overlay_fade_out> <!-- Video overlay params --> </overlay> <!-- ... --> <overlay> <!-- Video overlay params --> </overlay> <audio_overlay> <overlay_start>[Overlay1StartInSeconds]</overlay_start> <overlay_duration>[Overlay1DurationInSeconds]</overlay_duration> <overlay_fade_in>[Overlay1FadeInInSeconds]</overlay_fade_in> <overlay_fade_out>[Overlay1FadeOutInSeconds]</overlay_fade_out> <!-- Audio overlay params --> </audio_overlay> <!-- ... --> <audio_overlay> <!-- Audio overlay params --> </audio_overlay> <text_overlay> <overlay_start>[Overlay1StartInSeconds]</overlay_start> <overlay_duration>[Overlay1DurationInSeconds]</overlay_duration> <overlay_fade_in>[Overlay1FadeInInSeconds]</overlay_fade_in> <overlay_fade_out>[Overlay1FadeOutInSeconds]</overlay_fade_out> <!-- Text overlay params --> </text_overlay> <!-- ... --> <text_overlay> <!-- Text overlay params --> </text_overlay> </format> </query>
JSON
{ "query": { "userid": "sdf", // required "userkey": "sdf", // required "action": "[Action]", // required "source": "[SourceFile]", // required "format": { "overlay": [ { "overlay_start": "[Overlay1StartInSeconds]", "overlay_duration": "[Overlay1DurationInSeconds]", "overlay_fade_in": "[Overlay1FadeInInSeconds]", "overlay_fade_out": "[Overlay1FadeOutInSeconds]" // Video overlay params }, { // Video overlay params } ], "audio_overlay": [ { "overlay_start": "[Overlay1StartInSeconds]", "overlay_duration": "[Overlay1DurationInSeconds]", "overlay_fade_in": "[Overlay1FadeInInSeconds]", "overlay_fade_out": "[Overlay1FadeOutInSeconds]" // Audio overlay params }, { // Audio overlay params } ], "text_overlay": [ { "overlay_start": "[Overlay1StartInSeconds]", "overlay_duration": "[Overlay1DurationInSeconds]", "overlay_fade_in": "[Overlay1FadeInInSeconds]", "overlay_fade_out": "[Overlay1FadeOutInSeconds]" // Text overlay params }, { // Text overlay params } ] } } }


Image-to-Image Conversion

This editing feature allows you to both convert and resize your source image to a new format and or size. You have control over input and output formats, sizing, aspect ratio, image quality and embedded metadata.

EDC_Image-Image-Conversion-header.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <format> <!-- Format fields --> <output>image</output> <image_format>jpg</image_format> <!-- required--> <resize_method>resize</resize_method> <size>560x420</size> <keep_aspect_ratio>yes</keep_aspect_ratio> <quality>75</quality> <dpi>72</dpi> <sharpen_radius>1</sharpen_radius> <sharpen_sigma>0.5</sharpen_sigma> <remove_metadata>no</remove_metadata> <gravity>[northwest|north|northeast|west|center|east|southwest|south|southeast]</gravity> <shave>[9x12]</shave> <unsharp_radius>2.0</unsharp_radius> <unsharp_sigma>1.0</unsharp_sigma> <unsharp_gain>1.0</unsharp_gain> <unsharp_threshold>0.05</unsharp_threshold> <!-- Destination fields --> <destination>[DestFile]</destination> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "format": { "output": "image", "image_format": "jpg", "resize_method": "resize", "size": "560x420", "keep_aspect_ratio": "yes", "quality": "75", "dpi": "72", "sharpen_radius": "1", "sharpen_sigma": "0.5", "remove_metadata": "no", "gravity": "[northwest|north|northeast|west|center|east|southwest|south|southeast]", "shave": "[9x12]", "unsharp_radius": "2.0", "unsharp_sigma": "1.0", "unsharp_gain": "1.0", "unsharp_threshold": "0.05", "destination": "[DestFile]" } } }


Slideshow Creation

Easily convert an image library into a video slideshow by specifying your source images, and enable the slideshow output in our API.

EDC_slideshow-65.png
XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>AddMedia</action> <!-- required--> <source>http://www.example.com/Chrysanthemum.jpg</source> <source>http://www.example.com/Desert.jpg?duration=5</source> <source>http://www.example.com/Hydrangeas.jpg</source> <source>http://www.example.com/Jellyfish.jpg</source> <source>http://www.example.com/Koala.jpg</source> <source>http://www.example.com/Lighthouse.jpg</source> <source>http://www.example.com/Penguins.jpg</source> <source>http://www.example.com/Tulips.jpg</source> <source>http://www.example.com/music.wav</source> <slideshow>1</slideshow> <region>us-east-1</region> <split_screen/> <format> <output>mp4</output> <bitrate>2000k</bitrate> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "AddMedia", "source": [ "http://www.example.com/Chrysanthemum.jpg", "http://www.example.com/Desert.jpg?duration=5", "http://www.example.com/Hydrangeas.jpg", "http://www.example.com/Jellyfish.jpg", "http://www.example.com/Koala.jpg", "http://www.example.com/Lighthouse.jpg", "http://www.example.com/Penguins.jpg", "http://www.example.com/Tulips.jpg", "http://www.example.com/music.wav" ], "slideshow": "1", "region": "us-east-1", "split_screen": "", "format": { "output": "mp4", "bitrate": "2000k" } }


Burned-In Timecode

Add a timer to any video with this feature. Just specify the position on the screen and the starting time of the timer in our API.

XML
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <format> <burnin_timecode> <start>[Timecode|copy]</start> <left>[LeftPosition]</left> <right>[RightPosition]</right> <top>[ToptPosition]</top> <bottom>[BottomPosition]</bottom> <font_size>[FontSize]</font_size> </burnin_timecode> </format> </query>
JSON
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "format": { "burnin_timecode": { "start": "[Timecode|copy]", "left": "[LeftPosition]", "right": "[RightPosition]", "top": "[ToptPosition]", "bottom": "[BottomPosition]" } } } }