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
- In case of a video track, the same
- 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: "omar", 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: "omar", sequentialBlendId: "some-id-of-your-choice", }, ], }, ], },};