すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Media Processing:ビデオの結合中に開始部分と終了部分を設定する

最終更新日:Jan 12, 2025

このトピックでは、ApsaraVideo Media Processing(MPS)SDK for Node.js を使用して、ビデオの結合中に開始部分と終了部分を設定するための完全なサンプルコードを提供します。

サンプルコード

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';

/**
 * Node.js 8.x 以降をインストールします。
 * Node.js 用の Alibaba Cloud SDK をインストールします。npm install @alicloud/pop-core --save
 * Alibaba Cloud SDK Credentials パッケージをインストールします。 npm install @alicloud/credentials
 * Node.js 用の MPS SDK をインストールします。npm install --save @alicloud/mts20140618
 * 
 */
/** MPS キューの ID。MPS コンソールにログインして ID を表示できます。 */
var pipelineId = "d7cedd984be7dd63395c*****"; 
/** トランスコーディングテンプレートの ID。ビジネス要件に基づいてトランスコーディングテンプレートを選択します。 */
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 {

/** SDK クライアントを初期化します。 */
static async createClient(accessKeyId: string, accessKeySecret: string, regionId: string): Promise<mts20140618> {
    let config = new $OpenApi.Config({ });
    config.accessKeyId = accessKeyId;
    config.accessKeySecret = accessKeySecret;
    /** MPS サービスがデプロイされているリージョンの ID。 */
    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;
    /** ビデオ関連のパラメーター。 */
    var video:any = {};
    video.Width = "1280";
    video.Height = "720";
    output.Video = JSON.stringify(video);
    /** 開始部分を設定します。 */
    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);
    /** 終了部分を設定します。 */
    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);
}