この Topic では、スクリプトベースの自動動画生成の制作用パラメーター、詳細設定、および SDK (ソフトウェア開発キット) の呼び出し例について説明します。
スクリプト動画とスマートテキスト/画像動画は、同じジョブ送信 API を使用します。パラメーターを使用して 2 つを区別する方法については、「パラメーターの違い」をご参照ください。
注: この API では、すべてのメディアアセットの Object Storage Service (OSS) URL のリージョンは、OpenAPI エンドポイントのリージョンと同じである必要があります。
スクリプトベースの自動動画生成をサポートするリージョンは、中国 (上海)、中国 (北京)、中国 (杭州)、中国 (深圳)、米国 (西部)、およびシンガポールです。
実際には、例の [your-bucket]、[your-region-id]、[your-file-name]、[your-file-path]、メディアアセット ID (例: 「****9d46c8b4548681030f6e****」) などのパラメーターを実際の値に置き換えてください。
この Topic をよりよく理解するために、まず「スマート動画作成」のスクリプト動画について学習することをお勧めします。
スクリプトベースの自動動画生成には、グローバルナレーションモードとグループナレーションモードの 2 つの処理モードがあります。
グローバルナレーションモード: 複数の完全なナレーションスクリプトとスクリプトノードをランダムに組み合わせて、バッチ動画のミキシングと編集を実現します。
グループナレーションモード: 完全なナレーションスクリプトを複数の段落に分割し、それらを異なるスクriptノードとペアリングして、より良い結果を実現します。
次のセクションでは、パラメーターを使用してグローバルナレーションモードとグループナレーションモードを区別する方法について説明します:
SpeechTextArray が空でない場合、モードはグローバルナレーションモードです。
SpeechTextArray が空で、MediaGroupArray に空でない MediaGroup.Duration または MediaGroup.SpeechTextArray が少なくとも 1 つ含まれている場合、モードはグループナレーションモードです。
SpeechTextArray が空で、MediaGroupArray 内のすべての MediaGroup.Duration と MediaGroup.SpeechTextArray が空の場合、モードはグローバルナレーションモードです。
使用上の注意
複数の動画、音声、画像素材をインテリジェントにミキシングし、ワンクリックで動画をバッチ生成するには、「SubmitBatchMediaProducingJob - バッチインテリジェントワンクリック動画制作」の API リファレンスをご参照ください。主要な API パラメーターの詳細については、「InputConfig パラメーターの詳細」、「EditingConfig パラメーターの詳細」、および「OutputConfig パラメーターの詳細」をご参照ください。
バッチスマートワンクリックメディア制作ジョブの詳細については、「GetBatchMediaProducingJob - バッチスマートワンクリックメディア制作ジョブに関する情報を取得する」をご参照ください。
InputConfig パラメーター
InputConfig を設定して、動画アセット、ナレーション、BGM、ステッカーなどの基本素材のパラメーターを指定できます。
パラメーター | タイプ | 説明 | 例 | 必須 | サポートされているモード |
MediaGroupArray | List<MediaGroup> | 自動動画生成のためのスクリプト化された素材。グループ名と素材リストを設定できます。 グループ名: 最大 50 文字。絵文字はサポートされていません。 素材リスト: 素材のメディアアセット ID または OSS URL。 最大 40 グループ。各グループには最大 200 の素材を含めることができます。 | 詳細については、「グローバルアナウンスパターン - パラメーター例」および「グループアナウンスパターン - パラメーター例」をご参照ください | はい |
|
TitleArray | List<String> | タイトルの配列。各動画制作でランダムなタイトルが選択されます。 最大 50 タイトル。各タイトルは最大 50 文字です。 | ["タイトル 1","タイトル 2"] | いいえ |
|
SubHeadingArray | List<SubHeading> | 字幕設定。 | [{"Level":1,"TitleArray":["レベル 1 字幕 1","レベル 1 字幕 2"]},{"Level":3,"TitleArray":["レベル 3 字幕"]}] | いいえ |
|
SpeechTextArray | List<String> |
| ["ナレーション内容 1","ナレーション内容 2"] | いいえ |
|
StickerArray | List<Sticker> |
| [{"MediaId":"****9d46c8b4548681030f6e****","X":10,"Y":100,"Width":300,"Height":300,"Opacity":0.6}] | いいえ |
|
BackgroundMusicArray | List<String> |
| ["****b4549d46c88681030f6e****","****549d46c88b4681030f6e****"] | いいえ |
|
BackgroundImageArray | List<String> |
| ["****b4549d46c88681030f6e****","****549d46c88b4681030f6e****"] | いいえ |
|
MediaGroup パラメーター
グローバルナレーションモードとグループナレーションモードの MediaGroup パラメーター設定の違いは、表の「サポートされているモード」列に示されています。
パラメーター | タイプ | 説明 | 例 | 必須 | サポートされているモード |
GroupName | String | グループ名。 最大 50 文字。絵文字はサポートされていません。 | Group1 | はい |
|
MediaArray | List<String> |
| ****b4549d46c88681030f6e**** | はい |
|
SpeechTextArray | List<String> |
| ["ナレーション内容 1","ナレーション内容 2"] | いいえ |
|
Duration | Float | 現在のグループの持続時間 (秒)。このパラメーターは、SpeechTextArray が空の場合にのみ有効です。 | 10 | いいえ。デフォルト: 5。 |
|
SplitMode | String |
| NoSplit | いいえ。デフォルト: AverageSplit。 |
|
Volume | Float |
| 0.5 | いいえ |
|
DurationAutoAdapt | Boolean | グループの自動持続時間適応を有効にするかどうかを指定します。有効でナレーションがない場合、グループの持続時間は自動的に調整され、動画クリップが元の速度で再生されるようになります。 | true | いいえ。デフォルト: false。 |
|
グローバルナレーションモード - パラメーター例
{
"MediaGroupArray": [
{
"GroupName": "UseMediaId",
"MediaArray": [
"****9d46c886b45481030f6e****",
"****c886810b4549d4630f6e****"
],
"SplitMode": "NoSplit"
},
{
"GroupName": "UseOssUrl",
"MediaArray": [
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}
],
"TitleArray": [
"回龍観の盒馬鮮生がオープンしました",
"盒馬鮮生がオープンしました"
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["字幕 1", "字幕 2"]
},
{
"Level": 3,
"TitleArray": ["レベル 3 字幕"]
}
],
"SpeechTextArray": [
"近くのモールに新しい盒馬鮮生がオープンしました。今日はグランドオープンで、早速駆けつけてみました。店内はそれほど広くありませんが、モールは混雑しています。スナックやドリンクはかなり安く、レジは長蛇の列です。ぜひ見に来てください!",
"近くのモールに新しい盒馬鮮生がオープンしました。今日はグランドオープンなので、盛り上がりを見に来ました。",
"<speak>戦いは <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">激しい</phoneme>です。今日、私たちの主役である卓球界のレジェンド、馬龍選手が栄光の頂点を目指して突き進んでいます。強敵、戸上隼輔選手との準々決勝で、馬龍選手は恐れることなく、すべてのラリーで全力を尽くしました。彼の正確なショットと冷静な判断が、この試合で彼に優位をもたらしました。最終的に、馬龍選手は対戦相手を打ち破り、準決勝に進出しました。</speak>"
],
"StickerArray": [
{
"MediaId": "****9d46c8b4548681030f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300,
"Opacity": 0.6
},
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
}
],
"BackgroundMusicArray": [
"****b4549d46c88681030f6e****",
"****549d46c88b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp3"
],
"BackgroundImageArray": [
"****6c886b4549d481030f6e****",
"****9d46c8548b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}グループナレーションモード - パラメーター例
{
"MediaGroupArray": [{
"GroupName": "start",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpeg", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"Duration": 5,
"SplitMode": "NoSplit",
"Volume": 1
},
{
"GroupName": "group1",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"SpeechTextArray": ["近くのモールに新しい盒馬鮮生がオープンしました。今日はグランドオープンです。", "今日はこの盒馬鮮生のグランドオープンです。", "<speak>戦いは <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">激しい</phoneme>です。今日、私たちの主役である卓球界のレジェンド、馬龍選手が栄光の頂点を目指して突き進んでいます。強敵、戸上隼輔選手との準々決勝で、馬龍選手は恐れることなく、すべてのラリーで全力を尽くしました。彼の正確なショットと冷静な判断が、この試合で彼に優位をもたらしました。最終的に、馬龍選手は対戦相手を打ち破り、準決勝に進出しました。</speak>"]
},
{
"GroupName": "group2",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/normal%20video.mp4", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpeg"],
"SpeechTextArray": ["店内はそれほど広くありませんが、モールは混雑しています。スナックやドリンクはかなり安く、レジは長蛇の列です。", "現場は非常に活気があり、人だかりができていて、商品の種類も豊富です。"]
},
{
"GroupName": "group3",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
"SpeechTextArray": ["ぜひ見に来てください!", "急いで見に来てください!"]
},
{
"GroupName": "end",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpg", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"Duration": 5
}
],
"TitleArray": [
"回龍観の盒馬鮮生がオープンしました",
"盒馬鮮生がオープンしました"
],
"StickerArray": [
{
"MediaId": "****9d46c8b4548681030f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300,
"Opacity": 0.6
},
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
}
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["レベル 1 字幕 1", "レベル 1 字幕 2"]
},
{
"Level": 3,
"TitleArray": ["レベル 3 字幕"]
}
],
"BackgroundMusicArray": [
"****b4549d46c88681030f6e****",
"****549d46c88b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp3"
],
"BackgroundImageArray": [
"****6c886b4549d481030f6e****",
"****9d46c8548b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}EditingConfig パラメーター
EditingConfig を設定して、クリップのボリューム、位置、その他の合成パラメーターを指定できます。パラメーター例については、「EditingConfig パラメーター例」をご参照ください。
以下のパラメーターを除き、他のすべてのパラメーターはグローバルナレーションモードとグループナレーションモードの両方をサポートしています:
ProcessConfig.AlignmentMode はグローバルナレーションモードでのみ有効です。
SpeechConfig.SpecialWordsConfig はグループナレーションモードでのみ有効です。
パラメーター | タイプ | 説明 | 例 | 必須 |
JSON | 入力動画素材の設定。 | {"Volume":"1","MediaMetaDataArray":[{"Media":"****6c886b4549d481030f6e****","GroupName":"GroupA","TimeRangeList":[{"In":"0","Out":"1"},{"In":"2","Out":"3"}]}]} | いいえ | |
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}} | いいえ |
JSON | ナレーションスクリプトの設定。 | 詳細については、「EditingConfig パラメーター例」をご参照ください | いいえ | |
JSON | BGM の設定。 | {"Volume":0.2} | いいえ | |
JSON | 背景画像の設定。InputConfig で背景画像がすでに設定されている場合、このフィールドは有効になりません。 | {"SubType":"Blur","Radius":0.5} | いいえ | |
JSON | ミキシングおよび編集処理の設定。 | 詳細については、「EditingConfig パラメーター例」をご参照ください | いいえ | |
JSON | フロントエンドページのプレビュー用のキャンバス設定。 | {"Width": 1080,"Height": 1920} | いいえ | |
ProduceConfig | JSON | 標準的な動画編集および制作用の設定。フィールドの詳細については、「EditingProduceConfig」をご参照ください。 | {"AutoRegisterInputVodMedia":true,"OutputWebmTransparentChannel":true,"CoverConfig":{"StartTime":3.3},"AudioChannelCopy":"left","PipelineId":"****d54a97cff4108b555b01166d4****","MaxBitrate":5000,"KeepOriginMaxBitrate":false,"KeepOriginVideoMaxFps":false} | いいえ |
ProcessConfig パラメーター
パラメーター | タイプ | 説明 | 例 | 必須 |
SingleShotDuration | Float | 長い動画素材を編集すると、自動的に分割されます。このパラメーターは、分割後の 1 ショットの持続時間 (秒) を指定します。 | 5 | いいえ。デフォルト: 3。 |
AllowVfxEffect | Boolean | 特殊効果を追加するかどうかを指定します。 | true | いいえ。デフォルト: false。 |
VfxEffectProbability | Float | 各動画クリップに特殊効果を適用する確率。値の範囲: 0.0 から 1.0。小数点以下 2 桁までサポートされています。 | 0.6 | いいえ。デフォルト: 0.5。 |
VfxFirstClipEffectList | List<String> |
| ["slightshow","starfieldshinee"] | いいえ |
VfxNotFirstClipEffectList | List<String> |
| ["zoomslight","zoom"] | いいえ |
AllowTransition | Boolean | トランジション効果を追加するかどうかを指定します。 | true | いいえ。デフォルト: false。 |
TransitionDuration | Float | トランジションの持続時間 (秒)。トランジションの持続時間が (クリップの持続時間 - 1) より大きい場合、そのクリップのトランジション効果は適用されません。 | 0.5 | いいえ。デフォルト: 0.5 秒。 |
TransitionList | List<String> | カスタムトランジション効果のリスト。AllowTransition が true に設定されている場合、このリストからランダムなトランジション効果が選択されて合成されます。利用可能なトランジション効果の詳細については、「トランジション効果ライブラリ」をご参照ください。このパラメーターが空の場合、「linearblur」、「colordistance」、「crosshatch」、「dreamyzoom」、「doomscreentransition_up」の中からランダムな効果が選択されます。 | ["directional", "linearblur"] | いいえ |
UseUniformTransition | Boolean | 1 つの制作された動画全体で同じトランジション効果を使用するかどうかを指定します。 | true | いいえ。デフォルト: true。 |
AllowFilter | Boolean | カスタムフィルターを追加するかどうかを指定します。 | false | いいえ。デフォルト: false。 |
FilterList | List<String> | カスタムフィルター効果のリスト。`AllowFilter` が `true` に設定されている場合、このリストからフィルターがランダムに選択されて合成されます。利用可能なフィルター効果については、「フィルター効果の例」をご参照ください。このパラメーターが空の場合、フィルター効果は追加されません。 | ["m1", "m2"] | いいえ |
AlignmentMode | String | 動画とナレーションスクリプトの配置モード。このパラメーターはグローバルナレーションモードでのみ有効です。 有効値:
| AutoSpeed | いいえ。デフォルト: AutoSpeed。 |
ImageDuration | Float | 画像素材の持続時間 (秒)。 | 2 | いいえ。デフォルト: 2。 |
EditingConfig パラメーター例
{
"MediaConfig": {
"Volume": 0 // デフォルトで動画素材をミュート
},
"TitleConfig": {
"Alignment": "TopCenter",
"AdaptMode": "AutoWrap",
"Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
"SizeRequestType": "Nominal",
"Y": 0.1, // 出力動画が縦長モードの場合のタイルのデフォルト Y 座標
"Y": 0.05, // 出力動画が横長モードの場合のタイルのデフォルト Y 座標
"Y": 0.08 // 出力動画が正方形モードの場合のタイルのデフォルト Y 座標
},
"SubHeadingConfig": {
"1": {
"Y": 0.3,
"FontSize": 40
},
"3": {
"Y": 0.5,
"FontSize": 30
}
},
"SpeechConfig": {
"Volume": 1, // デフォルトでナレーション音声に元のボリュームを使用
"SpeechRate": 0,
"Voice": null,
"Style": null,
"CustomizedVoice": null, // 音声クローニング用の音声 ID。このフィールドが指定されている場合、Voice と Style は無効になります。
"AsrConfig": {
"Alignment": "TopCenter",
"AdaptMode": "AutoWrap",
"Font": "Alibaba PuHuiTi 2.0 65 Medium",
"SizeRequestType": "Nominal",
"Spacing": -1,
"Y": 0.8, // 出力動画が縦長モードの場合の字幕のデフォルト Y 座標
"Y": 0.9, // 出力動画が横長モードの場合の字幕のデフォルト Y 座標
"Y": 0.85 // 出力動画が正方形モードの場合の字幕のデフォルト Y 座標
},
"SpecialWordsConfig": [{
"Type": "Highlight",
"Style": {
"FontName": "KaiTi",
"FontSize": 80,
"FontColor": "20AEE9",
"OutlineColour": "2D20E9",
"Outline": 3,
"FontFace": {
"Bold": true,
"Underline": true
}
},
"WordsList": [
"ApsaraVideo",
"Intelligent Media Services",
"スマート動画作成"
]
},
{
"Type": "Highlight",
"Style": {
"FontFace": {
"Italic": true
}
},
"WordsList": [
"プロダクト",
"見てみる"
]
},
{
"Type": "Forbidden",
"WordsList": [
"pilipala",
"bilibala"
],
"SoundReplaceMode": "None"
}
]},
"BackgroundMusicConfig": {
"Volume": 0.2, // デフォルトで BGM に元のボリュームの 20% を使用
"Style": null
},
"ProcessConfig": {
"SingleShotDuration": 3, // 分割後のショットの持続時間
"AllowVfxEffect": false, // 特殊効果を追加するかどうかを指定
"AllowTransition": false, // トランジション効果を追加するかどうかを指定
"AlignmentMode": "AutoSpeed" // このフィールドはグローバルナレーションモードでのみサポートされています
}
}TemplateConfig パラメーター
TemplateConfig は、ワンクリック動画作成機能のテンプレートを設定するために使用される共通パラメーターです。詳細なパラメーターの説明と使用例については、「TemplateConfig パラメーター」をご参照ください。
OutputConfig パラメーター
OutputConfig を設定して、出力アドレス、命名規則、幅と高さ、制作する動画の数などの制作パラメーターを指定できます。
OutputConfig パラメーターの設定は、グローバルナレーションモードとグループナレーションモードの両方で同じです。
パラメーター | タイプ | 説明 | 例 | 必須 |
MediaURL | String | 出力動画のアドレス。{index} プレースホルダーを含める必要があります。 | ルール: http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4 例: http://example.oss-cn-shanghai.aliyuncs.com/example/example_{index}.mp4 | GeneratePreviewOnly が false で、出力動画が OSS に保存される場合に必須です。 |
StorageLocation | String | ApsaraVideo VOD (VOD) に出力されるメディアアセットファイルのストレージの場所。 | ルール: [your-vod-bucket].oss-[your-region-id].aliyuncs.com 例: outin-****6c886b4549d481030f6e****.oss-cn-shanghai.aliyuncs.com | GeneratePreviewOnly が false で、出力動画が VOD に保存される場合に必須です。 |
FileName | String | 出力ファイルの名前。{index} プレースホルダーを含める必要があります。 | ルール: [your-file-name]__{index}.mp4 例: example_{index}.mp4 | GeneratePreviewOnly が false で、出力動画が VOD に保存される場合に必須です。 |
GeneratePreviewOnly | Boolean |
| false | いいえ。デフォルト: false。 |
Count | Integer | 出力する動画の数。最大は 100 です。 | 10 | いいえ。デフォルト: 1。 |
MaxDuration | Float | 1 つの出力動画の最大持続時間 (秒)。
| 20 | いいえ。デフォルト: 15。 |
FixedDuration | Float | 1 つの出力動画の固定持続時間 (秒)。固定持続時間が設定されている場合、動画の持続時間はこのパラメーターに合わせられます。
| 20 | いいえ。デフォルト: 15。 |
Width | Integer | 出力動画の幅 (ピクセル)。 | 1080 | はい |
Height | Integer | 出力動画の高さ (ピクセル)。 | 1920 | はい |
JSON | Crf や Codec などの出力動画ストリームの設定。 | {"Crf": 27} | いいえ |
パラメーター例
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4",
"Count": 20,
"MaxDuration": 15,
"Width": 1080,
"Height": 1920,
"Video": {"Crf": 27},
"GeneratePreviewOnly":false
}アプリケーション例
例 1: グループナレーションモードでオープニングとエンディングを設定する
シナリオ
この例は、動画に一貫したイントロとアウトロを統一されたナレーションで追加したいシナリオに適用されます。イントロとアウトロのグループの MediaGroup.SplitMode を NoSplit に設定できます。この場合、システムはイントロとアウトロのグループのメディアクリップを分割しません。代わりに、各グループからランダムに選択されたメディアクリップを完全に再生して、固定のイントロとアウトロを追加します。
パラメーター例
例 2: スクリプトベースの自動動画生成を使用して顔モンタージュ動画を作成する
顔コレクションのシナリオに興味がある場合は、「顔コレクション動画を作成するためのベストプラクティス」をご参照ください。
SDK 呼び出し例
前提条件
IMS サーバーサイド SDK をインストール済みであること。詳細については、「準備」をご参照ください。
コード例
次の例では、グローバルナレーションモードを使用します。
API リクエストパラメーターの詳細
詳細設定
詳細については、「バッチワンクリック動画リミックスロジックと詳細設定」をご参照ください。
よくある質問
スクリプト動画に関するよくある質問については、「スクリプト動画 FAQ」をご参照ください。
リファレンス
スクリプト動画の詳細については、「SubmitBatchMediaProducingJob - バッチインテリジェントワンクリック動画作成」をご参照ください。
スクリプト動画ジョブを取得するには、「GetBatchMediaProducingJob - バッチスクリプト動画ジョブ情報の取得」をご参照ください。
スクリプト動画を使用して顔コレクション動画を作成するには、「顔コレクション動画作成チュートリアル」をご参照ください。
詳細設定については、「バッチワンクリックモンタージュロジックと詳細設定」をご参照ください。