Colossyan API Documentation

Seamless concatenation

Seamless concatenation

Seamless concatenation offers a way to piece scenes together without having cuts between similar objects.

Example

It is easier to understand what seeamless concatenation does by looking at an example:

Definition

It is often the case that we would like continuity to be preserved in some of our tracks, between sequential scenes. Consider the following case:

  • A presenter introducing multiple subjects, while staying stationary.

  • We would like to divide the video into multiple scenes based on the subjects on the video, to allow an easy customization of additional tracks (such as images and videos) for each subject.

  • But it would be nice if we could avoid the cut between each scene. This would make the video feel like a single video instead of multiple little ones pieced together.

This is where seamless concatenation comes into place.

Seamless concatenation allows you to "continue" a media file from where it ended in the following scene. Therefore eliminating cuts and repetition.

Usage

You can use seamless concatenation between tracks upon fulfilling the following criterias:

  • The tracks are in sequential scenes
  • The tracks have the same type
  • The tracks have the same content
    • In case of a video track, the same videoUrl
    • In case of an actor track, the same actor
    • In case of an image track, the same imageUrl
  • The first track lasts until the end of the scene it is in (endTimeGap is not set)
  • The following track starts in the beginning of its scene (startTimeGap is not set)

You indicate that you would like to seamlessly concatenate two tracks in adjacent scenes by setting the sequentialBlendId on both of them to the same value.

As long as you fulfill the necessary criterias for the concatenation, you can use seamless concatenation through multiple scenes, not just two.

const job = {
videoCreative: {
settings: {
name: "Simple video with a two scenes",
videoSize: { height: 1080, width: 1920 },
},
scenes: [
{
name: "First scene with an actor talking about the first subject",
intrinsicDurationTrackReference: "speech",
tracks: [
{
type: "actor",
referenceId: "speech",
position: { x: 200, y: 200 }, // From the top left in pixels
size: { height: 680, width: 1520 }, // In pixels
text: "The first subject is incredibly interesting, but how about talking of something",
speakerId: "en-GB-RyanNeural",
actor: "ryan",
sequentialBlendId: "some-id-of-your-choice",
},
],
},
{
name: "Second scene with an actor talking about the second subject",
intrinsicDurationTrackReference: "speech",
tracks: [
{
type: "actor",
referenceId: "speech",
position: { x: 200, y: 200 }, // From the top left in pixels
size: { height: 680, width: 1520 }, // In pixels
text: "Alright then. This is the second subject. Notice the lack of cut between them on the actor.",
speakerId: "en-GB-RyanNeural",
actor: "ryan",
sequentialBlendId: "some-id-of-your-choice",
},
],
},
],
},
};
Edit this page on GitHub