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

Intelligent Media Services:映画ハイライトシナリオ

最終更新日:Nov 09, 2025

この Topic では、映画ハイライトシナリオの構成パラメーター、詳細設定、およびソフトウェア開発キット (SDK) の呼び出し例について説明します。

重要
  • 自動スクリプトベースのビデオ生成とスマートコンテンツマッチングビデオ生成では、同じ API を使用してタスクを送信します。パラメーターを使用してそれらを区別する方法の詳細については、「パラメーターの違い」をご参照ください。

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

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

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

説明
  • この Topic をよりよく理解するために、「ワンクリックスマートビデオ生成のユーザーガイド」を読んで、映画ハイライトシナリオの概念とプロシージャについて学んでください。

  • 映画ハイライトシナリオは、2 つのビデオ生成モードをサポートしています。この Topic では、次のモードについて詳しく説明します。

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

    • ストーリーボードモード

使用上の注意

InputConfig パラメーター

InputConfig を使用して、ビデオクリップ、ナレーション、バックグラウンドミュージック、ステッカーなどの基本アセットのパラメーターを指定します。

パラメーター

タイプ

説明

必須

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

MediaArray

List<String>

  • スマートコンテンツマッチングモード。メディアアセット ID または OSS URL のリストを入力できます。ビデオの合計デュレーションは 2 時間を超えることはできません。

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

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

はい

完全サポート

TitleArray

List<String>

タイトルの配列。ビデオ生成ごとにランダムなタイトルが選択されます。

最大 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>

  • ナレーションスクリプトの配列。ビデオ生成ごとにランダムなスクリプトが選択されます。

  • 最大 50 スクリプトを指定できます。各スクリプトには最大 1,000 文字を含めることができます。

  • 音声合成マークアップ言語 (SSML) を使用して音声合成を制御できます。詳細については、「SSML」をご参照ください。

    重要

    現在、サポートされているのは <break>、<s>、<phoneme> のみです。CosyVoice 音色の場合、サポートされているのは <break>、<s>、<sub> のみです。

["ナレーションコンテンツ 1","ナレーションコンテンツ 2"]

いいえ

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

SceneInfo

SceneInfo

シナリオ情報。シナリオ関連のパラメーターに使用されます。

詳細については、「パラメーター例: グローバルナレーションモード」および「パラメーター例: ストーリーボードモード」をご参照ください。

はい

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

  • ストーリーボードモード

StickerArray

List<Sticker>

  • ステッカーの配列。ビデオ生成ごとにランダムなステッカーが選択されます。最大 50 個のステッカーを指定できます。メディアアセット ID または OSS URL を使用できます。

  • ランダム化ルール: 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>

  • バックグラウンドミュージックトラックの配列。ビデオ生成ごとにランダムなトラックが選択されます。最大 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****"]

いいえ

完全サポート

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****"]

いいえ

すべてのモード

SceneInfo パラメーター

パラメーター

タイプ

説明

必須

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

Scene

String

マッチングシナリオタイプ。映画ハイライトシナリオの場合、このパラメーターを静的フィールド "MovieHighlights" に設定します。

はい

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

  • ストーリーボードモード

ShotInfo

ShotInfo

ストーリーボードを構成します。

はい

  • ストーリーボードモード

FaceInfo

FaceInfo

顔情報を構成します。

いいえ

完全サポート

ShotInfo パラメーター

説明

このパラメーターはストーリーボードモードにのみ適用されます。グローバルナレーションモードでは、このパラメーターを設定する必要はありません。

パラメーター

タイプ

説明

必須

ShotScripts

List<ShotScript>

ショットスクリプトの配列。

はい

ShotScript パラメーター

説明
  • このパラメーターはストーリーボードモードにのみ適用されます。グローバルナレーションモードでは、このパラメーターを設定する必要はありません。

  • 映画ハイライトシナリオのストーリーボードモードでは、テキスト説明モードと手動解析モードの 2 つのショットモードが利用可能です。パラメーターを設定する際に、これらのモードのいずれかを選択する必要があります。

パラメーター

タイプ

説明

必須

ショットモード

ScriptText

String

単一ショットのスクリプトテキスト。ショットの内容を説明します。ショットの内容を 1 文か 2 文で要約します。

地下鉄の車内で、林夏は隅に座り、静かに携帯電話で録画している。老婆が孫の手を握り、静かに歌を口ずさんでいる。

いいえ

テキスト説明モード

SpeechText

String

  • 単一ショットのナレーションスクリプト。スクリプトには最大 100 文字を含めることができます。

  • SSML を使用して音声合成を制御できます。詳細については、「SSML」をご参照ください。

    重要

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

深夜の車内は静かだが、歌声で車内全体を明るくする人もいる。

いいえ

すべてのモード

Duration

Float

  • ショットのデュレーション (秒)。値は 1 以上である必要があります

  • このパラメーターは、ナレーションがない場合にのみ有効です。ナレーションが存在する場合、ショットのデュレーションはナレーションのデュレーションに基づいて自動的に計算されます。

5

いいえ

Descriptions

List<String>

単一ショットの詳細な説明。ショットの内容を 1 文か 2 文で要約します。

["地下鉄の車内の隅に座り、静かに携帯電話で録画する林夏", "老婆が孫の手を握り、静かに歌を口ずさむ"]

いいえ

手動解析モード

Characters

List<String>

単一ショットの登場人物 (顔) の名前。注: 登場人物名は FaceInfo.ImageInfoList の ImageInfo.Name と同じである必要があります。

["林夏", "老婆", "孫"]

いいえ

Settings

List<String>

単一ショットのシーン説明。

["深夜の地下鉄車内"]

いいえ

Volume

Float

  • 入力ビデオのボリューム。ここでボリュームを設定すると、現在のショットのビデオのボリュームがこの値に揃えられます。EditingConfig.MediaConfig.Volume パラメーターはこのグループには適用されなくなります。

  • 有効値: [0, 10.0]。小数点以下 2 桁までサポートされています。

0.5

いいえ

完全サポート

FaceInfo パラメーター

パラメーター

タイプ

説明

必須

ImageInfoList

List<ImageInfo>

登場人物 (顔) の写真のリスト。リストには最大 200 枚の写真を含めることができます。

いいえ

ImageInfo パラメーター

パラメーター

タイプ

説明

必須

Name

String

登場人物 (顔) の名前。

Daniel

はい

ImageURL

String

登場人物 (顔) の写真のストレージの場所。インターネット経由でアクセス可能な URL である必要があります。顔画像には 1 人の個人だけが含まれ、顔が鮮明で、大きな障害物や欠落部分がないことを確認してください。

http://[your-cdn-domain]/[your-file-path]/face1.png

はい。2 つのパラメーターのうち 1 つを指定する必要があります。

ImageId

String

画像メディアアセット ID。

****9d46c886b45481030f6e****

パラメーター例: グローバルナレーションモード

{
  "MediaArray": [
    "****9d46c886b45481030f6e****",
    "****c886810b4549d4630f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.mp4",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test2.png"
  ],
    "SceneInfo": {
    "Scene": "MovieHighlights", // 映画ハイライトマッチング用の MovieHighlights
    "FaceInfo": {
      "ImageInfoList": [
        {
          "Name": "登場人物 A",
          "ImageURL": "https://bkimg.cdn.bcebos.com/pic/3853ad1bdd9f70558718bf38?x-bce-process=image/format,f_auto/watermark,image_d2F0ZXIvYmFpa2UyNzI,g_7,xp_5,yp_5,P_20/resize,m_lfit,limit_1,h_1080"
        },
        {
          "Name": "登場人物 B",
          "ImageURL": "https://bkimg.cdn.bcebos.com/pic/622762d0f703918ffbedc1125b3d269759eec42e?x-bce-process=image/format,f_auto/watermark,image_d2F0ZXIvYmFpa2UyNzI,g_7,xp_5,yp_5,P_20/resize,m_lfit,limit_1,h_1080"
        },
        {
          "Name": "登場人物 C",
          "ImageId": "****b681034549d46c880f6e****"
        }
      ]
    }
  },
  "TitleArray": [
    "回龍観の盒馬鮮生がオープンしました!",
    "盒馬鮮生がオープンしました!"
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["字幕 1", "字幕 2"]
    },
    {
      "Level": 3,
      "TitleArray": ["レベル 3 字幕"]
    }
  ],
  "SpeechTextArray": [
    "近くのモールに新しい盒馬鮮生がオープンしました。今日はグランドオープンなので、急いで駆けつけました。この盒馬はあまり大きくありませんが、モールは満員です。スナックや飲み物はかなり安く、行列は信じられないほど長いです。ぜひ見に来てください!",
    "近くのモールに新しい盒馬鮮生がオープンしました。今日はグランドオープンなので、急いで駆けつけました。"
  ],
  "Sticker": {
    "MediaId": "****b681034549d46c880f6e****",
    "X": 10,
    "Y": 100,
    "Width": 300,
    "Height": 300
  },
  "StickerArray": [
    {
      "MediaId": "****9d46c8b4548681030f6e****",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300,
      "Opacity": 0.6
    },
    {
      "MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test3.png",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    }
  ],
  "BackgroundMusicArray": [
    "****b4549d46c88681030f6e****",
    "****549d46c88b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test4.mp3"
  ],
  "BackgroundImageArray": [
    "****6c886b4549d481030f6e****",
    "****9d46c8548b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png"
  ]
}

パラメーター例: ストーリーボードモード

{
  "MediaArray": [
    "****9d46c886b45481030f6e****",
    "****c886810b4549d4630f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.mp4",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test2.png"
  ],
   "SceneInfo": {
    "Scene": "MovieHighlights", // 映画ハイライトマッチング用の MovieHighlights
    "ShotInfo": {
      "ShotScripts": [
        // テキスト説明モードの例の開始。各ショットについて、手動解析モードまたはテキスト説明モードのいずれかを選択します。
        {
          "ScriptText": "地下鉄の車内で、林夏は隅に座り、静かに携帯電話で録画している。老婆が孫の手を握り、静かに歌を口ずさんでいる。",
          "SpeechText": "深夜の車内は静かだが、歌声で車内全体を明るくする人もいる。"
        },
        {
           "ScriptText": "老婆の白髪が車内の照明の下で輝いている。彼女は孫の頭を撫で、'この歌を覚えているかい?'とささやく。",
           "SpeechText": "彼女の世界はぼやけているかもしれないが、彼の前では、彼女はまだ最も優しい母親だ。"
        },
        {
           "ScriptText": "林夏は撮影をやめ、窓の外で点滅する看板を見つめ、表情が和らぐ。",
           "SpeechText": "他人の物語を記録していると思っていたが、静かに癒されていた。"
        },
        {
           "ScriptText": "家で、林夏はカメラを取り出し、最初の日記を書く: '今日、私は幸せがどんなものかを見た。'",
           "SpeechText": "時々、幸せは大きなことではなく、私たちが見過ごしている小さな瞬間にある。"
        },
        {
           "ScriptText": "数日後、林夏のソーシャルメディアに投稿された一連の心温まる写真がネットユーザーの共感を呼ぶ。",
           "SpeechText": "彼女はレンズで物語を語り始め、すべての物語には愛のかけらが込められている。"
        },
        {
           "ScriptText": "夜、林夏は再び地下鉄の駅に入る。今回は笑顔で、新しい目標を持って。",
           "SpeechText": "この街は大きいが、いつも誰かがあなたを待っていて、発見する価値のある誰かがいる。"
        }
        // テキスト説明モードの例の終了
        
        // 手動解析モードの例の開始。各ショットについて、手動解析モードまたはテキスト説明モードのいずれかを選択します。
        {
            "Descriptions": ["地下鉄の車内の隅に座り、静かに携帯電話で録画する林夏", "老婆が孫の手を握り、静かに歌を口ずさむ"],
            "Characters": ["林夏", "老婆", "孫"],
            "Settings": ["深夜の地下鉄車内"],
            "SpeechText": "深夜の車内は静かだが、歌声で車内全体を明るくする人もいる。"
        },
        {
            "Descriptions": ["老婆の白髪が車内の照明の下で輝いている", "彼女は孫の頭を撫で、静かに話す"],
            "Characters": ["老婆", "孫"],
            "Settings": ["地下鉄車内"],
            "SpeechText": "彼女の世界はぼやけているかもしれないが、彼の前では、彼女はまだ最も優しい母親だ。"
        },
        {
            "Descriptions": ["林夏は撮影をやめる", "窓の外で点滅する看板を見つめ、表情が和らぐ"],
            "Characters": ["林夏"],
            "Settings": ["移動中の地下鉄車内"],
            "SpeechText": "他人の物語を記録していると思っていたが、静かに癒されていた。"
        },
        {
            "Descriptions": ["林夏は家でカメラを取り出す", "最初の日記を書く: '今日、私は幸せがどんなものかを見た'"],
            "Characters": ["林夏"],
            "Settings": ["モダンなアパート / 部屋"],
            "SpeechText": "時々、幸せは大きなことではなく、私たちが見過ごしている小さな瞬間にある。"
        },
        {
            "Descriptions": ["林夏のソーシャルメディアページに心温まる写真が投稿される", "ネットユーザーが次々と「いいね」やコメントをする"],
            "Characters": ["林夏"],
            "Settings": ["電話画面 / ソーシャルメディアインターフェイス"],
            "SpeechText": "彼女はレンズで物語を語り始め、すべての物語には愛のかけらが込められている。"
        },
        {
            "Descriptions": ["夜、林夏は地下鉄の駅に入る", "彼女は笑顔で、新しい目標を持っている"],
            "Characters": ["林夏"],
            "Settings": ["都市の地下鉄駅"],
            "SpeechText": "この街は大きいが、いつも誰かがあなたを待っていて、発見する価値のある誰かがいる。"
        }
        // 手動解析モードの例の終了

        // ナレーションを構成しないことも選択できます。ショットスクリプトとデュレーションのみを構成して、元のビデオサウンドを再生します。
       {
            "ScripText": "地下鉄の車内で、林夏は隅に座り、静かに携帯電話で録画している。老婆が孫の手を握り、静かに歌を口ずさんでいる。",
            "Duration": 8.0, // ナレーションスクリプトがない場合に設定可能 
            "Volume": 1.0 // 元のビデオアセットのボリュームを設定
       }
      ]
    },
    "FaceInfo": {
      "ImageInfoList": [
        {
          "Name": "登場人物 A",
          "ImageURL": "https://bkimg.cdn.bcebos.com/pic/3853ad1bdd9f70558718bf38?x-bce-process=image/format,f_auto/watermark,image_d2F0ZXIvYmFpa2UyNzI,g_7,xp_5,yp_5,P_20/resize,m_lfit,limit_1,h_1080"
        },
        {
          "Name": "登場人物 B",
          "ImageURL": "https://bkimg.cdn.bcebos.com/pic/622762d0f703918ffbedc1125b3d269759eec42e?x-bce-process=image/format,f_auto/watermark,image_d2F0ZXIvYmFpa2UyNzI,g_7,xp_5,yp_5,P_20/resize,m_lfit,limit_1,h_1080"
        },
        {
          "Name": "登場人物 C",
          "ImageId": "****b681034549d46c880f6e****"
        }
      ]
    }
  },
  "TitleArray": [
    "回龍観の盒馬鮮生がオープンしました!",
    "盒馬鮮生がオープンしました!"
  ],
  "StickerArray": [
    {
      "MediaId": "****9d46c8b4548681030f6e****",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    },
    {
      "MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test3.png",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300,
      "Opacity": 0.6
    }
  ],
  "BackgroundMusicArray": [
    "****b4549d46c88681030f6e****",
    "****549d46c88b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test4.mp3"
  ],
  "BackgroundImageArray": [
    "****6c886b4549d481030f6e****",
    "****9d46c8548b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png"
  ]
}

EditingConfig パラメーター

説明
  • EditingConfig を使用して、出力ビデオアセットのボリューム、位置、およびその他の構成パラメーターを指定します。特別な要件がない場合は、デフォルト構成を使用し、このフィールドは空のままにします。

  • パラメーターの説明は、映画ハイライトシナリオのグローバルナレーションモードとストーリーボードモードで同じです。

パラメーター

タイプ

説明

必須

MediaConfig

JSON

入力ビデオアセットの構成。

詳細については、「パラメーター例」をご参照ください。

いいえ

TitleConfig

JSON

タイトルの構成。字幕パラメーターを構成できます。フィールドの詳細については、「バナーテキスト」をご参照ください。

詳細については、「パラメーター例」をご参照ください。

いいえ

SubHeadingConfig

JSON

複数レベルの字幕の構成。字幕パラメーターを設定できます。

JSON フィールドの説明:

詳細については、「パラメーター例」をご参照ください。

いいえ

SpeechConfig

JSON

ナレーションスクリプトの構成。

詳細については、「パラメーター例」をご参照ください。

いいえ

BackgroundMusicConfig

JSON

バックグラウンドミュージックの構成。

{"Volume":0.2}

いいえ

BackgroundImageConfig

JSON

背景画像の構成。

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

いいえ

ProcessConfig

リミックス処理構成。

詳細については、「パラメーター例」をご参照ください。

いいえ

FECanvas

JSON

フロントエンドページのプレビュー用のキャンバス構成。

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

いいえ

ProduceConfig

JSON

標準のビデオ編集および構成。フィールドの詳細については、「EditingProduceConfig」をご参照ください。

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

いいえ

ProcessConfig パラメーター

パラメーター

タイプ

説明

必須

AllowVfxEffect

ブール値

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

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

ブール値

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

true

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

TransitionDuration

Float

トランジションのデュレーション (秒)。トランジションのデュレーションがクリップのデュレーションから 1 を引いた値より大きい場合、そのクリップのトランジションは有効になりません。

0.5

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

TransitionList

List<String>

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

["directional", "linearblur"]

いいえ

UseUniformTransition

ブール値

単一のビデオ全体で同じトランジションを使用するかどうかを指定します。

true

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

AllowFilter

ブール値

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

false

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

FilterList

List<String>

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

["m1", "m2"]

いいえ

AllowDuplicateMatch

ブール値

マッチしたクリップを再利用できるかどうかを指定します。

false

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

EnableClipDetection:

ブール値

ソースマテリアルでショット検出を実行するかどうかを指定します。これは映画ハイライトシナリオでのみ構成できます。自動ショット分割をサポートし、ショットタイプを識別します。オープニング/クロージングクレジット、広告、および黒い画面は最終的なビデオには含まれません。

true

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

EnableTemporalOpt

ブール値

マッチング結果に対して時間的最適化を実行するかどうかを指定します。これは映画ハイライトシナリオでのみ構成できます。入力ショット情報またはナレーションスクリプトがソースビデオのコンテンツ順序とほぼ一致する場合は、これを true に設定することをお勧めします。

true

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

EnableSubtitleMatch

ブール値

光学文字認識 (OCR) および自動音声認識 (ASR) の結果に基づいて、ナレーションスクリプトとビデオフレームのマッチングを最適化します。

  • 現在、このパラメーターはグローバルナレーションモードでのみサポートされています。スクリプトが元の字幕と類似している場合に有効にすることをお勧めします。

  • このパラメーターは、EnableTemporalOpt が true に設定されている場合にのみ有効になります。

true

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

EditingConfig パラメーター例

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 座標
  },
  "SpeechConfig": {
    "Volume": 1,  // デフォルトでナレーションオーディオに元のボリュームを使用
    "SpeechRate": 0,
    "Voice": null,
    "Style": null,
    "CustomizedVoice": null, // 音声クローン voiceId。このフィールドが指定されている場合、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 座標
    }
  },
  "SubHeadingConfig": {
    "1": {
      "Y": 0.3,
      "FontSize": 40
    },
    "3": {
      "Y": 0.5,
      "FontSize": 30
    }
  },
  "BackgroundMusicConfig": {
    "Volume": 0.2,   // デフォルトでバックグラウンドミュージックに 20% のボリュームを使用
    "Style": null
  },
  "ProcessConfig": {
    "AllowVfxEffect": false,	  // 特殊効果を追加するかどうかを指定します
    "AllowTransition": false,	  // トランジションを追加するかどうかを指定します
    "AllowDuplicateMatch": false, // スマートコンテンツマッチングモードで、マッチしたクリップを再利用できるかどうかを指定します
    "EnableClipDetection": true, // ショット検出を実行するかどうかを指定します
    "EnableTemporalOpt": true // 時間的最適化を実行するかどうかを指定します
  }
}

TemplateConfig パラメーター

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

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-[your-region-id].aliyuncs.com/example/example_{index}.mp4

GeneratePreviewOnly が false で、出力ビデオが OSS に送信される場合に必須です。

StorageLocation

String

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

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

例: outin-****6c886b4549d481030f6e****.oss-[your-region-id].aliyuncs.com

GeneratePreviewOnly が false で、出力ビデオが VOD に送信される場合に必須です。

FileName

String

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

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

例: example_{index}.mp4

GeneratePreviewOnly が false で、出力ビデオが VOD に送信される場合に必須です。

GeneratePreviewOnly

ブール値

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

  • ワンクリックビデオ生成タスクが完了したら、「GetBatchMediaProducingJob」を呼び出してタスク結果をクエリします。返されたサブタスクリストには編集プロジェクト ID が含まれます。次に、「GetEditingProject」を呼び出してプレビュータイムラインを取得します。

false

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

Count

Integer

出力ビデオの数。

  • グローバルナレーションモード: 最大数は InputConfig.SpeechTextArray の長さを超えることはできません。

  • ストーリーボードモード: 現在、Count=1 のみがサポートされています。複数の出力ビデオのサポートは後で追加される可能性があります。

1

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

Width

Integer

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

1080

はい

Height

Integer

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

1920

はい

Video

JSONObject

Crf や Codec などの出力ビデオストリームの構成。

{"Crf": 27}

いいえ

パラメーター例

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

SDK 呼び出し例

前提条件

Intelligent Media Service (IMS) サーバーサイド SDK をインストール済みであること。詳細については、「準備」をご参照ください。

コード例

次の例は、グローバルナレーションモードの使用方法を示しています。

コード例を展開して表示

package com.example;

import com.alibaba.fastjson.JSONObject;
import com.aliyun.ice20201109.Client;
import com.aliyun.ice20201109.models.*;
import com.aliyun.teaopenapi.models.Config;

import java.util.*;

/**
 *  // 次の 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 SmartMixBatchEditingService {

    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 {
        SmartMixBatchEditingService smartMixBatchEditingService = new SmartMixBatchEditingService();
        smartMixBatchEditingService.initClient();
        smartMixBatchEditingService.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 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 {

        // ビデオアセット
        List<String> mediaArray = Arrays.asList(
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-1.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-2.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-3.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-4.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-5.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-6.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-7.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-8.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-9.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-10.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-11.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-12.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-13.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-14.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-15.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-16.mp4"
        );

        // ナレーションスクリプト
        String speechText = "広大で果てしない青い深海で、鮮やかな絵がゆっくりと繰り広げられています。澄んだ紺碧の水の中、サンゴ礁はまるで水中の森のようで、色とりどりで壮大です。それらは海洋生物多様性の重要な基盤であり、無数の小魚、貝類、藻類に隠れ家を提供しています。怠惰で愛らしいアシカは、岩の上で暖かい日光を浴び、自然と調和して日光浴を楽しんでいます。イルカは青い水の中を一緒に泳ぎ、互いに追いかけっこをして遊び、自然から与えられた敏捷さと知恵を見せています。しかし、美しい海洋環境は前例のない課題に直面しています。さまざまな種類のゴミ汚染は、海の肌の傷のように、かつては原始的だった生態系を容赦なく侵食しています。多くの種が食糧不足、病気の増加、さらには個体数の減少に直面しています。私たちはこの美しく脆弱な青い故郷を守るために行動しなければなりません。そうすれば、未来の海は再びその純粋さと活力を取り戻すことができます。";

        // ビデオタイトル
        String title = "私たちの青い故郷を守る";
        // シナリオ情報
        JSONObject sceneInfo = new JSONObject();
        sceneInfo.put("Scene","MovieHighlights");
        // 顔情報
        JSONObject faceInfo = new JSONObject();
        sceneInfo.put("FaceInfo",faceInfo);
        JSONArray imageInfoList =new JSONArray();
        JSONObject imageInfo1=new JSONObject();
        imageInfo1.put("Name","登場人物 A");
        imageInfo1.put("ImageURL", "https://bkimg.cdn.bcebos.com/pic/3853ad1bdd9f70558718bf38?x-bce-process=image/format,f_auto/watermark,image_d2F0ZXIvYmFpa2UyNzI,g_7,xp_5,yp_5,P_20/resize,m_lfit,limit_1,h_1080");
        imageInfoList.add(imageInfo1);
        faceInfo.put("ImageInfoList",imageInfoList);

        JSONObject inputConfig = new JSONObject();
        inputConfig.put("MediaArray", mediaArray);
        inputConfig.put("SpeechText", speechText);
        inputConfig.put("Title", title);
        inputConfig.put("SceneInfo", sceneInfo);

        // 生成するビデオの数
        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/smart_mix/output_{index}.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 smart mix batch job, batchJobId: " + jobId);

        // タスクが完了するまでタスクステータスをポーリング
        System.out.println("Waiting for job to finish...");
        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 を展開して表示

{
  "MediaArray": [
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-1.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-2.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-3.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-4.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-5.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-6.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-7.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-8.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-9.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-10.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-11.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-12.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-13.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-14.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-15.mp4",
    "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-16.mp4"
  ],
  "SpeechText": "広大で果てしない青い深海で、鮮やかな絵がゆっくりと繰り広げられています。澄んだ紺碧の水の中、サンゴ礁はまるで水中の森のようで、色とりどりで壮大です。それらは海洋生物多様性の重要な基盤であり、無数の小魚、貝類、藻類に隠れ家を提供しています。怠惰で愛らしいアシカは、岩の上で暖かい日光を浴び、自然と調和して日光浴を楽しんでいます。イルカは青い水の中を一緒に泳ぎ、互いに追いかけっこをして遊び、自然から与えられた敏捷さと知恵を見せています。しかし、美しい海洋環境は前例のない課題に直面しています。さまざまな種類のゴミ汚染は、海の肌の傷のように、かつては原始的だった生態系を容赦なく侵食しています。多くの種が食糧不足、病気の増加、さらには個体数の減少に直面しています。私たちはこの美しく脆弱な青い故郷を守るために行動しなければなりません。そうすれば、未来の海は再びその純粋さと活力を取り戻すことができます。",
  "Title":"私たちの青い故郷を守る",
  "SceneInfo": {
    "Scene": "MovieHighlights", // 映画ハイライトマッチング用の MovieHighlights
    "FaceInfo": {
      "ImageInfoList": [
        {
          "Name": "登場人物 A",
          "ImageURL": "https://****.cdn.bcebos.com/pic/3853ad1bdd9f70558718bf38?x-bce-process=image/format,f_auto/watermark,image_d2F0ZXIvYmFpa2UyNzI,g_7,xp_5,yp_5,P_20/resize,m_lfit,limit_1,h_1080"
        }
      ]
    }
  }
}

OutputConfig を展開して表示

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

詳細設定

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

よくある質問

自動スクリプトベースのビデオ生成に関するよくある質問への回答については、「映画ハイライトのよくある質問」をご参照ください。

リファレンス