全部產品
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,指定視頻素材、口播、背景音樂、貼紙等基礎素材的參數配置。

參數

類型

說明

樣本值

是否必填

支援模式

MediaGroupArray

List<MediaGroup>

指令碼化自動成片模式。輸入為指令碼化素材,支援設定分組名、素材列表

分組名:不超過50個字元,不支援emoji。

素材列表:媒資ID或素材OSS URL。

最多40個分組,每組最多200個素材。

詳見全域口播模式-參數樣本分組口播模式-參數樣本

  • 全域口播

  • 分組口播

TitleArray

List<String>

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

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

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

  • 全域口播

  • 分組口播

SubHeadingArray

List<SubHeading>

副標題設定

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

  • 全域口播

  • 分組口播

SpeechTextArray

List<String>

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

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

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

  • 背景音樂數組,每次合成隨機選一個。最多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****"]

  • 全域口播

  • 分組口播

MediaGroup 參數說明

說明

“全域口播模式”與“分組口播模式”的MediaGroup參數配置差異可根據表格列“支援模式”區分。

參數

類型

說明

樣本值

是否必填

支援模式

GroupName

String

分組名,

不超過50個字元,不支援emoji。

Group1

  • 全域口播

  • 分組口播

MediaArray

List<String>

  • 素材列表,支援 mediaId 或 url。最多支援200個素材。

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

****b4549d46c88681030f6e****

  • 全域口播

  • 分組口播

SpeechTextArray

List<String>

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

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

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

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

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

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": ["三級副標題"]
    }
  ],
  "SpeechTextArray": [
    "附近的商場新開了一家盒馬鮮生,今天是第一天開業,趕緊來湊熱鬧,這家盒馬面積不大,但商場裡的人不少,零食、酒水都比較便宜,排隊的人都排成了長龍,大家也快來看看呀",
    "附近的商場新開了一家盒馬鮮生,今天是第一天開業,趕緊來湊熱鬧",
    "<speak>戰火<phoneme alphabet=\"py\" ph=\"zheng4 hao3\">正酣</phoneme>。今天,我們的主角,乒壇傳奇馬龍,正向著榮耀的巔峰發起衝擊。1/4決賽中面對實力強勁的戶上隼輔,馬龍毫不畏懼,每一個回合都全力以赴。他精準的球路和冷靜的判斷,讓他在這場比賽中佔據了上風。最終,馬龍成功戰勝對手,晉級四強。</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>。今天,我們的主角,乒壇傳奇馬龍,正向著榮耀的巔峰發起衝擊。1/4決賽中面對實力強勁的戶上隼輔,馬龍毫不畏懼,每一個回合都全力以赴。他精準的球路和冷靜的判斷,讓他在這場比賽中佔據了上風。最終,馬龍成功戰勝對手,晉級四強。</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", "一級副標題2"]
    },
    {
      "Level": 3,
      "TitleArray": ["三級副標題"]
    }
  ],
  "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

背景音樂相關配置。

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

長視頻素材進行剪輯時會自動拆條,拆條後單鏡頭的時間長度,單位秒。

5

否,預設3

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

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, // 人聲複製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的預設座標值
    },
    "SpecialWordsConfig": [{
      "Type": "Highlight",
      "Style": {
        "FontName": "KaiTi",
        "FontSize": 80,
        "FontColor": "20AEE9",
        "OutlineColour": "2D20E9",
        "Outline": 3,
        "FontFace": {
          "Bold": true,
          "Underline": true
        }
      },
      "WordsList": [
        "視頻雲",
        "智能媒體服務",
        "智能一鍵成片"
      ]
    },
    {
      "Type": "Highlight",
      "Style": {
        "FontFace": {
          "Italic": true
        }
      },
      "WordsList": [
        "商品",
        "看看"
      ]
    },
    {
      "Type": "Forbidden",
      "WordsList": [
        "劈裡啪啦",
        "嗶哩吧啦"
      ],
      "SoundReplaceMode": "None"
    }
  ]},
  "BackgroundMusicConfig": {
    "Volume": 0.2,   // 背景音樂預設用20%音量,
    "Style": null
  },
  "ProcessConfig": {
    "SingleShotDuration": 3,      // 拆條後的鏡頭時間長度
    "AllowVfxEffect": false,	  // 是否添加特效效果
    "AllowTransition": false,	  // 是否添加轉場效果
    "AlignmentMode": "AutoSpeed"  // 僅在全域口播模式下支援此欄位
  }
}

TemplateConfig 參數說明

TemplateConfig為一鍵成片的公用參數,用於設定一鍵成片模板。詳細參數說明和使用樣本詳見TemplateConfig 參數說明

OutputConfig 參數說明

使用者可通過配置OutputConfig,指定成片輸出地址、名稱規則、成片的寬高、輸出成片數量等合成參數。

說明

“全域口播模式”與“分組口播模式”的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

指定輸出到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查詢任務結果,返回的子任務列表中會包含剪輯工程projectId,再調用GetEditingProject可擷取到預覽時間軸。

false

否,預設false

Count

Integer

輸出視頻數,數量上限為100。

10

否,預設1

MaxDuration

Float

輸出視頻單片時間長度上限,單位秒。

20

否,預設15

FixedDuration

Float

輸出視頻單片的固定時間長度,單位秒。如果設定了固定時間長度,視頻時間長度將會對齊此參數。

  • 分組口播模式不支援設定該參數;

  • 全域口播模式下,在SpeechTextArray為空白的情況下可支援設定此參數;

  • FixedDuration和MaxDuration只能二選一;

  • 時間長度規則詳見成片時間長度規則

20

否,預設15

Width

Integer

成片寬,px

1080

Height

Integer

成片高,px

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
}

應用樣本

樣本一:通過口播分組模式配置標題片尾

適用情境

如果您希望為視頻添加一致的標題和片尾,並配備統一的口播,請參閱該情境的樣本。您可以通過將首尾分組的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山,****神秘的故事傳說。還在等什麼",
                "何不考慮赴一場雲南瀘沽湖的自然盛宴。那湛藍如鏡的湖面,映射出摩梭女兒國獨特的民俗風情,如詩如畫,引人入勝。您可在湖心悠然泛舟,體驗豬槽船搖曳間的寧靜歲月;也可抬頭瞻仰神聖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
}

樣本二:通過指令碼化自動成片製作人臉集錦視頻

如果您對人臉集錦情境相關的需求感興趣,建議您查閱相關最佳實務:人臉集錦視頻製作最佳實務

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 {
        // 阿里雲帳號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 {

        // 視頻素材
        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(
            "假期糾結去哪兒玩?雲南瀘沽湖邀您共赴一場與自然的約會。湛藍湖水如鏡,映照著摩梭女兒國的獨特風情,如詩如畫。泛舟湖心,感受豬槽船搖曳的歲月靜好;仰望XX山,****神秘的故事傳說。還在等什麼,快來瀘沽湖共用這一份靜謐而迷人的湖光山色吧!",
            "假期規劃還在猶豫不決?何不考慮赴一場雲南瀘沽湖的自然盛宴。那湛藍如鏡的湖面,映射出摩梭女兒國獨特的民俗風情,如詩如畫,引人入勝。您可在湖心悠然泛舟,體驗豬槽船搖曳間的寧靜歲月;也可抬頭瞻仰神聖XX山,傾聽那穿越千年的古老神秘傳說。快來瀘沽湖,共用這片靜謐而迷人的湖光山色所帶來的無盡詩意吧!"
        );

        // 視頻標題
        List<String> titleArray = Arrays.asList(
            "瀘沽湖:湖光山色中的摩梭風情",
            "探尋秘境瀘沽湖",
            "沈浸式體驗瀘沽湖"
        );

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

        // 產生的成片數
        int produceCount = 4;

        // 成片寬高,產生豎屏檔案
        //int outputWidth = 1080;
        //int outputHeight = 1920;

        //// 成片寬高,產生橫屏檔案
        int outputWidth = 1920;
        int outputHeight = 1080;

        // 成片oss地址,需包含{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山,****神秘的故事傳說。還在等什麼,快來瀘沽湖共用這一份靜謐而迷人的湖光山色吧!",
    "假期規劃還在猶豫不決?何不考慮赴一場雲南瀘沽湖的自然盛宴。那湛藍如鏡的湖面,映射出摩梭女兒國獨特的民俗風情,如詩如畫,引人入勝。您可在湖心悠然泛舟,體驗豬槽船搖曳間的寧靜歲月;也可抬頭瞻仰神聖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

相關文檔