日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

腳本化自動成片

本文旨在介紹在腳本化自動成片場景下的合成參數(shù)、進(jìn)階配置、SDK調(diào)用示例。

說明
  • 為了更好地閱讀本文,建議您在閱讀之前先了解智能一鍵成片中與【腳本化自動成片】相關(guān)的內(nèi)容。

  • 腳本化自動成片當(dāng)前存在兩種處理模式分別為“全局口播模式”和“分組口播模式”:

    • 全局口播模式:可以通過多個完整的口播文案隨機(jī)搭配腳本節(jié)點(diǎn),從而實(shí)現(xiàn)批量視頻混剪。

    • 分組口播模式:可以通過將一個完整的口播文案拆分成多個段落,并分別與腳本的各個節(jié)點(diǎn)進(jìn)行巧妙搭配,以實(shí)現(xiàn)更佳的效果。

    • 如何通過參數(shù)區(qū)分“全局口播模式”和“分組口播模式”,如下所示:

  • 支持腳本化自動成片的區(qū)域:華東2(上海)、華北2(北京)、華東1(杭州)、華南1(深圳)。

使用說明

InputConfig 參數(shù)說明

說明

用戶可通過配置InputConfig,指定視頻素材、口播、背景音樂、貼紙等基礎(chǔ)素材的參數(shù)配置。

參數(shù)

類型

說明

是否必填

支持模式

MediaGroupArray

List<MediaGroup>

腳本化自動成片模式。輸入為腳本化素材,支持設(shè)置分組名、素材列表

分組名:不超過50個字符,不支持emoji。

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

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

  • 全局口播

  • 分組口播

TitleArray

List<String>

標(biāo)題數(shù)組,每次合成隨機(jī)選一個

最多50個,每個標(biāo)題不超過50字

  • 全局口播

  • 分組口播

SubHeadingArray

List<SubHeading>

副標(biāo)題設(shè)置

  • 全局口播

  • 分組口播

SpeechTextArray

List<String>

口播文案數(shù)組,每次合成隨機(jī)選一個。

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

  • 全局口播

StickerArray

List<Sticker>

貼紙數(shù)組,每次合成隨機(jī)選一個。

最多50個。

  • 全局口播

  • 分組口播

BackgroundMusicArray

List<String>

背景音樂數(shù)組,每次合成隨機(jī)選一個。

最多50個,支持媒資ID 或 OSS URL。

  • 全局口播

  • 分組口播

BackgroundImageArray

List<String>

背景圖片數(shù)組,每次合成隨機(jī)選擇一個。

最多50個,支持媒資ID 或 OSS URL。

  • 全局口播

  • 分組口播

MediaGroup 參數(shù)說明

說明

“全局口播模式”與“分組口播模式”的MediaGroup參數(shù)配置差異可根據(jù)表格列“支持模式”區(qū)分。

參數(shù)

類型

說明

是否必填

支持模式

GroupName

String

分組名

不超過50個字符,不支持emoji。

  • 全局口播

  • 分組口播

MediaArray

List<String>

素材列表,支持 mediaId 或 url。

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

  • 全局口播

  • 分組口播

SpeechTextArray

List<String>

口播文案數(shù)組,每次合成隨機(jī)選一個。

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

  • 分組口播

Duration

Float

當(dāng)前分組截取視頻的時長,默認(rèn)5秒。僅限SpeechTextArray為空時填寫

  • 分組口播

SubHeading 參數(shù)說明

說明

“全局口播模式”與“分組口播模式”的SubHeading參數(shù)配置說明相同。

參數(shù)

類型

說明

是否必填

Level

Integer

副標(biāo)題級別。

枚舉:

1:一級副標(biāo)題

2:二級副標(biāo)題

3:三級副標(biāo)題

4:四級副標(biāo)題

5:五級副標(biāo)題

TitleArray

List<String>

副標(biāo)題數(shù)組,每次合成隨機(jī)選一個

最多50個,每個標(biāo)題不超過50字。

Sticker 參數(shù)說明

說明

“全局口播模式”與“分組口播模式”的Sticker參數(shù)配置說明相同。

參數(shù)

類型

說明

是否必填

MediaId

String

貼紙、logo、水印等圖片ID

二選一必填

都填寫時優(yōu)先取用MediaId

MediaURL

String

圖片URL,僅支持自有OSS

X

Float

參考VideoTrackClip.X

Y

Float

參考VideoTrackClip.Y

Width

Float

參考VideoTrackClip.Width

Height

Float

參考VideoTrackClip.Height

DynamicFrames

Integer

動圖的幀數(shù)

否,貼紙為動圖時填寫

全局口播模式-參數(shù)示例

{
  "MediaGroupArray": [
    {
      "GroupName": "UseMediaId",
      "MediaArray": [
        "****9d46c886b45481030f6e****",
        "****c886810b4549d4630f6e****"
      ]
    },
    {
      "GroupName": "UseOssUrl",
      "MediaArray": [
        "http://test-bucket.oss-cn-shanghai.aliyuncs.com/test1.mp4",
        "http://test-bucket.oss-cn-shanghai.aliyuncs.com/test2.png"
      ]
    }
  ],
  "TitleArray": [
    "回龍觀盒馬鮮生開業(yè)啦",
    "盒馬鮮生開業(yè)啦"
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["副標(biāo)題1", "副標(biāo)題2"]
    },
    {
      "Level": 3,
      "TitleArray": ["三級副標(biāo)題"]
    }
  ],
  "SpeechTextArray": [
    "附近的商場新開了一家盒馬鮮生,今天是第一天開業(yè),趕緊來湊熱鬧,這家盒馬面積不大,但商場里的人不少,零食、酒水都比較便宜,排隊(duì)的人都排成了長龍,大家也快來看看呀",
    "附近的商場新開了一家盒馬鮮生,今天是第一天開業(yè),趕緊來湊熱鬧"
  ],
  "StickerArray": [
    {
      "MediaId": "****9d46c8b4548681030f6e****",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    },
    {
      "MediaURL": "http://test-bucket.oss-cn-shanghai.aliyuncs.com/test3.png",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    }
  ],
  "BackgroundMusicArray": [
    "****b4549d46c88681030f6e****",
    "****549d46c88b4681030f6e****",
    "http://test-bucket.oss-cn-shanghai.aliyuncs.com/test4.mp3"
  ],
  "BackgroundImageArray": [
    "****6c886b4549d481030f6e****",
    "****9d46c8548b4681030f6e****",
    "http://test-bucket.oss-cn-shanghai.aliyuncs.com/test1.png"
  ]
}

分組口播模式-參數(shù)示例

{
  "MediaGroupArray": [{
    "GroupName": "start",
    "MediaArray": ["https://ice-*****-test.oss-cn-*****.aliyuncs.com/0-test-batch-editing-materials/1.jpeg", "https://ice-auto-test.oss-cn-shanghai.aliyuncs.com/0-test-batch-editing-materials/highway.mp4"],
    "Duration": 5
  },
    {
      "GroupName": "group1",
      "MediaArray": ["https://ice-*****-test.oss-cn-*****.aliyuncs.com/0-test-batch-editing-materials/160134%2B9859695-2032aa5c-2803-47cd-bf65-8a40d66598db.png", "https://ice-auto-test.oss-cn-shanghai.aliyuncs.com/0-test-batch-editing-materials/cloud.mp4"],
      "SpeechTextArray": ["附近的商場新開了一家盒馬鮮生,今天是第一天開業(yè)", "今天是這家盒馬鮮生第一天開業(yè)"]
    },
    {
      "GroupName": "group2",
      "MediaArray": ["https://ice-*****-test.oss-cn-*****.aliyuncs.com/0-test-batch-editing-materials/normal%20video.mp4", "https://ice-auto-test.oss-cn-shanghai.aliyuncs.com/0-test-batch-editing-materials/3.jpeg"],
      "SpeechTextArray": ["這家盒馬面積不大,但商場里的人不少,零食、酒水都比較便宜,排隊(duì)的人都排成了長龍", "現(xiàn)場特別熱鬧,人山人海,商品琳瑯滿目"]
    },
    {
      "GroupName": "group3",
      "MediaArray": ["https://ice-*****-test.oss-cn-*****.aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
      "SpeechTextArray": ["快來看看吧", "快點(diǎn)來看看吧"]
    },
    {
      "GroupName": "end",
      "MediaArray": ["https://ice-*****-test.oss-cn-*****.aliyuncs.com/0-test-batch-editing-materials/media_type_as_video.jpg", "https://ice-auto-test.oss-cn-shanghai.aliyuncs.com/0-test-batch-editing-materials/highway.mp4"],
      "Duration": 5
    }
  ],
  "TitleArray": [
    "回龍觀盒馬鮮生開業(yè)啦",
    "盒馬鮮生開業(yè)啦"
  ],
  "StickerArray": [
    {
      "MediaId": "****9d46c8b4548681030f6e****",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    },
    "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["副標(biāo)題1", "副標(biāo)題2"]
    },
    {
      "Level": 3,
      "TitleArray": ["三級副標(biāo)題"]
    }
  ],
    {
      "MediaURL": "http://test-bucket.oss-cn-*****.aliyuncs.com/test3.png",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    }
  ],
  "BackgroundMusicArray": [
    "****b4549d46c88681030f6e****",
    "****549d46c88b4681030f6e****",
    "http://test-bucket.oss-cn-*****.aliyuncs.com/test4.mp3"
  ],
  "BackgroundImageArray": [
    "****6c886b4549d481030f6e****",
    "****9d46c8548b4681030f6e****",
    "http://test-bucket.oss-cn-*****.aliyuncs.com/test1.png"
  ]
}

EditingConfig 參數(shù)說明

用戶可通過配置EditingConfig,指定成片素材的音量、位置及其他合成參數(shù)。

說明

除了以下參數(shù)外,其余參數(shù)皆支持“全局口播模式”和“分組口播模式”:

  • ProcessConfig.AlignmentMode僅在“全局口播模式”下生效;

參數(shù)

類型

說明

是否必填

MediaConfig

JSON

輸入視頻素材相關(guān)配置。

支持字段:

  • Volume: 輸入視頻的音量,,默認(rèn)0。取值:[0, 10.0],支持小數(shù),例:0.5。

  • MediaMetaDataArray: 媒資meta信息列表。單個MediaMetaData包含以下字段

    • Media: 媒資ID 或 OSS URL,需和InputConfig 中傳入的素材保持一致。

    • GroupName:此處填入媒資所屬的分組。

    • TimeRangeList:入出點(diǎn)范圍列表,每個素材支持指定多段入出點(diǎn),從中選取片段合成。單個TimeRange字段如下:

      • In:素材入點(diǎn)

      • Out:素材出點(diǎn)

TitleConfig

JSON

標(biāo)題相關(guān)配置。支持配置字幕參數(shù),字段詳見:橫幅文字

SubHeadingConfig

JSON

JSON說明:

key:Level

value:橫幅文字

示例如下:

{
    "1": {
      "Y": 0.3,
      "FontSize": 40
    },
    "3": {
      "Y": 0.5,
      "FontSize": 30
    }
  }

SpeechConfig

JSON

口播文案相關(guān)配置。

支持字段:

  • Volume:口播音頻的音量,默認(rèn)1。取值:[0, 10.0],支持小數(shù),例:0.5。

  • AsrConfig:支持配置字幕參數(shù),字段詳見:橫幅文字

  • Voice:指定單個或多個口播音色。當(dāng)指定多個voice時,會隨機(jī)選取一個合成。音色的可選范圍請參見智能語音效果示例。例:"zhimiao_emo,zhilun"。

  • SpeechRate:語速,取值范圍:-500~500,默認(rèn)值:0。

    • [-500, 0, 500] 對應(yīng)的語速倍速區(qū)間為 [0.5, 1.0, 2.0]。

說明

計(jì)算方法如下:

  • 0.8倍速(1-1/0.8)/0.002 = -125

  • 1.2倍速(1-1/1.2)/0.001 = 166

小于1倍速時,使用0.002系數(shù)。

大于1倍速時,使用0.001系數(shù)。

實(shí)際算法結(jié)果取近似值。

  • Style:口播聲音風(fēng)格,默認(rèn)為空。若同時指定Voice和Style,則優(yōu)先取用Voice。取值:

    • "Gentle": 柔和

    • "Serious":嚴(yán)肅

    • "Entertainment":娛樂

  • CustomizedVoice:支持自定義的音色,填寫人聲克隆的VoiceId。若填寫了此字段,Voice和Style將失效。

BackgroundMusicConfig

JSON

背景音樂相關(guān)配置。

支持字段:

  • Volume:背景音樂的音量,默認(rèn)0.2。取值:[0, 10.0],支持小數(shù),例:0.5。

  • Style:背景音樂風(fēng)格,默認(rèn)為空。若InputConfig中已配置背景音樂,此字段不生效。取值:

    • "bgm-beauty":時尚

    • "bgm-chinese-style":中國風(fēng)

    • "bgm-cuisine":美食

    • "bgm-dynamic":動感

    • "bgm-quirky":怪誕

    • "bgm-relaxing":輕松

    • "bgm-romantic":浪漫

    • "bgm-upbeat":歡快

BackgroundImageConfig

JSON

背景圖相關(guān)配置。如果InputConfig中已配置背景圖,則此字段不生效。

支持字段:

  • SubType:背景類型。取值:

    • "Color":純色背景

    • "Blur":背景模糊

  • Radius:模糊半徑,當(dāng)SubType=Blur時,此參數(shù)生效,取值范圍[0.01, 1]

  • Color:背景顏色。SubType=Color時,此參數(shù)生效,16進(jìn)制RGB顏色,例:#000000。

ProcessConfig

混剪處理配置。

支持字段:

  • SingleShotDuration:長視頻素材進(jìn)行剪輯時會自動拆條,拆條后單鏡頭的時長,默認(rèn)3秒。

  • AllowVfxEffect:是否允許添加特效效果,默認(rèn)false。

  • VfxEffectProbability:特效應(yīng)用在每個視頻片段上的概率,默認(rèn)0.5,取值:0.0 - 1.0,支持2位小數(shù)。

  • AllowTransition:是否允許添加轉(zhuǎn)場效果,默認(rèn)false。

  • TransitionList:自定義轉(zhuǎn)場效果列表,當(dāng)AllowTransition=true時,隨機(jī)選取列表中的一個轉(zhuǎn)場效果進(jìn)行合成。例:["directional", "linearblur"]

  • UseUniformTransition:單個成片中是否使用一致的轉(zhuǎn)場效果,默認(rèn)true。

  • AlignmentMode:表示視頻和口播文案的對齊模式。僅在“全局口播模式”下生效。取值:

    • "AutoSpeed":視頻軌道時長按照音頻軌道縮放,默認(rèn)。

    • "Cut":視頻軌道時長按照音頻軌道截?cái)唷?/p>

ProduceConfig

JSON

普通剪輯合成配置,字段詳見:EditingProduceConfig

參數(shù)示例

{
  "MediaConfig": {
    "Volume": 0 // 默認(rèn)視頻素材靜音
  },
  "TitleConfig": {
    "Alignment": "TopCenter",
    "AdaptMode": "AutoWrap",
    "Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
    "SizeRequestType": "Nominal",
    "Y": 0.1, // 成片為豎屏?xí)r,標(biāo)題Y坐標(biāo)值
    "Y": 0.05, // 成片為橫屏?xí)r,標(biāo)題Y坐標(biāo)值
    "Y": 0.08 // 成片為方屏?xí)r,標(biāo)題Y坐標(biāo)值
  },
   "SubHeadingConfig": {
    "1": {
      "Y": 0.3,
      "FontSize": 40
    },
    "3": {
      "Y": 0.5,
      "FontSize": 30
    }
  },
  "SpeechConfig": {
    "Volume": 1,  // 口播音頻默認(rèn)用原始音量
    "SpeechRate": 0,
    "Voice": null,
    "Style": null,
    "CustomizedVoice": null  // 若填寫了此字段,Voice和Style將失效。
    "AsrConfig": {
      "Alignment": "TopCenter",
      "AdaptMode": "AutoWrap",
      "Font": "Alibaba PuHuiTi 2.0 65 Medium",
      "SizeRequestType": "Nominal",
      "Spacing": -1,
      "Y": 0.8, // 成片為豎屏?xí)r,字幕Y坐標(biāo)值
      "Y": 0.9, // 成片為橫屏?xí)r,字幕Y坐標(biāo)值
      "Y": 0.85 // 成片為方屏?xí)r,字幕Y坐標(biāo)值
    }
  },
  "BackgroundMusicConfig": {
    "Volume": 0.2,   // 背景音樂默認(rèn)用20%音量,
    "Style": null
  },
  "ProcessConfig": {
    "SingleShotDuration": 3,      // 拆條后的鏡頭時長
    "AllowVfxEffect": false,	  // 是否添加特效效果
    "AllowTransition": false,	  // 是否添加轉(zhuǎn)場效果
    "AlignmentMode": "AutoSpeed"  // 僅支持全局口播模式下支持此字段
  }
}

OutputConfig 參數(shù)說明

用戶可通過配置OutputConfig,指定成片輸出地址、名稱規(guī)則、成片的寬高、輸出成片數(shù)量等合成參數(shù)。

說明

“全局口播模式”與“分組口播模式”的OutputConfig參數(shù)配置說明是相同的。

參數(shù)

類型

必填

說明

MediaURL

String

成片輸出到OSS時必填

輸出視頻地址,必須要有占位符

如:http://xxx.oss-cn-shanghai.aliyuncs.com/xxx_{index}.mp4

StorageLocation

String

成片輸出到VOD時必填

指定輸出到VOD的媒資文件存儲地址

如:outin-xxxxxx.oss-cn-shanghai.aliyuncs.com

FileName

String

成片輸出到VOD時必填

輸出文件名稱,必須要有占位符,

如:xxx_{index}.mp4

GeneratePreviewOnly

Boolean

否,默認(rèn)false

GeneratePreviewOnly = true時,表示當(dāng)前任務(wù)僅生成預(yù)覽用的時間線,不實(shí)際合成,可不填寫輸出視頻的地址。

一鍵成片任務(wù)完成后,通過GetBatchMediaProducingJob查詢?nèi)蝿?wù)結(jié)果,返回的子任務(wù)列表中會包含剪輯工程projectId,再調(diào)用GetEditingProject可獲取到預(yù)覽時間線。

Count

Integer

否,默認(rèn)1

輸出視頻數(shù),數(shù)量上限為100。

MaxDuration

Float

否,默認(rèn)15秒

輸出視頻單片時長上限。

  • 如果有確定「口播文本」參數(shù),以口播文本tts時長為準(zhǔn),當(dāng)前參數(shù)無效。

  • 分組口播模式無需設(shè)置該參數(shù);

  • FixedDuration和MaxDuration只能二選一;

  • 時長規(guī)則詳見處理邏輯

FixedDuration

Float

否,默認(rèn)15秒

輸出視頻單片的固定時長。如果設(shè)置了固定時長,視頻時長將會對齊此參數(shù)。

  • 分組口播模式不支持設(shè)置該參數(shù);

  • 全局口播模式下,在SpeechTextArray為空的情況下可支持設(shè)置此參數(shù);

  • FixedDuration和MaxDuration只能二選一;

  • 時長規(guī)則詳見處理邏輯

Width

Integer

成片寬,px

Height

Integer

成片高,px

Video

JSONObject

輸出視頻流相關(guān)配置,Crf、Codec等

參數(shù)示例

{
 	"MediaURL": "http://xxx.oss-cn-shanghai.aliyuncs.com/xxx_{index}.mp4",
 	"Count": 20,
 	"MaxDuration": 15,
 	"Width": 1080,
 	"Height": 1920,
 	"Video": {"Crf": 27},
        "GeneratePreviewOnly":false
}

SDK調(diào)用示例

前提條件

您已安裝IMS服務(wù)端SDK,詳情請參見準(zhǔn)備工作

代碼示例

以全局口播模式為例

展開查看代碼示例

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 = "<service-region>"; // 智能圖文匹配支持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的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
        // 本示例以將AccessKey ID和 AccessKey Secret保存在環(huán)境變量為例說明。配置方法請參見:http://bestwisewords.com/zh/sdk/developer-reference/v2-manage-access-credentials?spm=a2c4g.11186623.0.0.423350fbOTFdOB#2a38e5c14b4em
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();

        Config config = new Config();
        config.setCredential(credentialClient);

        // 如需硬編碼AccessKey ID和AccessKey Secret,代碼如下,但強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
        // config.accessKeyId = <第二步創(chuàng)建的AccessKey ID>;
        // config.accessKeySecret = <第二步創(chuàng)建的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(
            "假期糾結(jié)去哪兒玩?云南瀘沽湖邀您共赴一場與自然的約會。湛藍(lán)湖水如鏡,映照著摩梭女兒國的獨(dú)特風(fēng)情,如詩如畫。泛舟湖心,感受豬槽船搖曳的歲月靜好;仰望女神山,傾聽古老神秘的故事傳說。還在等什么,快來瀘沽湖共享這一份靜謐而迷人的湖光山色吧!",
            "假期規(guī)劃還在猶豫不決?何不考慮赴一場云南瀘沽湖的自然盛宴。那湛藍(lán)如鏡的湖面,映射出摩梭女兒國獨(dú)特的民俗風(fēng)情,如詩如畫,引人入勝。您可在湖心悠然泛舟,體驗(yàn)豬槽船搖曳間的寧靜歲月;也可抬頭瞻仰神圣女神山,傾聽那穿越千年的古老神秘傳說。快來瀘沽湖,共享這片靜謐而迷人的湖光山色所帶來的無盡詩意吧!"
        );

        // 視頻標(biāo)題
        List<String> titleArray = Arrays.asList(
            "瀘沽湖:湖光山色中的摩梭風(fēng)情",
            "探尋秘境瀘沽湖",
            "沉浸式體驗(yàn)瀘沽湖"
        );

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

        // 生成的成片數(shù)
        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);

        // 提交一鍵成片任務(wù)
        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);

        // 輪詢?nèi)蝿?wù)狀態(tài)直到全部結(jié)束
        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調(diào)用入?yún)⒃斍?/b>

展開查看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": [
    "假期糾結(jié)去哪兒玩?云南瀘沽湖邀您共赴一場與自然的約會。湛藍(lán)湖水如鏡,映照著摩梭女兒國的獨(dú)特風(fēng)情,如詩如畫。泛舟湖心,感受豬槽船搖曳的歲月靜好;仰望女神山,傾聽古老神秘的故事傳說。還在等什么,快來瀘沽湖共享這一份靜謐而迷人的湖光山色吧!",
    "假期規(guī)劃還在猶豫不決?何不考慮赴一場云南瀘沽湖的自然盛宴。那湛藍(lán)如鏡的湖面,映射出摩梭女兒國獨(dú)特的民俗風(fēng)情,如詩如畫,引人入勝。您可在湖心悠然泛舟,體驗(yàn)豬槽船搖曳間的寧靜歲月;也可抬頭瞻仰神圣女神山,傾聽那穿越千年的古老神秘傳說。快來瀘沽湖,共享這片靜謐而迷人的湖光山色所帶來的無盡詩意吧!"
  ],
  "TitleArray": [
    "瀘沽湖:湖光山色中的摩梭風(fēng)情",
    "探尋秘境瀘沽湖",
    "沉浸式體驗(yàn)瀘沽湖"
  ]
}

展開查看OutputConfig

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

結(jié)果示例

豎屏

橫屏

混剪邏輯與進(jìn)階配置

處理邏輯

全局口播模式:

  • 如果輸入視頻為長視頻片段,會先進(jìn)行拆條,混剪時選取拆條后的視頻片段進(jìn)行拼接合成。拆條后單鏡頭的時長默認(rèn)為3s,您也可以通過參數(shù)EditingConfig.ProcessConfig.SingleShotDuration指定鏡頭時長。

  • 如果有輸入全局口播文案,在數(shù)量足夠的前提下,盡量不重復(fù)選取。例如:輸入3條文案,需要生成5條視頻,則5條成片中會出現(xiàn)相同文案,但3條文案都會被使用至少一次。

  • 按照分組順序,先每組隨機(jī)挑選一個拆條后的視頻片段,進(jìn)行前后拼接。如果輸入了全局口播文案且視頻總時長少于口播時長,則優(yōu)先從非首尾分組中隨機(jī)選取視頻片段,直到視頻總時長與口播時長相當(dāng)。

  • 成片時長規(guī)則:

    • 輸入了全局口播文案:成片時長=口播文案的時長。

    • 沒有輸入全局口播文案:

分組口播模式:

  • 和「全局口播模式」相同,先對長視頻進(jìn)行拆條。相比于全局口播模式,分組口播模式的口播文案在MediaGroup中進(jìn)行分組設(shè)置。因此,MediaGroup新增了SpeechTextArray字段。采用分組口播模式時,無需設(shè)置InputConfig.SpeechText或SpeechTextArray,若進(jìn)行設(shè)置將導(dǎo)致錯誤。

  • MediaGroup.SpeechTextArray 為空,說明這個素材組無口播,用Duration控制該組時長,默認(rèn)5s。

  • 每組支持傳入多組口播,如果所有組的口播數(shù)量一致(除去無口播組),則默認(rèn)按順序組合。比如所有組都選用第N個口播片段。如果每組的口播數(shù)量不一致,則每組隨機(jī)選一個口播片段,最后合并成完整口播。

進(jìn)階配置

進(jìn)階配置詳見批量一鍵成片混剪邏輯與進(jìn)階配置

典型場景

  • 如果僅輸入一個分組(MediaGroup),并且該組內(nèi)存在一個或多個視頻,則對輸入素材進(jìn)行隨機(jī)剪輯與拼接;若未設(shè)置口播,但仍希望生成一定時長的成片,則需設(shè)置OutputConfig.FixedDuration,否則生成的成片僅會包含一個3秒的小片段。

  • 如果輸入多個分組,每組包含一個或多個視頻,并且每個視頻的時長彼此接近,例如均為5秒左右,且希望按順序從每組中選擇一個片段進(jìn)行前后拼接,則需將EditingConfig.ProcessConfig.SingleShotDuration設(shè)置為5秒(盡量保持與原始素材長度大致一致),通過此操作,能夠確保不再對“已選擇為片段的素材”進(jìn)行截取。

  • 當(dāng)輸入一個分組時,如果該分組包含圖片和視頻,則有一定幾率會選取到圖片,此時圖片將占滿整個成片。因此,建議避免采用這種使用方式。圖片時長的計(jì)算邏輯如下:

應(yīng)用示例

示例一:通過口播分組模式配置片頭片尾

適用場景

如果您希望為視頻添加一致的片頭和片尾,并配備統(tǒng)一的口播,請參閱該場景的示例。

示例參數(shù)

展開查看InputConfig參數(shù)示例

{
    "mediaGroupArray": [
        {
            "duration": 4,
            "groupName": "opening",
            "mediaArray": [
                "https://*****.****.****/public-template/video/movie_apsara_4.mp4"
            ]
        },
        {
            "groupName": "group1",
            "mediaArray": [
                "http://*****.****.****/test_media/lgh/lgh-start-1.mp4"
            ],
            "speechTextArray": [
                "假期糾結(jié)去哪兒玩?",
                "假期規(guī)劃還在猶豫不決?"
            ]
        },
        {
            "groupName": "group2",
            "mediaArray": [
                "http://*****.****.****/test_media/lgh/lgh-m-1.mp4",
                "http://*****.****.****/test_media/lgh/lgh-m-2.mp4",
                "http://*****.****.****/test_media/lgh/lgh-m-3.mp4"
            ],
            "speechTextArray": [
                "云南瀘沽湖邀您共赴一場與自然的約會。湛藍(lán)湖水如鏡,映照著摩梭女兒國的獨(dú)特風(fēng)情,如詩如畫。泛舟湖心,感受豬槽船搖曳的歲月靜好;仰望女神山,傾聽古老神秘的故事傳說。還在等什么",
                "何不考慮赴一場云南瀘沽湖的自然盛宴。那湛藍(lán)如鏡的湖面,映射出摩梭女兒國獨(dú)特的民俗風(fēng)情,如詩如畫,引人入勝。您可在湖心悠然泛舟,體驗(yàn)豬槽船搖曳間的寧靜歲月;也可抬頭瞻仰神圣女神山,傾聽那穿越千年的古老神秘傳說。快來瀘沽湖"
            ]
        },
        {
            "groupName": "group3",
            "mediaArray": [
                "http://*****.****.****/test_media/lgh/lgh-end-1.mp4"
            ],
            "speechTextArray": [
                "快來瀘沽湖共享這一份靜謐而迷人的湖光山色吧!",
                "共享這片靜謐而迷人的湖光山色所帶來的無盡詩意吧!"
            ]
        },
        {
            "duration": 4,
            "groupName": "ending",
            "mediaArray": [
                "https://*****.****.****/public-template/video/movie_apsara_3.mp4"
            ]
        }
    ]
}

展開查看EditingConfig參數(shù)示例

{
    "MediaConfig": {
        "MediaMetaDataArray": [
            {
                "Media": "https://*****.****.****/public-template/video/movie_apsara_4.mp4",
                "GroupName": "opening",
                "TimeRangeList": [
                    {
                        "In": 1.5,
                        "Out": 5.5
                    }
                ]
            },
            {
                "Media": "https://*****.****.****/public-template/video/movie_apsara_3.mp4",
                "GroupName": "ending",
                "TimeRangeList": [
                    {
                        "In": 1.5,
                        "Out": 5.5
                    }
                ]
            }
        ]
    }
}

展開查看OutputConfig參數(shù)示例

{
    "count": 10,
    "height": 1920,
    "mediaURL": "https://*****.****.****/lgh-opening-ending/1731294507380_{index}.mp4",
    "width": 1080,
    "widthHeightRatio": 0.5625
}

示例展示

示例二:通過腳本化自動成片制作人臉集錦視頻

如果您對人臉集錦場景相關(guān)的需求感興趣,建議您查閱相關(guān)最佳實(shí)踐:人臉集錦視頻制作最佳實(shí)踐

相關(guān)文檔