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
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
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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "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.
<query> <userid>[UserID]</userid> <!-- required--> <userkey>[UserKey]</userkey> <!-- required--> <action>[Action]</action> <!-- required--> <format> <rotate>[RotateDegree]</rotate> <set_rotate>[RotateMeta]</set_rotate> </format> </query>
{ "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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "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.
<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>
{ "query": { "userid": "[UserID]", "userkey": "[UserKey]", "action": "[Action]", "format": { "burnin_timecode": { "start": "[Timecode|copy]", "left": "[LeftPosition]", "right": "[RightPosition]", "top": "[ToptPosition]", "bottom": "[BottomPosition]" } } } }