全部產品
Search
文件中心

Intelligent Media Services:影視集錦情境

更新時間:Sep 17, 2025

本文旨在介紹在智能圖文匹配-影視集錦情境下的合成參數、進階配置、SDK調用樣本。

重要
  • 指令碼化自動成片與智能圖文匹配成片共用同一個提交任務API。有關如何通過參數區分這兩者,請參見參數區別說明

  • 注意:在此介面中,所有媒資的OSS URL中的地區(region)必須與調用OpenAPI服務地址中的地區(region)保持一致。

  • 支援的地區:華東2(上海)、華北2(北京)、華東1(杭州)、華南1(深圳)、美國(西部)、新加坡。

  • 在實際使用過程中,請將文檔所有參數樣本中的 [your-bucket]、[your-region-id]、[your-file-name]、[your-file-path]、媒資ID(例如:“****9d46c8b4548681030f6e****”)等參數替換為您的實際值。

說明
  • 為了更好地閱讀本文,建議您在閱讀本文之前先通過智能一鍵成片操作指南瞭解【智能圖文匹配成片-影視集錦情境】相關的概念與使用流程。

  • 智能圖文匹配-影視集錦情境包含兩種成片模式。本文將針對以下幾種“模式”進行詳細闡述:

    • 全域口播模式

    • 分鏡指令碼模式

使用說明

InputConfig 參數說明

使用者可通過配置InputConfig,指定視頻素材、口播、背景音樂、貼紙等基礎素材的參數配置。

參數

類型

說明

樣本值

是否必填

支援模式

MediaArray

List<String>

  • 智能圖文匹配模式。支援傳入媒資ID或素材OSS URL列表,視頻總時間長度最多兩小時。

  • 素材支援的格式詳見視頻格式

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

全部支援

TitleArray

List<String>

標題數組,每次合成隨機選一個

最多50個,每個標題不超過50字

["標題1","標題2"]

全部支援

SubHeadingArray

List<SubHeading>

副標題設定

[{"Level":1,"TitleArray":["一級副標題1","一級副標題2"]},{"Level":3,"TitleArray":["三級副標題"]}]

全部支援

SpeechTextArray

List<String>

  • 口播文案數組,每次合成隨機選一個。

  • 最多50個,每條口播文案最長1000個字元。

  • 支援通過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 參數說明

說明
  • 此參數只適用於分鏡指令碼模式,如果是全域口播模式無需設定此參數。

  • 在影視集錦情境-分鏡指令碼模式中,有兩種分鏡模式:“文案描述模式”、“手工解析模式”,在設定參數時,需要二選一。

參數

類型

說明

樣本值

是否必填

分鏡模式

ScriptText

String

單個分鏡的指令碼文案,用於描述分鏡的內容。請盡量用1至2句話對分鏡內容進行概括。

地鐵車廂裡,林夏坐在角落,悄悄舉起手機錄影。老奶奶正牽著孫子的手,輕輕哼著歌。

文案描述模式

SpeechText

String

  • 單個分鏡中的口播文案,長度不超過100個字元。

  • 支援通過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

  • 輸入視頻的音量。如果在此處設定了音量(Volume),則當前分鏡內的視頻音量將與此處的音量對齊。而EditingConfig.MediaConfig.Volume將不再對此分組生效。

  • 取值:[0, 10.0],支援兩位小數。

0.5

全部支援

FaceInfo 參數說明

參數

類型

說明

是否必填

ImageInfoList

List<ImageInfo>

人物(人臉)照片列表,列表長度上限200。

ImageInfo 參數說明

參數

類型

說明

樣本值

是否必填

Name

String

人物(人臉)名稱

丹尼爾

ImageURL

String

人物(人臉)照片儲存地址,需要是公網可訪問的URL連結。請確保人臉圖片中僅包含一名個體,並且人臉應清晰可見,無明顯遮擋或缺失現象。

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

是,二選一必填

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": ["三級副標題"]
    }
  ],
  "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": [
        // 文案描述模式樣本start,對於每個分鏡,手工解析模式與文案描述模式二選一
        {
          "ScriptText": "地鐵車廂裡,林夏坐在角落,悄悄舉起手機錄影。老奶奶正牽著孫子的手,輕輕哼著歌。",
          "SpeechText": "深夜的車廂很安靜,但有些人,用歌聲點亮了整節車廂的溫度。"
        },
        {
           "ScriptText": "老奶奶的白髮在車燈下泛著光,她一邊摸著孫子的頭,一邊輕聲說:‘你還記得這首歌嗎?’",
           "SpeechText": "她的世界或許模糊了,但在他面前,她還是那個最溫柔的母親。"
        },
        {
           "ScriptText": "林夏停下拍攝,看著窗外飛速掠過的廣告牌,眼神變得柔軟。",
           "SpeechText": "我以為我在記錄別人的故事,其實我被悄悄治癒了。"
        },
        {
           "ScriptText": "家中,林夏翻出相機,寫下第一篇日記:‘今天,我看見了幸福的樣子。’",
           "SpeechText": "有時候,幸福不是大事,而是那些被我們忽略的小瞬間。"
        },
        {
           "ScriptText": "幾天后,林夏的社交媒體上,一張張溫暖照片引髮網友共鳴。",
           "SpeechText": "她開始用鏡頭講故事,而每一個故事,都藏著一份愛。"
        },
        {
           "ScriptText": "夜晚,林夏再次走進地鐵站,這一次,她帶著微笑和新的目標。",
           "SpeechText": "這座城市很大,但總有人在等你,也有人值得你去發現。"
        }
        // 文案描述模式樣本 end
        
        // 手工解析模式樣本 start,對於每個分鏡,手工解析模式與文案描述模式二選一
        {
            "Descriptions": ["林夏坐在地鐵車廂角落,悄悄舉起手機錄影", "老奶奶牽著孫子的手,輕輕哼著歌"],
            "Characters": ["林夏", "老奶奶", "孫子"],
            "Settings": ["深夜地鐵車廂"],
            "SpeechText": "深夜的車廂很安靜,但有些人,用歌聲點亮了整節車廂的溫度。"
        },
        {
            "Descriptions": ["老奶奶白髮在車燈下泛光", "她一邊摸著孫子的頭,一邊輕聲說話"],
            "Characters": ["老奶奶", "孫子"],
            "Settings": ["地鐵車廂"],
            "SpeechText": "她的世界或許模糊了,但在他面前,她還是那個最溫柔的母親。"
        },
        {
            "Descriptions": ["林夏停下拍攝動作", "望向窗外飛速掠過的廣告牌,眼神變得柔軟"],
            "Characters": ["林夏"],
            "Settings": ["行駛中的地鐵車廂"],
            "SpeechText": "我以為我在記錄別人的故事,其實我被悄悄治癒了。"
        },
        {
            "Descriptions": ["林夏在家翻出相機", "寫下第一篇日記‘今天,我看見了幸福的樣子’"],
            "Characters": ["林夏"],
            "Settings": ["現代公寓 / 居室"],
            "SpeechText": "有時候,幸福不是大事,而是那些被我們忽略的小瞬間。"
        },
        {
            "Descriptions": ["林夏的社交媒體頁面上,溫暖照片陸續發布", "網友紛紛點贊留言"],
            "Characters": ["林夏"],
            "Settings": ["手機螢幕 / 社交平台介面"],
            "SpeechText": "她開始用鏡頭講故事,而每一個故事,都藏著一份愛。"
        },
        {
            "Descriptions": ["夜晚,林夏走進地鐵站", "她帶著微笑和新的目標"],
            "Characters": ["林夏"],
            "Settings": ["城市地鐵站"],
            "SpeechText": "這座城市很大,但總有人在等你,也有人值得你去發現。"
        }
        // 手工解析模式樣本 end

        // 支援不配置口播,僅配置分鏡指令碼和分鏡時間長度,設定視頻原聲播放
       {
            "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

Boolean

是否允許添加特效效果。

true

否,預設false

VfxEffectProbability

Float

特效應用在每個視頻片段上的機率,取值:0.0 - 1.0,支援2位小數。

0.6

否,預設0.5

VfxFirstClipEffectList

List<String>

  • 當VfxFirstClipEffectList不為空白時,成片的第一個片段的特效將從VfxFirstClipEffectList中選擇。

  • 當VfxFirstClipEffectList為空白時,成片第一個片段的特效將從以下特效中隨機播放:"slightshow"、"starfieldshinee"、"starfieldshinee2"、"starsparkle"、"colorfulripples"、"starfield"。

  • 特效樣本詳見:特效效果樣本

["slightshow","starfieldshinee"]

VfxNotFirstClipEffectList

List<String>

  • 當VfxNotFirstClipEffectList不為空白時,成片中非第一個片段的特效將從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

單個成片中是否使用一致的轉場效果。

true

否,預設true

AllowFilter

Boolean

是否允許添加自訂濾鏡

false

否,預設false

FilterList

List<String>

自訂濾鏡效果列表,當AllowFilter=true時,隨機選取列表中的一個濾鏡進行合成,濾鏡效果的可選範圍濾鏡效果樣本,如果此參數為空白,則不會添加濾鏡效果。

["m1", "m2"]

AllowDuplicateMatch

Boolean

表示匹配過的片段是否允許重複使用。

false

否,預設false

EnableClipDetection:

Boolean

是否對素材進行分鏡檢測。僅影視集錦可配置。支援自動劃分鏡頭,識別鏡頭類型(標題片尾、廣告、黑屏等不參與成片)。

true

否,預設為true

EnableTemporalOpt

Boolean

是否對匹配結果進行時序最佳化,僅影視集錦可配置。當輸入的分鏡資訊或解說文案,與源片的內容順序基本保持一致時,建議填寫為true。

true

否,預設false

EnableSubtitleMatch

Boolean

基於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

Boolean

  • GeneratePreviewOnly = true時,表示當前任務僅產生預覽用的時間軸,不實際合成,可不填寫輸出視頻的地址。

  • 一鍵成片任務完成後,通過GetBatchMediaPoducingJob查詢任務結果,返回的子任務列表中會包含剪輯工程projectId,再調用GetEditingProject可擷取到預覽時間軸。

false

否,預設false

Count

Integer

輸出視頻數

  • 影視集錦情境-全域口播模式:數量上限不超過InputConfig.SpeechTextArray的長度。

  • 影視集錦情境-分鏡指令碼模式:當前支援Count=1,後續可能支援輸出多個視頻。

1

否,預設1

Width

Integer

成片寬,px

1080

Height

Integer

成片高,px

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調用樣本

前提條件

您已安裝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 {
        // 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。
        // 本樣本以將AccessKey ID和 AccessKey Secret儲存在環境變數為例說明。配置方法請參見:https://www.alibabacloud.com/help/zh/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 = <第二步建立的AccessKey ID>;
        // config.accessKeySecret = <第二步建立的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 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

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

進階配置

進階配置詳見批量一鍵成片混剪邏輯與進階配置

常見問題

指令碼化自動成片常見問題請參見影視集錦FAQ

相關文檔