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

Intelligent Media Services:Script-to-Video

最終更新日:Aug 06, 2026

Script-to-Video の生成パラメータ、高度な設定、SDK サンプルについて説明します。

重要
  • Script-to-Video と Image-Text Matching はいずれも SubmitBatchMediaProducingJob API を使用してタスクを送信します。パラメーターに基づいてこれらを区別する方法については、パラメーターの相違点をご参照ください。

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

  • サポートされているリージョン:中国 (上海)、中国 (北京)、中国 (杭州)、中国 (深圳)、米国 (シリコンバレー)、シンガポール。

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

説明
  • このドキュメントをより理解するために、まず バッチ動画制作 ガイドを読み、Script-to-Video の概念とワークフローを把握してください。

  • Script-to-Video は 2 つの制作モード (グローバルスクリプトと分割スクリプト) をサポートしています。

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

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

    • モードは、次のパラメーターのロジックで決まります:

使用上の注意

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

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

InputConfig

InputConfig では、基本アセット (ビデオクリップ、ナレーション、背景音楽、ステッカー) を指定します。

パラメーター

タイプ

説明

必須

サポートされるモード

MediaGroupArray

List<MediaGroup>

ソースアセットを指定します。アセットのグループ化をサポートします。

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

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

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

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

例:セグメントスクリプト モード

はい

  • グローバルスクリプト

  • セグメントスクリプト

TitleArray

List<String>

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

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

["Title 1","Title 2"]

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

SubHeadingArray

List<SubHeading>

複数階層のサブ見出しを設定します。

[{"Level":1,"TitleArray":["Level 1 subtitle 1","Level 1 subtitle 2"]},{"Level":3,"TitleArray":["Level 3 subtitle"]}]

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

SpeechTextArray

List<String>

  • ナレーションスクリプトの配列です。生成ジョブごとに 1 つのスクリプトがランダムに選択されます。

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

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

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

    重要

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

["Voiceover content 1","Voiceover content 2"]

いいえ

  • グローバルスクリプト

StickerArray

List<Sticker>

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

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

  • サポートされる形式については、Image formats をご参照ください。

[{"MediaId":"****9d46c8b4548681030f6e****","X":10,"Y":100,"Width":300,"Height":300,"Opacity":0.6}]

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

BackgroundMusicArray

List<String>

  • 背景音楽トラックの配列です。生成ジョブごとに 1 つがランダムに選択されます。最大 50 トラックを指定できます。メディアアセット ID または OSS URL をサポートします。

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

  • サポートされる形式については、Audio formats をご参照ください。

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

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

BackgroundImageArray

List<String>

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

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

  • サポートされる形式については、Image formats をご参照ください。

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

いいえ

  • グローバルスクリプト

  • セグメントスクリプト

MediaGroup

説明

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

パラメーター

タイプ

説明

必須

サポートされるモード

GroupName

String

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

Group1

はい

  • グローバルスクリプト

  • セグメントスクリプト

MediaArray

List<String>

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

  • サポートされる形式については、Video formats をご参照ください。

****b4549d46c88681030f6e****

はい

  • グローバルスクリプト

  • セグメントスクリプト

SpeechTextArray

List<String>

  • ナレーションスクリプトの配列です。生成ジョブごとに 1 つのスクリプトがランダムに選択されます。

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

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

    重要

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

["Voiceover content 1","Voiceover content 2"]

いいえ

  • セグメントスクリプト

Duration

Float

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

10

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

  • グローバルスクリプト

SplitMode

String

NoSplit

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

  • グローバルスクリプト

  • セグメントスクリプト

Volume

Float

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

  • 範囲:[0, 10.0]。小数点以下 2 桁までサポートします。

0.5

いいえ

  • グローバルスクリプト

DurationAutoAdapt

Boolean

このグループでデュレーション自動適応を有効にするかどうかを指定します。有効になっており、ナレーションがない場合、ビデオクリップが元の速度で再生されるように、グループのデュレーションが調整されます。

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": [
    "Freshippo opens a new location in Huilongguan",
    "A new Freshippo store opens"
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["Subtitle 1", "Subtitle 2"]
    },
    {
      "Level": 3,
      "TitleArray": ["Level 3 subtitle"]
    }
  ],
  "SpeechTextArray": [
    "A new Freshippo store just opened in the nearby mall. It's the grand opening today, so I rushed over to check it out. The store isn't huge, but it's packed with people. Snacks and drinks are pretty cheap, and the checkout lines are super long. Come and see for yourself!",
    "A new  Freshippo store just opened in the nearby mall. It's the grand opening today, so I rushed over to check it out.",
    "<speak>Today, our hero, table tennis legend <phoneme alphabet="ipa" ph="mɑː lʊŋ">Ma Long</phoneme>, is striving for the pinnacle of glory.</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"],
    "Duration": 5,
    "SplitMode": "NoSplit",
    "Volume": 1
  },
    {
      "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": ["A new Freshippo store just opened in the nearby mall.", "It's the grand opening today.", "<speak>Today, our hero, table tennis legend <phoneme alphabet="ipa" ph="mɑː lʊŋ">Ma Long</phoneme>, is striving for the pinnacle of glory.</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": ["The store isn't huge, but it's packed with people. Snacks and drinks are pretty cheap, and the checkout lines are super long.", "The scene is very lively, with crowds of people and a wide variety of goods."]
    },
    {
      "GroupName": "group3",
      "MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
      "SpeechTextArray": ["Come and see for yourself!", "Hurry and come take a look!"]
    },
    {
      "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"],
      "Duration": 5
    }
  ],
  "TitleArray": [
    "Freshippo opens a new location in Huilongguan",
    "A new Freshippo store opens"
  ],
  "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": ["Level 1 subtitle 1", "Level 1 subtitle 2"]
    },
    {
      "Level": 3,
      "TitleArray": ["Level 3 subtitle"]
    }
  ],
  "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>

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

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

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

["slightshow","starfieldshinee"]

いいえ

VfxNotFirstClipEffectList

List<String>

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

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

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

["zoomslight","zoom"]

いいえ

AllowTransition

ブール値

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

true

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

TransitionDuration

浮動小数点

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

0.5

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

TransitionList

List<String>

カスタムトランジションのリストです。AllowTransitiontrue の場合、このリストからランダムなトランジションが使用されます。利用可能なトランジションについては、「トランジション効果」をご参照ください。このリストが空の場合、以下の中からランダムなトランジションが選択されます: linearblurcolordistancecrosshatchdreamyzoomdoomscreentransition_up

["directional", "linearblur"]

いいえ

UseUniformTransition

ブール値

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

true

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

AllowFilter

ブール値

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

false

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

FilterList

List<String>

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

["m1", "m2"]

いいえ

AlignmentMode

文字列

ビデオとナレーションのアライメントモードです。グローバルスクリプトモードでのみ有効です。

有効な値:

  • 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、横向き 0.05、正方形 0.08。
    "Y": 0.1
  },
   "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、横向き 0.9、正方形 0.85。
      "Y": 0.8
    },
    "SpecialWordsConfig": [{
      "Type": "Highlight",
      "Style": {
        "FontName": "KaiTi",
        "FontSize": 80,
        "FontColor": "20AEE9",
        "OutlineColour": "2D20E9",
        "Outline": 3,
        "FontFace": {
          "Bold": true,
          "Underline": true
        }
      },
      "WordsList": [
        "ApsaraVideo",
        "Intelligent Media Services",
        "Batch video creation"
      ]
    },
    {
      "Type": "Highlight",
      "Style": {
        "FontFace": {
          "Italic": true
        }
      },
      "WordsList": [
        "product",
        "take a look"
      ]
    },
    {
      "Type": "Forbidden",
      "WordsList": [
        "pilipala",
        "bilibala"
      ],
      "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 で、出力先が VOD の場合に必須です。

FileName

文字列

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

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

例: example_{index}.mp4

GeneratePreviewOnly が false で、出力先が VOD の場合に必須です。

GeneratePreviewOnly

ブール値

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

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

false

いいえ。デフォルト値は false です。

Count

整数

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

10

いいえ。デフォルト値は 1 です。

MaxDuration

浮動小数点数

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

20

いいえ。デフォルト値は 15 です。

FixedDuration

浮動小数点数

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

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

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

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

  • ビデオの長さに関するルール

20

いいえ。デフォルト値はありません。

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.SplitModeNoSplit に設定することで、一貫したイントロとアウトロを追加できます。これにより、システムはこれらのグループのアセットを分割せずに使用します。

サンプルコード

クリックして 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 の例

前提条件

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

コード例

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

展開してコード例を表示

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 コールと日常的な運用には、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(
            "Wondering where to go for the holiday? Lugu Lake in Yunnan invites you for a date with nature. The azure lake is like a mirror, reflecting the unique customs of the Mosuo Kingdom of Women, as picturesque as a painting.",
            "Still hesitant about your holiday plans? Why not consider a natural feast at Lugu Lake in Yunnan? The azure, mirror-like lake reflects the unique folk customs of the Mosuo Kingdom of Women, picturesque and fascinating."
        );

        // 動画タイトル
        List<String> titleArray = Arrays.asList(
            "Lugu Lake: Mosuo customs in a beautiful landscape",
            "Exploring the mysterious Lugu Lake",
            "Immersive experience of Lugu Lake"
        );

        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": [
    "Wondering where to go for the holiday? Lugu Lake in Yunnan invites you for a date with nature. The azure lake is like a mirror, reflecting the unique customs of the Mosuo Kingdom of Women, as picturesque as a painting.",
    "Still hesitant about your holiday plans? Why not consider a natural feast at Lugu Lake in Yunnan? The azure, mirror-like lake reflects the unique folk customs of the Mosuo Kingdom of Women, picturesque and fascinating."
  ],
  "TitleArray": [
    "Lugu Lake: Mosuo customs in a beautiful landscape",
    "Exploring the mysterious Lugu Lake",
    "Immersive experience of Lugu Lake"
  ]
}

OutputConfig

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

高度な構成

詳細設定については、「バッチワンクリックビデオ作成のロジックと高度な構成」をご参照ください。

よくある質問

スクリプトビデオに関するよくある質問は、「よくある質問」をご参照ください。

リファレンス