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

Intelligent Media Services:Script-to-Video

最終更新日:Sep 12, 2026

スクリプトトゥビデオのプロダクションパラメーター、高度な構成、SDK サンプルについて説明します。

重要
  • スクリプト動画と画像テキストマッチングは、どちらもSubmitBatchMediaProducingJob API を使用してタスクを送信します。パラメーターに基づいて両者を区別するには、パラメーターの違いをご参照ください。

  • この API では、すべてのメディアアセットの OSS URL で指定するリージョンを、OpenAPI サービスエンドポイントと一致させる必要があります。

  • サポートされているリージョン: China (Shanghai)、China (Beijing)、China (Hangzhou)、China (Shenzhen)、US (Silicon Valley)、Singapore。

  • 実際には、例にある [your-bucket]、[your-region-id]、[your-file-name]、[your-file-path]、メディアアセット ID ("9d46c8b4548681030f6e") などのすべてのプレースホルダーを、実際の値に置き換えてください。

説明
  • このドキュメントをより深く理解するために、まず バッチ動画制作 ガイドを参照し、Script-to-Video の概念とワークフローに慣れておくことを推奨します。

  • Script-to-Video は、グローバルスクリプトとセグメントスクリプトという 2 つの制作モードをサポートしています。

    • グローバルスクリプト:複数の完全なナレーションスクリプトと動画アセットをランダムに組み合わせて、類似したスタイルの大量の動画を生成します。

    • セグメントスクリプト:ナレーションスクリプトを複数のセグメントに分割し、各セグメントを特定のアセットグループにマッチングします。

    • モードは、以下のパラメーターロジックによって決定されます。

注意事項

  • 複数のビデオ、オーディオ、画像アセットをインテリジェントに組み合わせたバッチ動画制作ジョブを送信するには、 SubmitBatchMediaProducingJob をご参照ください。主要な API パラメーターについては、以下の InputConfig、 EditingConfig、 OutputConfig セクションで詳しく説明しています。

  • バッチ動画制作ジョブの詳細情報を取得するには、 GetBatchMediaProducingJob をご参照ください。

InputConfig

InputConfig では、基本アセット (ビデオクリップ、ボイスオーバー、バックグラウンドミュージック、ステッカー) を指定します。

パラメーター

型

説明

例

必須

サポートされているモード

MediaGroupArray

List<MediaGroup>

ソースアセットを指定します。アセットのグループ化に対応しています。

グループ名:最大 50 文字。絵文字はサポートされていません。

素材リスト:素材のメディアアセット ID または OSS URL

最大 40 グループをサポートします。各グループには最大 200 件の素材を含めることができます。同じグループに複数の素材を追加した場合、システムは生成ジョブごとに 1 つをランダムに選択します。複数の素材を使用するには、個別のグループを作成し、各グループに 1 つの素材を追加してください。

例:グローバルスクリプト

例:セグメントスクリプト

はい

  • グローバルスクリプト

  • セグメントスクリプト

TitleArray

List<String>

タイトルの配列です。生成ごとに 1 つのタイトルがランダムに選択されます。

最大 50 件のタイトルを指定でき、各タイトルは最大 50 文字です。

["タイトル 1", "タイトル 2"]

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

SubHeadingArray

List<SubHeading>

複数レベルのサブ見出し設定です。

[{"Level": 1, "TitleArray": ["レベル1のサブタイトル1", "レベル1のサブタイトル2"]}, {"Level": 3, "TitleArray": ["レベル3のサブタイトル"]}]

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

SpeechTextArray

List<String>

  • ボイスオーバースクリプトの配列です。生成ごとに 1 つのスクリプトがランダムに選択されます。

  • 最大 50 件のスクリプトを指定でき、各スクリプトは最大 1,000 文字です。

  • SSML を使用して音声合成を制御できます。

  • デフォルトの言語は中国語 (zh) です。他の言語を設定するには、SpeechLanguage を参照してください。

    重要

    現在サポートされているのは <break>、<s>、<sub>、<w>、<phoneme>、<say-as> のみです。

["ボイスオーバーの内容1", "ボイスオーバーの内容2"]

いいえ

  • グローバルスクリプト

StickerArray

List<Sticker>

  • ステッカーの配列です。生成ごとに 1 つがランダムに選択されます。最大 50 件のステッカーを指定できます。

  • 選択ルール:ステッカーを 10 件指定して 20 本のビデオをリクエストした場合、システムはランダムな開始インデックス (例:3) を選択し、3、4、5、...、10、1、2、3、... のように循環してステッカーを選択します。

  • サポートされている形式については、画像形式を参照してください。

[{"MediaId": "****..."}, {"MediaURL": "http://.../example.png"}]

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

BackgroundMusicArray

List<String>

  • バックグラウンドミュージックトラックの配列です。生成ごとに 1 つがランダムに選択されます。最大 50 トラックを指定できます。メディアアセット ID または OSS URL を指定できます。

  • 選択ルール:StickerArray と同じです。

  • サポートされている形式については、オーディオ形式を参照してください。

["****b4549d46c88681030f6e****", "****549d46c88b4681030f6e****"]

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

BackgroundImageArray

List<String>

  • 背景画像の配列です。生成ごとに 1 つがランダムに選択されます。最大 50 枚の画像を指定できます。メディアアセット ID または OSS URL を指定できます。

  • 選択ルール:StickerArray と同じです。

  • サポートされている形式については、画像形式を参照してください。

["****b4549d46c88681030f6e****", "****549d46c88b4681030f6e****"]

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

MediaGroup

説明

MediaGroup のパラメーターは、サポートされているモード列にグローバルスクリプトとセグメントスクリプトの違いが示されています。

パラメーター

型

説明

例

必須

サポートされているモード

GroupName

文字列

グループ名です。最大 50 文字で、絵文字は使用できません。

Group1

はい

  • グローバルスクリプト

  • セグメントスクリプト

MediaArray

List<String>

  • アセットのリストです。メディアアセット ID または URL を指定できます。最大 200 件のアセットを指定できます。MediaArray に複数のアセットを追加した場合、システムは生成ジョブごとに 1 つをランダムに選択します。生成したビデオにすべてのアセットを含めるには、MediaGroupArray に複数のグループを作成し、各グループに 1 つのアセットを追加してください。

  • サポートされている形式については、ビデオ形式を参照してください。

****b4549d46c88681030f6e****

はい

  • グローバルスクリプト

  • セグメントスクリプト

SpeechTextArray

List<String>

  • ボイスオーバースクリプトの配列です。生成ごとに 1 つのスクリプトがランダムに選択されます。

  • 最大 50 件のスクリプトを指定でき、各スクリプトは最大 1,000 文字です。

  • SSML を使用して音声合成を制御できます。

    重要

    現在サポートされているのは <break>、<s>、<sub>、<w>、<phoneme>、<say-as> のみです。

["ボイスオーバーの内容1", "ボイスオーバーの内容2"]

いいえ

  • セグメントスクリプト

Duration

浮動小数点

現在のグループのデュレーションです (単位:秒)。SpeechTextArray が空の場合にのみ使用します。

10

いいえ。デフォルト:5

  • グローバルスクリプト

SplitMode

文字列

NoSplit

いいえ。デフォルト:AverageSplit

  • グローバルスクリプト

  • セグメントスクリプト

Volume

浮動小数点

  • このグループの入力ビデオの音量です。設定した場合、このグループでは、EditingConfig.MediaConfig.Volume よりも優先されます。

  • 範囲は [0, 10.0] で、小数点以下 2 桁まで指定できます。

0.5

いいえ

  • グローバルスクリプト

DurationAutoAdapt

ブール値

このグループでデュレーション自動適応を有効にするかどうかを指定します。有効にした場合、ボイスオーバーがなければ、ビデオクリップが元の速度で再生されるように、グループのデュレーションが調整されます。

true

いいえ。デフォルト:false

  • グローバルスクリプト

例:グローバルスクリプト

{
  "MediaGroupArray": [
    {
      "GroupName": "UseMediaId",
      "MediaArray": [
        "****9d46c886b45481030f6e****",
        "****c886810b4549d4630f6e****"
      ],
      "SplitMode": "NoSplit"
    },
    {
      "GroupName": "UseOssUrl",
      "MediaArray": [
        "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4",
        "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
      ]
    }
  ],
  "TitleArray": [
    "ABCストアがさくら町に新店舗をオープン",
    "ABCストアの新店舗がオープン"
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["レベル1のサブタイトル1", "レベル1のサブタイトル2"]
    },
    {
      "Level": 3,
      "TitleArray": ["レベル3のサブタイトル"]
    }
  ],
  "SpeechTextArray": [
    "近所のモールにABCストアが新しくオープンしました。今日はグランドオープンなので、早速見に来ました。店内はそれほど広くありませんが、人でいっぱいです。スナックやドリンクがとても安く、レジは長蛇の列でした。ぜひ、あなたも見に来てください!",
    "近所のモールにABCストアが新しくオープンしました。今日はグランドオープンなので、早速見に来ました。",
    "<speak>今日、我らがヒーロー、卓球界のレジェンド<phoneme alphabet="ipa" ph="jɑmɑdɑ tɑroʊ">山田太郎</phoneme>が、栄光の頂点を目指して奮闘しています。</speak>"
  ],
  "StickerArray": [
    {
      "MediaId": "****9d46c8b4548681030f6e****",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300,
      "Opacity": 0.6
    },
    {
      "MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    }
  ],
  "BackgroundMusicArray": [
    "****b4549d46c88681030f6e****",
    "****549d46c88b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp3"
  ],
  "BackgroundImageArray": [
    "****6c886b4549d481030f6e****",
    "****9d46c8548b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
  ]
}

例:セグメントスクリプト

{
  "MediaGroupArray": [{
    "GroupName": "start",
    "MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpeg", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
    "SplitMode": "NoSplit"
  },
    {
      "GroupName": "group1",
      "MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
      "SpeechTextArray": ["近所のモールにABCストアが新しくオープンしました。", "今日はグランドオープンです。", "<speak>今日、我らがヒーロー、卓球界のレジェンド<phoneme alphabet="ipa" ph="jɑmɑdɑ tɑroʊ">山田太郎</phoneme>が、栄光の頂点を目指して奮闘しています。</speak>"]
    },
    {
      "GroupName": "group2",
      "MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/normal%20video.mp4", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpeg"],
      "SpeechTextArray": ["店内はそれほど広くありませんが、人でいっぱいです。スナックやドリンクがとても安く、レジは長蛇の列でした。", "現場は非常に活気があり、多くの人々で賑わい、多種多様な商品が並んでいます。"]
    },
    {
      "GroupName": "group3",
      "MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
      "SpeechTextArray": ["ぜひ、あなたも見に来てください!", "急いで見に来てください!"]
    },
    {
      "GroupName": "end",
      "MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpg", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"]
    }
  ],
  "TitleArray": [
    "ABCストアがさくら町に新店舗をオープン",
    "ABCストアの新店舗がオープン"
  ],
  "StickerArray": [
    {
      "MediaId": "****9d46c8b4548681030f6e****",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300,
      "Opacity": 0.6
    },
     {
      "MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    }
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["レベル1のサブタイトル1", "レベル1のサブタイトル2"]
    },
    {
      "Level": 3,
      "TitleArray": ["レベル3のサブタイトル"]
    }
  ],
  "BackgroundMusicArray": [
    "****b4549d46c88681030f6e****",
    "****549d46c88b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp3"
  ],
  "BackgroundImageArray": [
    "****6c886b4549d481030f6e****",
    "****9d46c8548b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
  ]
}

EditingConfig

EditingConfig は、音量、配置、その他の制作設定を指定します。

説明

すべてのパラメーターは、以下を除き、グローバルスクリプトモードとセグメントスクリプトモードの両方をサポートします:

パラメーター

タイプ

説明

例

必須

MediaConfig

JSON

入力ビデオアセットの設定。

{"Volume":"1","MediaMetaDataArray":[{"Media":"****6c886b4549d481030f6e****","GroupName":"GroupA","TimeRangeList":[{"In":"0","Out":"1"},{"In":"2","Out":"3"}]}]}

いいえ

TitleConfig

JSON

タイトルの設定。

{"Alignment":"TopCenter","AdaptMode":"AutoWrap","Font":"Alibaba PuHuiTi 2.0 95 ExtraBold","SizeRequestType":"Nominal","Y":0.1}

いいえ

SubHeadingConfig

JSON

複数レベルの字幕の設定。

JSON フィールド:

{"1":{"Y":0.3,"FontSize":40},"3":{"Y":0.5,"FontSize":30}}

いいえ

SpeechConfig

JSON

ナレーションの設定。

EditingConfig パラメーターの例をご参照ください

いいえ

BackgroundMusicConfig

JSON

背景音楽の設定。

{"Volume":0.2}

いいえ

BackgroundImageConfig

JSON

背景画像の設定。InputConfig で背景画像が設定されている場合は無視されます。

{"SubType":"Blur","Radius":0.5}

いいえ

ProcessConfig

JSON

ミキシングおよび編集プロセスの設定。

EditingConfig パラメーターの例をご参照ください

いいえ

FECanvas

JSON

フロントエンドプレビュー用のキャンバス設定。

{"Width": 1080,"Height": 1920}

いいえ

ProduceConfig

JSON

標準的な編集および制作設定。フィールドについては、「EditingProduceConfig」をご参照ください。

{"AutoRegisterInputVodMedia":true,"OutputWebmTransparentChannel":true,"CoverConfig":{"StartTime":3.3},"AudioChannelCopy":"left","PipelineId":"****d54a97cff4108b555b01166d4****","MaxBitrate":5000,"KeepOriginMaxBitrate":false,"KeepOriginVideoMaxFps":false}

いいえ

ProcessConfig

パラメーター

タイプ

説明

例

必須

SingleShotDuration

フロート

長いビデオアセットを分割する際の、自動セグメント化された各ショットのデュレーション (秒単位)。

5

いいえ。デフォルト: 3

AllowVfxEffect

ブール値

特殊効果を追加するかどうか。

true

いいえ。デフォルト: false

VfxEffectProbability

フロート

各クリップにエフェクトを適用する確率。範囲:0.0~1.0。小数点以下 2 桁までサポートします。

0.6

いいえ。デフォルト: 0.5

VfxFirstClipEffectList

List<String>

  • 空ではない場合、ビデオの最初のクリップのエフェクトはこのリストから選択されます。

  • 空の場合、ランダムなエフェクトが以下のデフォルトから選択されます: slightshow、starfieldshinee、starfieldshinee2、starsparkle、colorfulripples、starfield。

  • エフェクトの例については、「特殊効果の例」をご参照ください。

["slightshow","starfieldshinee"]

いいえ

VfxNotFirstClipEffectList

List<String>

  • 空ではない場合、最初のクリップ以外のすべてのクリップのエフェクトがこのリストから選択されます。

  • 空の場合、ランダムなエフェクトが以下のデフォルトから選択されます: zoomslight、zoom、zoominout、slightshake。

  • エフェクトの例については、「特殊効果の例」をご参照ください。

["zoomslight","zoom"]

いいえ

AllowTransition

ブール値

トランジション効果を追加するかどうか。

true

いいえ。デフォルト: false

TransitionDuration

フロート

トランジションのデュレーション (秒単位)。TransitionDuration > ClipDuration - 1 の場合、そのクリップにはトランジションが適用されません。

0.5

いいえ。デフォルト: 0.5

TransitionList

List<String>

カスタムトランジションのリスト。AllowTransition が true の場合、このリストからランダムなトランジションが選択されます。利用可能なトランジションについては、「トランジション効果」をご参照ください。このリストが空の場合、ランダムなトランジションが linearblur、colordistance、crosshatch、dreamyzoom、doomscreentransition_up から選択されます。

["directional", "linearblur"]

いいえ

UseUniformTransition

ブール値

1 つのビデオ全体で同じトランジションを使用するかどうか。

true

いいえ。デフォルト: true

AllowFilter

ブール値

カスタムフィルターを追加するかどうか。

false

いいえ。デフォルト: false

FilterList

List<String>

カスタムフィルターのリスト。AllowFilter が true の場合、このリストからランダムなフィルターが適用されます。利用可能なフィルターについては、「フィルター」をご参照ください。このリストが空の場合、フィルターは適用されません。

["m1", "m2"]

いいえ

AlignmentMode

String

ビデオとナレーションの配置モード。グローバルスクリプトモードでのみサポートされています。

有効な値:

  • AutoSpeed: ビデオトラックのデュレーションがオーディオトラックに合わせてスケーリングされます。

  • Cut: ビデオトラックがオーディオトラックに合わせてカットされます。

AutoSpeed

いいえ。デフォルト: AutoSpeed

ImageDuration

フロート

静止画アセットのデュレーション (秒単位)。

2

いいえ。デフォルト: 2

パラメーターの例

{
  "MediaConfig": {
    "Volume": 0 // 入力ビデオアセットはデフォルトでミュートされます
  },
  "TitleConfig": {
    "Alignment": "TopCenter",
    "AdaptMode": "AutoWrap",
    "Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
    "SizeRequestType": "Nominal",
    "Y": 0.1 // 縦画面ビデオの Y 座標
  },
   "SubHeadingConfig": {
    "1": {
      "Y": 0.3,
      "FontSize": 40
    },
    "3": {
      "Y": 0.5,
      "FontSize": 30
    }
  },
  "SpeechConfig": {
    "Volume": 1,  // ナレーションはデフォルトで元の音量を使用します
    "SpeechRate": 0,
    "Voice": null,
    "Style": null,
    "CustomizedVoice": null, // 音声 ID。設定されている場合、 Voice と Style は無視されます。
    "AsrConfig": {
      "Alignment": "TopCenter",
      "AdaptMode": "AutoWrap",
      "Font": "Alibaba PuHuiTi 2.0 65 Medium",
      "SizeRequestType": "Nominal",
      "Spacing": -1,
      "Y": 0.8 // 縦画面ビデオの字幕の Y 座標
    },
    "SpecialWordsConfig": [{
      "Type": "Highlight",
      "Style": {
        "FontName": "KaiTi",
        "FontSize": 80,
        "FontColor": "20AEE9",
        "OutlineColour": "2D20E9",
        "Outline": 3,
        "FontFace": {
          "Bold": true,
          "Underline": true
        }
      },
      "WordsList": [
        "ApsaraVideo",
        "Intelligent Media Services",
        "バッチ動画作成"
      ]
    },
    {
      "Type": "Highlight",
      "Style": {
        "FontFace": {
          "Italic": true
        }
      },
      "WordsList": [
        "製品",
        "ご覧ください"
      ]
    },
    {
      "Type": "Forbidden",
      "WordsList": [
        "ピリパラ",
        "ビリバラ"
      ],
      "SoundReplaceMode": "None"
    }
  ]},
  "BackgroundMusicConfig": {
    "Volume": 0.2,   // 背景音楽はデフォルトで 20% の音量です
    "Style": null
  },
  "ProcessConfig": {
    "SingleShotDuration": 3,      // 分割後のショットのデュレーション
    "AllowVfxEffect": false,	  // 特殊効果を追加するかどうかを指定します
    "AllowTransition": false,	  // トランジション効果を追加するかどうかを指定します
    "AlignmentMode": "AutoSpeed"  // このフィールドはグローバルスクリプトモードでのみサポートされています
  }
}

TemplateConfig

TemplateConfig には、バッチ動画制作の共通パラメーターが含まれています。パラメーターと例の詳細については、「TemplateConfig」をご参照ください。

OutputConfig パラメーター

OutputConfig では、出力先、命名規則、解像度、ビデオ数を指定します。

これらのパラメーターは両方のモードに適用されます。

パラメーター

タイプ

説明

例

必須

MediaURL

文字列

出力ビデオの URL です。プレースホルダー {index} を含める必要があります。

ルール:http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4

例:http://example.oss-cn-shanghai.aliyuncs.com/example/example_{index}.mp4

GeneratePreviewOnly が false であり、かつ出力先が OSS の場合に必須です。

StorageLocation

文字列

ApsaraVideo VOD に出力されるメディアアセットのストレージ場所です。

ルール:[your-vod-bucket].oss-[your-region-id].aliyuncs.com

例:outin-****6c886b4549d481030f6e****.oss-cn-shanghai.aliyuncs.com

GeneratePreviewOnly が false であり、かつ出力先が ApsaraVideo VOD の場合に必須です。

FileName

文字列

出力ファイル名です。プレースホルダー {index} を含める必要があります。

ルール:[your-file-name]__{index}.mp4

例:example_{index}.mp4

GeneratePreviewOnly が false であり、かつ出力先が ApsaraVideo VOD の場合に必須です。

GeneratePreviewOnly

ブール値

  • true の場合、ジョブはビデオを実際に生成せず、プレビュータイムラインのみを生成します。出力 URL は不要です。

  • ジョブが完了したら、GetBatchMediaPoducingJob を使用して結果をクエリして編集プロジェクト ID (projectId) を取得し、次に GetEditingProject を呼び出してプレビュータイムラインを取得できます。

false

いいえ。デフォルト:false。

Count

整数

出力するビデオ数です。最大:100。

20

いいえ。デフォルト:1。

MaxDuration

浮動小数点数

出力ビデオ 1 本あたりの最大デュレーションです (単位:秒)。

20

いいえ。デフォルト:15。

FixedDuration

浮動小数点数

出力ビデオ 1 本あたりの固定デュレーションです。設定した場合、ビデオのデュレーションはこの値に調整されます。

  • セグメント化スクリプトモードではサポートされません。

  • グローバルスクリプトモードでは、SpeechTextArray が空の場合にこのパラメーターがサポートされます。

  • FixedDuration または MaxDuration のいずれかを設定できます。

  • ビデオのデュレーションルール。

20

いいえ。デフォルト:15。

Width

整数

出力ビデオの幅です (単位:ピクセル)。

1080

はい

Height

整数

出力ビデオの高さです (単位:ピクセル)。

1920

はい

Video

JSON

出力ビデオストリームの設定 (CRF、コーデックなど) です。

{"Crf": 27}

いいえ

パラメーターの例

{
 	"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4",
 	"Count": 20,
 	"MaxDuration": 15,
 	"Width": 1080,
 	"Height": 1920,
 	"Video": {"Crf": 27},
        "GeneratePreviewOnly": false
}

アプリケーション

例 1:セグメント化スクリプトモードでのイントロとアウトロの設定

ユースケース

最初と最後のグループの MediaGroup.SplitMode を NoSplit に設定することで、一貫したイントロとアウトロを追加します。この設定により、システムはこれらのグループからランダムに選択されたアセットを、分割せずに指定されたデュレーションで再生します。

サンプルコード

クリックして InputConfig の例を表示

{
    "mediaGroupArray": [
        {
            "duration": 4,
            "splitMode": "NoSplit",
            "groupName": "opening",
            "mediaArray": [
                "****e44009ee71f0b62bf6f7d44b****"
            ]
        },
        {
            "groupName": "group1",
            "mediaArray": [
                "****e44009eef1f0b62bf6f7d44b****"
            ],
            "speechTextArray": [
                "休日はどこに行こうか迷っていますか?",
                "まだ休日の予定をためらっていますか?"
            ]
        },
        {
            "groupName": "group2",
            "mediaArray": [
                "****e44009eeferfb62bf6f7d44b****",
                "****e440094fghf0b62bf6f7d44b****",
                "****e44009ee74fgh62bf6f7d44b****"
            ],
            "speechTextArray": [
                "雲南省の瀘沽湖が、自然とのデートにあなたを誘います。紺碧の湖は鏡のようで、モソ人の女国のユニークな風習を映し出し、まるで絵画のように美しいです。",
                "雲南省の瀘沽湖で自然の饗宴を考えてみませんか? 紺碧の鏡のような湖は、モソ人の女国のユニークな民俗を映し出し、絵画のように美しく魅力的です。"
            ]
        },
        {
            "groupName": "group3",
            "mediaArray": [
                "****e44009ee7ft5662bf6f7d44b****"
            ],
            "speechTextArray": [
                "瀘沽湖に来て、この静かで魅力的な風景を共有しましょう!",
                "この静かで魅力的な風景がもたらす無限の詩情を共有しましょう!"
            ]
        },
        {
            "duration": 4,
            "splitMode": "NoSplit",
            "groupName": "ending",
            "mediaArray": [
                "****e44009ee5fgfg62bf6f7d44b****"
            ]
        }
    ]
}

クリックして EditingConfig の例を表示

{
    "MediaConfig": {
        "MediaMetaDataArray": [
            {
                "Media": "****e44009eedttg62bf6f7d44b****",
                "GroupName": "opening",
                "TimeRangeList": [
                    {
                        "In": 1.5,
                        "Out": 5.5
                    }
                ]
            },
            {
                "Media": "****e44009ee7dfrf62bf6f7d44b****",
                "GroupName": "ending",
                "TimeRangeList": [
                    {
                        "In": 1.5,
                        "Out": 5.5
                    }
                ]
            }
        ]
    }
}

クリックして OutputConfig の例を表示

{
    "count": 10,
    "height": 1920,
    "mediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4",
    "width": 1080,
    "widthHeightRatio": 0.5625
}

例 2:顔モンタージュ動画の作成

顔モンタージュ動画作成のベストプラクティス。

SDK サンプル

前提条件

IMS サーバー SDK がインストールされている必要があります。 詳細については、「はじめに」をご参照ください。

コード例

この例では、グローバルスクリプトモードを使用します。

クリックしてコード例を表示

package com.example;

import java.util.*;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import com.aliyun.ice20201109.Client;
import com.aliyun.ice20201109.models.*;
import com.aliyun.teaopenapi.models.Config;


/**
 *  // 以下の Maven 依存関係を追加する必要があります:
 *   <dependency>
 *      <groupId>com.aliyun</groupId>
 *      <artifactId>ice20201109</artifactId>
 *      <version>2.3.0</version>
 *  </dependency>
 *  <dependency>
 *      <groupId>com.alibaba</groupId>
 *      <artifactId>fastjson</artifactId>
 *      <version>1.2.9</version>
 *  </dependency>
 */
public class ScriptBatchEditingService {

    static final String regionId = "[your-region-id]"; // この機能は、cn-shanghai、cn-beijing、cn-hangzhou でサポートされています。
    static final String bucket = "[your-bucket]";
    private Client iceClient;

    public static void main(String[] args) throws Exception {
        ScriptBatchEditingService scriptBatchEditingService = new ScriptBatchEditingService();
        scriptBatchEditingService.initClient();
        scriptBatchEditingService.runExample();
    }

    public void initClient() throws Exception {
        // Alibaba Cloud アカウントの AccessKey は、すべての API へのフルアクセス権限を持っています。 API の呼び出しや日常の運用保守には、Resource Access Management (RAM) ユーザーの使用を推奨します。
        // この例では、AccessKey ID と AccessKey Secret を環境変数に格納する方法を示します。 設定方法の詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();

        Config config = new Config();
        config.setCredential(credentialClient);

        // AccessKey ID と AccessKey Secret をハードコーディングするには、次のコードを使用します。 ただし、プロジェクトコードにハードコーディングしないことを強く推奨します。 そうしないと、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが損なわれる可能性があります。
        // config.accessKeyId = <ステップ 2 で作成した AccessKey ID>;
        // config.accessKeySecret = <ステップ 2 で作成した AccessKey Secret>;
        config.endpoint = "ice." + regionId + ".aliyuncs.com";
        config.regionId = regionId;
        iceClient = new Client(config);
    }

    public void runExample() throws Exception {

        // 動画素材
        JSONObject mediaGroup1 = new JSONObject();
        mediaGroup1.put("GroupName", "start");
        mediaGroup1.put("MediaArray", Arrays.asList(
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-start-1.mp4"
        ));

        JSONObject mediaGroup2 = new JSONObject();
        mediaGroup2.put("GroupName", "middle");
        mediaGroup2.put("MediaArray", Arrays.asList(
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-m-1.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-m-2.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-m-3.mp4"
        ));

        JSONObject mediaGroup3 = new JSONObject();
        mediaGroup3.put("GroupName", "end");
        mediaGroup3.put("MediaArray", Arrays.asList(
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-end-1.mp4"
        ));

        JSONArray mediaGroupArray = new JSONArray();
        mediaGroupArray.add(mediaGroup1);
        mediaGroupArray.add(mediaGroup2);
        mediaGroupArray.add(mediaGroup3);

        // ナレーションスクリプト
        List<String> speechTextArray = Arrays.asList(
            "休日はどこに行こうか迷っていますか? 雲南省の瀘沽湖が、自然とのデートにあなたを誘います。 紺碧の湖は鏡のようで、モソ人の女国のユニークな風習を映し出し、まるで絵画のように美しいです。",
            "まだ休日の予定をためらっていますか? 雲南省の瀘沽湖で自然の饗宴を考えてみませんか? 紺碧の鏡のような湖は、モソ人の女国のユニークな民俗を映し出し、絵画のように美しく魅力的です。"
        );

        // 動画タイトル
        List<String> titleArray = Arrays.asList(
            "瀘沽湖:美しい風景の中のモソ族の風習",
            "神秘的な瀘沽湖を探る",
            "瀘沽湖の没入型体験"
        );

        JSONObject inputConfig = new JSONObject();
        inputConfig.put("MediaGroupArray", mediaGroupArray);
        inputConfig.put("SpeechTextArray", speechTextArray);
        inputConfig.put("TitleArray", titleArray);

        // 生成する動画の数
        int produceCount = 4;

        // 出力解像度 (縦画面)
        //int outputWidth = 1080;
        //int outputHeight = 1920;

        // 出力解像度 (横画面)
        int outputWidth = 1920;
        int outputHeight = 1080;

        // 出力 OSS URL。{index} プレースホルダーを含める必要があります。
        String mediaUrl = "http://" + bucket + ".oss-" + regionId + ".aliyuncs.com/script/output_{index}_w.mp4";

        JSONObject outputConfig = new JSONObject();
        outputConfig.put("MediaURL", mediaUrl);
        outputConfig.put("Count", produceCount);
        outputConfig.put("Width", outputWidth);
        outputConfig.put("Height", outputHeight);

        // バッチ動画制作ジョブを送信
        SubmitBatchMediaProducingJobRequest request = new SubmitBatchMediaProducingJobRequest();
        request.setInputConfig(inputConfig.toJSONString());
        request.setOutputConfig(outputConfig.toJSONString());

        SubmitBatchMediaProducingJobResponse response = iceClient.submitBatchMediaProducingJob(request);
        String jobId = response.getBody().getJobId();
        System.out.println("Start script batch job, batchJobId: " + jobId);

        // すべてが完了するまでジョブステータスをポーリング
        System.out.println("Waiting job finished...");
        int maxTry = 3000;
        int i = 0;
        while (i < maxTry) {
            Thread.sleep(3000);
            i++;
            GetBatchMediaProducingJobRequest getRequest = new GetBatchMediaProducingJobRequest();
            getRequest.setJobId(jobId);
            GetBatchMediaProducingJobResponse getResponse = iceClient.getBatchMediaProducingJob(getRequest);
            String status = getResponse.getBody().getEditingBatchJob().getStatus();
            System.out.println("BatchJobId: " + jobId + ", status:" + status);

            if ("Failed".equals(status)) {
                System.out.println("Batch job failed. JobInfo: " + JSONObject.toJSONString(getResponse.getBody().getEditingBatchJob()));
                throw new Exception("Produce failed. BatchJobId: " + jobId);
            }

            if ("Finished".equals(status)) {
                System.out.println("Batch job finished. JobInfo: " + JSONObject.toJSONString(getResponse.getBody().getEditingBatchJob()));
                break;
            }
        }
    }
}

API 入力パラメーター

InputConfig

{
  "MediaGroupArray": [{
    "GroupName": "start",
    "MediaArray": [
      "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-start-1.mp4"
    ]
  },
    {
      "GroupName": "middle",
      "MediaArray": [
        "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-m-1.mp4",
        "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-m-2.mp4",
        "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-m-3.mp4"
      ]
    },
    {
      "GroupName": "end",
      "MediaArray": [
        "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/lgh/lgh-end-1.mp4"
      ]
    }
  ],
  "SpeechTextArray": [
    "休日はどこに行こうか迷っていますか? 雲南省の瀘沽湖が、自然とのデートにあなたを誘います。 紺碧の湖は鏡のようで、モソ人の女国のユニークな風習を映し出し、まるで絵画のように美しいです。",
    "まだ休日の予定をためらっていますか? 雲南省の瀘沽湖で自然の饗宴を考えてみませんか? 紺碧の鏡のような湖は、モソ人の女国のユニークな民俗を映し出し、絵画のように美しく魅力的です。"
  ],
  "TitleArray": [
    "瀘沽湖:美しい風景の中のモソ族の風習",
    "神秘的な瀘沽湖を探る",
    "瀘沽湖の没入型体験"
  ]
}

OutputConfig

{
  "Count": 4,
  "Height": 1080,
  "Width": 1920,
  "MediaURL": "http://[your-bucket].oss-<region-id>.aliyuncs.com/script/output_{index}_w.mp4"
}

詳細設定

詳細設定については、「バッチワンクリック動画作成のロジックと詳細設定」をご参照ください。

よくある質問

Script-to-Video に関するよくある質問は、よくある質問をご参照ください。

関連ドキュメント