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

Intelligent Media Services:スクリプトベースの自動動画生成

最終更新日:Nov 09, 2025

この Topic では、スクリプトベースの自動動画生成の制作用パラメーター、詳細設定、および SDK (ソフトウェア開発キット) の呼び出し例について説明します。

重要
  • スクリプト動画とスマートテキスト/画像動画は、同じジョブ送信 API を使用します。パラメーターを使用して 2 つを区別する方法については、「パラメーターの違い」をご参照ください。

  • 注: この API では、すべてのメディアアセットの Object Storage Service (OSS) URL のリージョンは、OpenAPI エンドポイントのリージョンと同じである必要があります。

  • スクリプトベースの自動動画生成をサポートするリージョンは、中国 (上海)、中国 (北京)、中国 (杭州)、中国 (深圳)、米国 (西部)、およびシンガポールです。

  • 実際には、例の [your-bucket]、[your-region-id]、[your-file-name]、[your-file-path]、メディアアセット ID (例: 「****9d46c8b4548681030f6e****」) などのパラメーターを実際の値に置き換えてください。

説明
  • この Topic をよりよく理解するために、まず「スマート動画作成」のスクリプト動画について学習することをお勧めします。

  • スクリプトベースの自動動画生成には、グローバルナレーションモードとグループナレーションモードの 2 つの処理モードがあります。

    • グローバルナレーションモード: 複数の完全なナレーションスクリプトとスクリプトノードをランダムに組み合わせて、バッチ動画のミキシングと編集を実現します。

    • グループナレーションモード: 完全なナレーションスクリプトを複数の段落に分割し、それらを異なるスクriptノードとペアリングして、より良い結果を実現します。

    • 次のセクションでは、パラメーターを使用してグローバルナレーションモードとグループナレーションモードを区別する方法について説明します:

使用上の注意

InputConfig パラメーター

説明

InputConfig を設定して、動画アセット、ナレーション、BGM、ステッカーなどの基本素材のパラメーターを指定できます。

パラメーター

タイプ

説明

必須

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

MediaGroupArray

List<MediaGroup>

自動動画生成のためのスクリプト化された素材。グループ名と素材リストを設定できます。

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

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

最大 40 グループ。各グループには最大 200 の素材を含めることができます。

詳細については、「グローバルアナウンスパターン - パラメーター例」および「グループアナウンスパターン - パラメーター例」をご参照ください

はい

  • グローバルナレーション

  • グループナレーション

TitleArray

List<String>

タイトルの配列。各動画制作でランダムなタイトルが選択されます。

最大 50 タイトル。各タイトルは最大 50 文字です。

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

いいえ

  • グローバルナレーション

  • グループナレーション

SubHeadingArray

List<SubHeading>

字幕設定。

[{"Level":1,"TitleArray":["レベル 1 字幕 1","レベル 1 字幕 2"]},{"Level":3,"TitleArray":["レベル 3 字幕"]}]

いいえ

  • グローバルナレーション

  • グループナレーション

SpeechTextArray

List<String>

  • ナレーションスクリプトの配列。各動画制作でランダムなスクリプトが選択されます。

  • 最大 50 スクリプト。各スクリプトは最大 1,000 文字です。

  • SSML マークアップ言語を使用して音声合成を制御できます。

  • デフォルトの話し言葉は中国語 (zh) です。他の言語を設定するには、「SpeechLanguage」パラメーターをご参照ください。

    重要

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

["ナレーション内容 1","ナレーション内容 2"]

いいえ

  • グローバルナレーション

StickerArray

List<Sticker>

  • ステッカーの配列。各動画制作でランダムなステッカーが選択されます。最大 50 個のステッカーがサポートされています。

  • ランダム選択ルール: たとえば、10 個のステッカーを提供し、制作する動画の数を 20 に設定した場合、1 から 10 までの乱数 (たとえば 3) が生成されます。その後、ステッカーは 3、4、5、6、7、8、9、10、1、2、3、4、5、6、7 などの順序で選択されます。

  • サポートされている素材フォーマットの詳細については、「画像フォーマット」をご参照ください。

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

いいえ

  • グローバルナレーション

  • グループナレーション

BackgroundMusicArray

List<String>

  • BGM の配列。各動画制作でランダムなトラックが選択されます。最大 50 トラックがサポートされています。メディアアセット ID または OSS URL を使用できます。

  • ランダム選択ルール: たとえば、10 個の BGM トラックを提供し、制作する動画の数を 20 に設定した場合、1 から 10 までの乱数 (たとえば 3) が生成されます。その後、トラックは 3、4、5、6、7、8、9、10、1、2、3、4、5、6、7 などの順序で選択されます。

  • サポートされているメディアフォーマットについては、「音声フォーマット」をご参照ください。

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

いいえ

  • グローバルナレーション

  • グループナレーション

BackgroundImageArray

List<String>

  • 背景画像の配列。各動画制作でランダムな画像が選択されます。最大 50 枚の画像がサポートされています。メディアアセット ID または OSS URL を使用できます。

  • ランダム選択ルール: たとえば、10 枚の背景画像を提供し、制作する動画の数を 20 に設定した場合、1 から 10 までの乱数 (たとえば 3) が生成されます。その後、画像は 3、4、5、6、7、8、9、10、1、2、3、4、5、6、7 などの順序で選択されます。

  • サポートされているフォーマットのリストについては、「画像フォーマット」をご参照ください。

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

いいえ

  • グローバルナレーション

  • グループナレーション

MediaGroup パラメーター

説明

グローバルナレーションモードとグループナレーションモードの MediaGroup パラメーター設定の違いは、表の「サポートされているモード」列に示されています。

パラメーター

タイプ

説明

必須

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

GroupName

String

グループ名。

最大 50 文字。絵文字はサポートされていません。

Group1

はい

  • グローバルナレーション

  • グループナレーション

MediaArray

List<String>

  • 素材のリスト。メディア ID または URL を使用できます。最大 200 の素材がサポートされています。

  • サポートされているフォーマットについては、「動画フォーマット」をご参照ください。

****b4549d46c88681030f6e****

はい

  • グローバルナレーション

  • グループナレーション

SpeechTextArray

List<String>

  • ナレーションスクリプトの配列。各動画制作でランダムなスクリプトが選択されます。

  • 最大 50 スクリプト。各スクリプトは最大 1,000 文字です。

  • SSML マークアップ言語を使用して音声合成を制御することをサポートします。

    重要

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

["ナレーション内容 1","ナレーション内容 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": [
    "回龍観の盒馬鮮生がオープンしました",
    "盒馬鮮生がオープンしました"
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["字幕 1", "字幕 2"]
    },
    {
      "Level": 3,
      "TitleArray": ["レベル 3 字幕"]
    }
  ],
  "SpeechTextArray": [
    "近くのモールに新しい盒馬鮮生がオープンしました。今日はグランドオープンで、早速駆けつけてみました。店内はそれほど広くありませんが、モールは混雑しています。スナックやドリンクはかなり安く、レジは長蛇の列です。ぜひ見に来てください!",
    "近くのモールに新しい盒馬鮮生がオープンしました。今日はグランドオープンなので、盛り上がりを見に来ました。",
    "<speak>戦いは <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">激しい</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"],
    "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": ["近くのモールに新しい盒馬鮮生がオープンしました。今日はグランドオープンです。", "今日はこの盒馬鮮生のグランドオープンです。", "<speak>戦いは <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">激しい</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"],
      "Duration": 5
    }
  ],
  "TitleArray": [
    "回龍観の盒馬鮮生がオープンしました",
    "盒馬鮮生がオープンしました"
  ],
  "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 を設定して、クリップのボリューム、位置、その他の合成パラメーターを指定できます。パラメーター例については、「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

BGM の設定。

{"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

Float

長い動画素材を編集すると、自動的に分割されます。このパラメーターは、分割後の 1 ショットの持続時間 (秒) を指定します。

5

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

AllowVfxEffect

Boolean

特殊効果を追加するかどうかを指定します。

true

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

VfxEffectProbability

Float

各動画クリップに特殊効果を適用する確率。値の範囲: 0.0 から 1.0。小数点以下 2 桁までサポートされています。

0.6

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

VfxFirstClipEffectList

List<String>

  • VfxFirstClipEffectList が空でない場合、動画の最初のクリップの効果はこのリストから選択されます。

  • VfxFirstClipEffectList が空の場合、最初のクリップの効果は、「slightshow」、「starfieldshinee」、「starfieldshinee2」、「starsparkle」、「colorfulripples」、「starfield」の中からランダムに選択されます。

  • 効果の例については、「効果の例」をご参照ください。

["slightshow","starfieldshinee"]

いいえ

VfxNotFirstClipEffectList

List<String>

  • VfxNotFirstClipEffectList が空でない場合、最初のクリップ以外のクリップの効果はこのリストから選択されます。

  • VfxNotFirstClipEffectList が空の場合、最初のクリップ以外のクリップの効果は、「zoomslight」、「zoom」、「zoominout」、「slightshake」の中から選択されます。

  • 詳細については、「効果の例」をご参照ください。

["zoomslight","zoom"]

いいえ

AllowTransition

Boolean

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

true

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

TransitionDuration

Float

トランジションの持続時間 (秒)。トランジションの持続時間が (クリップの持続時間 - 1) より大きい場合、そのクリップのトランジション効果は適用されません。

0.5

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

TransitionList

List<String>

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

["directional", "linearblur"]

いいえ

UseUniformTransition

Boolean

1 つの制作された動画全体で同じトランジション効果を使用するかどうかを指定します。

true

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

AllowFilter

Boolean

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

false

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

FilterList

List<String>

カスタムフィルター効果のリスト。`AllowFilter` が `true` に設定されている場合、このリストからフィルターがランダムに選択されて合成されます。利用可能なフィルター効果については、「フィルター効果の例」をご参照ください。このパラメーターが空の場合、フィルター効果は追加されません。

["m1", "m2"]

いいえ

AlignmentMode

String

動画とナレーションスクリプトの配置モード。このパラメーターはグローバルナレーションモードでのみ有効です。 有効値:

  • 「AutoSpeed」: 動画トラックの持続時間は、音声トラックに合わせてスケーリングされます。

  • 「Cut」: 動画トラックの持続時間は、音声トラックに合わせて切り捨てられます。

AutoSpeed

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

ImageDuration

Float

画像素材の持続時間 (秒)。

2

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

EditingConfig パラメーター例

{
  "MediaConfig": {
    "Volume": 0 // デフォルトで動画素材をミュート
  },
  "TitleConfig": {
    "Alignment": "TopCenter",
    "AdaptMode": "AutoWrap",
    "Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
    "SizeRequestType": "Nominal",
    "Y": 0.1, // 出力動画が縦長モードの場合のタイルのデフォルト Y 座標
    "Y": 0.05, // 出力動画が横長モードの場合のタイルのデフォルト Y 座標
    "Y": 0.08 // 出力動画が正方形モードの場合のタイルのデフォルト 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 座標
      "Y": 0.9, // 出力動画が横長モードの場合の字幕のデフォルト Y 座標
      "Y": 0.85 // 出力動画が正方形モードの場合の字幕のデフォルト 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": [
        "pilipala",
        "bilibala"
      ],
      "SoundReplaceMode": "None"
    }
  ]},
  "BackgroundMusicConfig": {
    "Volume": 0.2,   // デフォルトで BGM に元のボリュームの 20% を使用
    "Style": null
  },
  "ProcessConfig": {
    "SingleShotDuration": 3,      // 分割後のショットの持続時間
    "AllowVfxEffect": false,	  // 特殊効果を追加するかどうかを指定
    "AllowTransition": false,	  // トランジション効果を追加するかどうかを指定
    "AlignmentMode": "AutoSpeed"  // このフィールドはグローバルナレーションモードでのみサポートされています
  }
}

TemplateConfig パラメーター

TemplateConfig は、ワンクリック動画作成機能のテンプレートを設定するために使用される共通パラメーターです。詳細なパラメーターの説明と使用例については、「TemplateConfig パラメーター」をご参照ください。

OutputConfig パラメーター

OutputConfig を設定して、出力アドレス、命名規則、幅と高さ、制作する動画の数などの制作パラメーターを指定できます。

説明

OutputConfig パラメーターの設定は、グローバルナレーションモードとグループナレーションモードの両方で同じです。

パラメーター

タイプ

説明

必須

MediaURL

String

出力動画のアドレス。{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

String

ApsaraVideo VOD (VOD) に出力されるメディアアセットファイルのストレージの場所。

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

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

GeneratePreviewOnly が false で、出力動画が VOD に保存される場合に必須です。

FileName

String

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

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

例: example_{index}.mp4

GeneratePreviewOnly が false で、出力動画が VOD に保存される場合に必須です。

GeneratePreviewOnly

Boolean

  • GeneratePreviewOnly が true に設定されている場合、現在のタスクはプレビュー用のタイムラインのみを生成し、実際の制作は行いません。出力動画のアドレスを指定する必要はありません。

  • ワンクリック動画作成ジョブが完了したら、「GetBatchMediaPoducingJob」を呼び出してジョブの結果をクエリします。返されたサブタスクリストには、動画編集プロジェクト ID、projectId が含まれています。その後、「GetEditingProject」を呼び出してプレビュータイムラインを取得できます。

false

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

Count

Integer

出力する動画の数。最大は 100 です。

10

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

MaxDuration

Float

1 つの出力動画の最大持続時間 (秒)。

20

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

FixedDuration

Float

1 つの出力動画の固定持続時間 (秒)。固定持続時間が設定されている場合、動画の持続時間はこのパラメーターに合わせられます。

  • このパラメーターはグループナレーションモードではサポートされていません。

  • グローバルナレーションモードでは、SpeechTextArray が空の場合にこのパラメーターがサポートされます。

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

  • 詳細については、「動画の持続時間ルール」をご参照ください。

20

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

Width

Integer

出力動画の幅 (ピクセル)。

1080

はい

Height

Integer

出力動画の高さ (ピクセル)。

1920

はい

Video

JSON

Crf や Codec などの出力動画ストリームの設定。

{"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": [
                "雲南省の瀘沽湖が、自然との約束にあなたを招待します。紺碧の湖は鏡のようで、絵のように美しい摩梭族の女国の独特の風習を映し出しています。湖の中心でボートを漕ぎ、揺れる丸木舟の中で穏やかな歳月を感じてください。XX 山を見上げ、その **** 神秘的な伝説に耳を傾けてください。何を待っていますか?",
                "雲南省の瀘沽湖での自然の饗宴を考えてみませんか?紺碧の鏡のような湖は、摩梭族の女国の独特の民俗を映し出し、絵のように美しく魅力的です。湖の中心で leisurely にボートを漕ぎ、揺れる丸木舟の中で静かな歳月を体験できます。また、神聖な XX 山を見上げ、何千年もの間受け継がれてきた古く神秘的な伝説に耳を傾けることもできます。瀘沽湖に来てください。"
            ]
        },
        {
            "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 呼び出しと日常の O&M には RAM ユーザーを使用することを推奨します。
        // この例では、AccessKey ID と AccessKey Secret を環境変数に格納する方法を示します。設定方法の詳細については、https://www.alibabacloud.com/help/en/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 to an appointment with nature. The azure lake is like a mirror, reflecting the unique customs of the Mosuo Kingdom of Women, as picturesque as a painting. Row a boat in the heart of the lake and feel the peaceful years in a swaying dugout canoe. Look up at XX Mountain and its **** mysterious legends. What are you waiting for? Come to Lugu Lake and share this quiet and charming landscape!",
            "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. You can leisurely row a boat in the heart of the lake, experiencing the tranquil years in a swaying dugout canoe. You can also look up at the sacred XX Mountain and listen to the ancient and mysterious legends that have been passed down through thousands of years. Come to Lugu Lake, and share the endless poetry brought by this quiet and charming landscape!"
        );

        // 動画タイトル
        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 アドレス。{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": [
    "休日はどこに行こうか迷っていますか?雲南省の瀘沽湖が、自然との約束にあなたを招待します。紺碧の湖は鏡のようで、絵のように美しい摩梭族の女国の独特の風習を映し出しています。湖の中心でボートを漕ぎ、揺れる丸木舟の中で穏やかな歳月を感じてください。XX 山を見上げ、その **** 神秘的な伝説に耳を傾けてください。何を待っていますか?瀘沽湖に来て、この静かで魅力的な風景を共有しましょう!",
    "まだ休日の計画に迷っていますか?雲南省の瀘沽湖での自然の饗宴を考えてみませんか?紺碧の鏡のような湖は、摩梭族の女国の独特の民俗を映し出し、絵のように美しく魅力的です。湖の中心で leisurely にボートを漕ぎ、揺れる丸木舟の中で静かな歳月を体験できます。また、神聖な XX 山を見上げ、何千年もの間受け継がれてきた古く神秘的な伝説に耳を傾けることもできます。瀘沽湖に来て、この静かで魅力的な風景がもたらす無限の詩情を共有しましょう!"
  ],
  "TitleArray": [
    "瀘沽湖: 美しい風景の中の摩梭族の風習",
    "神秘的な瀘沽湖を探る",
    "瀘沽湖の没入型体験"
  ]
}

クリックして OutputConfig を表示

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

詳細設定

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

よくある質問

スクリプト動画に関するよくある質問については、「スクリプト動画 FAQ」をご参照ください。

リファレンス