All Products
Search
Document Center

ApsaraVideo Media Processing:Set opening and ending parts during video merging

Last Updated:Aug 28, 2023

This topic provides the complete sample code for using ApsaraVideo Media Processing (MPS) SDK for Node.js to set the opening and ending parts during video merging.

Sample code

import Console from '@alicloud/tea-console';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Env from '@alicloud/darabonba-env';
import Util from '@alicloud/tea-util';
import mts20140618, * as $mts20140618 from '@alicloud/mts20140618';
import * as $tea from '@alicloud/tea-typescript';

/**
 * Install Node.js 8.x or later. 
 * Install Alibaba Cloud SDK for Node.js. npm install @alicloud/pop-core --save
 * Install the Alibaba Cloud SDK Credentials package.   npm install @alicloud/credentials
 * Install MPS SDK for Node.js. npm install --save @alicloud/mts20140618
 * 
 */
/** The ID of the MPS queue. You can log on to the MPS console to view the ID. */
var pipelineId = "d7cedd984be7dd63395c*****"; 
/** The ID of the transcoding template. Select a transcoding template based on your business requirements. */
var templateId = "S00000001-100020"; 
var ossLocation = "oss-cn-shanghai";
var bucket = "<bucket name>";
var ossInputObject = "input.mp4";
var ossOutputObject = "merged.mp4";
var headObject = "head.mp4";
var tailObject = "tail.mp4";


export default class Client {

/** Initialize the SDK client. */
static async createClient(accessKeyId: string, accessKeySecret: string, regionId: string): Promise<mts20140618> {
    let config = new $OpenApi.Config({ });
    config.accessKeyId = accessKeyId;
    config.accessKeySecret = accessKeySecret;
    /** The ID of the region in which your MPS service is deployed. */
    config.regionId = "cn-shanghai";
    return new mts20140618(config);
}

static async main(args: string[]): Promise<void> {
    let client = await Client.createClient(Env.getEnv("ALIBABA_CLOUD_ACCESS_KEY_ID"), Env.getEnv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), args[0]);

    let request = new $mts20140618.SubmitJobsRequest({
        input: inputParam(),
        outputs: outputParam(),
        outputBucket: bucket,
        pipelineId: pipelineId,
        outputLocation: ossLocation
    });
    let response = await client.submitJobs(request);
    Console.log(Util.toJSONString($tea.toMap(response)));
}
}

Client.main(process.argv.slice(2));


function inputParam() {
    var input:any = {};
    input.Location = ossLocation;
    input.Bucket = bucket;
    input.Object = encodeURIComponent(ossInputObject);
    return JSON.stringify(input);
}

function outputParam() {
    var outputOSSObject = encodeURIComponent(ossOutputObject);
    var output:any = {};
    output.OutputObject = outputOSSObject;
    output.TemplateId = templateId;
    /** The video-related parameters. */
    var video:any = {};
    video.Width = "1280";
    video.Height = "720";
    output.Video = JSON.stringify(video);
    /** Set the opening part. */
    var openingVideo:any = {};
    var openingVideoURL = "http://example-bucket.oss-cn-shanghai.aliyuncs.com/" + encodeURIComponent(headObject)
    openingVideo.OpenUrl = openingVideoURL;
    openingVideo.Width = "640";
    openingVideo.Start = "2";
    var openingVideoList = new Array();
    openingVideoList.push(openingVideo);
    output.OpeningList = JSON.stringify(openingVideoList);
    /** Set the ending part. */
    var tailSlateVideo:any = {};
    var tailSlateVideoURL = "http://example-bucket.oss-cn-shanghai.aliyuncs.com/" + encodeURIComponent(tailObject)
    tailSlateVideo.TailUrl = tailSlateVideoURL;
    tailSlateVideo.Width = "640";
    tailSlateVideo.BlendDuration = "3";
    tailSlateVideo.BgColor = "Black";
    var tailSlateVideoList = new Array();
    tailSlateVideoList.push(tailSlateVideo);
    output.TailSlateList = JSON.stringify(tailSlateVideoList);

    var outputs = new Array();
    outputs.push(output);

    return JSON.stringify(outputs);
}