Script-to-Video の生成パラメータ、高度な設定、SDK サンプルについて説明します。
-
Script-to-Video と Image-Text Matching はいずれも SubmitBatchMediaProducingJob API を使用してタスクを送信します。パラメーターに基づいてこれらを区別する方法については、パラメーターの相違点をご参照ください。
-
この API では、すべてのメディアアセットの OSS URL で指定されたリージョンを、OpenAPI サービスエンドポイントと同じにする必要があります。
-
サポートされているリージョン:中国 (上海)、中国 (北京)、中国 (杭州)、中国 (深圳)、米国 (シリコンバレー)、シンガポール。
-
実際の使用時には、例に含まれるすべてのプレースホルダー ([your-bucket]、[your-region-id]、[your-file-name]、[your-file-path]、メディアアセットの ID ("9d46c8b4548681030f6e") など) を実際の値に置き換えてください。
-
このドキュメントをより理解するために、まず バッチ動画制作 ガイドを読み、Script-to-Video の概念とワークフローを把握してください。
-
Script-to-Video は 2 つの制作モード (グローバルスクリプトと分割スクリプト) をサポートしています。
-
グローバルスクリプト:複数の完全なナレーションスクリプトを動画アセットとランダムに組み合わせ、類似したスタイルの動画を大量に生成します。
-
分割スクリプト:ナレーションスクリプトを複数のセグメントに分割し、各セグメントを特定のアセットグループにマッチングします。
-
モードは、次のパラメーターのロジックで決まります:
-
SpeechTextArray が空でない場合は、グローバルスクリプト モードになります。
-
SpeechTextArray が空で、かつ MediaGroupArray 内の少なくとも 1 つの要素の MediaGroup.Duration または MediaGroup.SpeechTextArray が空でない場合は、分割スクリプト モードになります。
-
SpeechTextArray が空で、かつ MediaGroupArray 内のすべての MediaGroup.Duration と MediaGroup.SpeechTextArray の値が空の場合は、グローバルスクリプト モードになります。
-
-
使用上の注意
-
複数の動画、音声、画像アセットをインテリジェントに組み合わせてバッチ動画制作ジョブを送信するには、SubmitBatchMediaProducingJob をご参照ください。主要な API パラメーターの詳細は、以下の
InputConfig、EditingConfig、OutputConfigのセクションで説明します。 -
バッチ動画制作ジョブの詳細情報を取得するには、GetBatchMediaProducingJob をご参照ください。
InputConfig
InputConfig では、基本アセット (ビデオクリップ、ナレーション、背景音楽、ステッカー) を指定します。
|
パラメーター |
タイプ |
説明 |
例 |
必須 |
サポートされるモード |
|
MediaGroupArray |
List<MediaGroup> |
ソースアセットを指定します。アセットのグループ化をサポートします。 グループ名:最大 50 文字。絵文字はサポートされていません。 素材リスト: 素材のメディアアセット ID または OSS URL。 最大 40 グループをサポートします。各グループには最大 200 個の素材を含めることができます。同一グループに複数の素材を追加した場合、システムは生成ジョブごとに 1 つをランダムに選択します。複数の素材を使用するには、グループを分け、各グループに 1 つの素材を追加してください。 |
はい |
|
|
|
TitleArray |
List<String> |
タイトルの配列です。生成ジョブごとに 1 つのタイトルがランダムに選択されます。 最大 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> |
|
["Voiceover content 1","Voiceover content 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> |
|
["Voiceover content 1","Voiceover content 2"] |
いいえ |
|
|
Duration |
Float |
現在のグループのデュレーション (秒) です。 |
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": [
"Freshippo opens a new location in Huilongguan",
"A new Freshippo store opens"
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["Subtitle 1", "Subtitle 2"]
},
{
"Level": 3,
"TitleArray": ["Level 3 subtitle"]
}
],
"SpeechTextArray": [
"A new Freshippo store just opened in the nearby mall. It's the grand opening today, so I rushed over to check it out. The store isn't huge, but it's packed with people. Snacks and drinks are pretty cheap, and the checkout lines are super long. Come and see for yourself!",
"A new Freshippo store just opened in the nearby mall. It's the grand opening today, so I rushed over to check it out.",
"<speak>Today, our hero, table tennis legend <phoneme alphabet="ipa" ph="mɑː lʊŋ">Ma Long</phoneme>, is striving for the pinnacle of glory.</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": ["A new Freshippo store just opened in the nearby mall.", "It's the grand opening today.", "<speak>Today, our hero, table tennis legend <phoneme alphabet="ipa" ph="mɑː lʊŋ">Ma Long</phoneme>, is striving for the pinnacle of glory.</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": ["The store isn't huge, but it's packed with people. Snacks and drinks are pretty cheap, and the checkout lines are super long.", "The scene is very lively, with crowds of people and a wide variety of goods."]
},
{
"GroupName": "group3",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
"SpeechTextArray": ["Come and see for yourself!", "Hurry and come take a look!"]
},
{
"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": [
"Freshippo opens a new location in Huilongguan",
"A new Freshippo store opens"
],
"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": ["Level 1 subtitle 1", "Level 1 subtitle 2"]
},
{
"Level": 3,
"TitleArray": ["Level 3 subtitle"]
}
],
"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 は、音量、配置、その他の制作設定を指定します。
すべてのパラメーターは、以下を除き、グローバルスクリプトとセグメントスクリプトの両方のモードをサポートします。
-
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 |
バックグラウンドミュージックの設定。 |
{"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 |
浮動小数点 |
長いビデオアセットを分割する際の、自動セグメント化された各ショットのデュレーション (秒単位)。 |
5 |
いいえ。デフォルト: 3。 |
|
AllowVfxEffect |
ブール値 |
特殊効果を追加するかどうか。 |
true |
いいえ。デフォルト: false。 |
|
VfxEffectProbability |
浮動小数点 |
各クリップにエフェクトを適用する確率。範囲: 0.0~1.0。小数点以下 2 桁までサポートします。 |
0.6 |
いいえ。デフォルト: 0.5。 |
|
VfxFirstClipEffectList |
List<String> |
|
["slightshow","starfieldshinee"] |
いいえ |
|
VfxNotFirstClipEffectList |
List<String> |
|
["zoomslight","zoom"] |
いいえ |
|
AllowTransition |
ブール値 |
トランジション効果を追加するかどうか。 |
true |
いいえ。デフォルト: false。 |
|
TransitionDuration |
浮動小数点 |
トランジションのデュレーション (秒単位)。 |
0.5 |
いいえ。デフォルト: 0.5。 |
|
TransitionList |
List<String> |
カスタムトランジションのリストです。 |
["directional", "linearblur"] |
いいえ |
|
UseUniformTransition |
ブール値 |
1 つのビデオ全体で同じトランジションを使用するかどうか。 |
true |
いいえ。デフォルト: true。 |
|
AllowFilter |
ブール値 |
カスタムフィルターを追加するかどうか。 |
false |
いいえ。デフォルト: false。 |
|
FilterList |
List<String> |
カスタムフィルターのリストです。 |
["m1", "m2"] |
いいえ |
|
AlignmentMode |
文字列 |
ビデオとナレーションのアライメントモードです。グローバルスクリプトモードでのみ有効です。 有効な値:
|
AutoSpeed |
いいえ。デフォルト: AutoSpeed。 |
|
ImageDuration |
浮動小数点 |
静止画アセットのデュレーション (秒単位)。 |
2 |
いいえ。デフォルト: 2。 |
パラメーターの例
{
"MediaConfig": {
"Volume": 0 // デフォルトでは入力ビデオアセットはミュートになっています
},
"TitleConfig": {
"Alignment": "TopCenter",
"AdaptMode": "AutoWrap",
"Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
"SizeRequestType": "Nominal",
// Y 座標はビデオのアスペクト比によって異なります。例:縦向き 0.1、横向き 0.05、正方形 0.08。
"Y": 0.1
},
"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、横向き 0.9、正方形 0.85。
"Y": 0.8
},
"SpecialWordsConfig": [{
"Type": "Highlight",
"Style": {
"FontName": "KaiTi",
"FontSize": 80,
"FontColor": "20AEE9",
"OutlineColour": "2D20E9",
"Outline": 3,
"FontFace": {
"Bold": true,
"Underline": true
}
},
"WordsList": [
"ApsaraVideo",
"Intelligent Media Services",
"Batch video creation"
]
},
{
"Type": "Highlight",
"Style": {
"FontFace": {
"Italic": true
}
},
"WordsList": [
"product",
"take a look"
]
},
{
"Type": "Forbidden",
"WordsList": [
"pilipala",
"bilibala"
],
"SoundReplaceMode": "None"
}
]},
"BackgroundMusicConfig": {
"Volume": 0.2, // バックグラウンドミュージックはデフォルトで 20% の音量です
"Style": null
},
"ProcessConfig": {
"SingleShotDuration": 3, // 分割後のショットの長さ
"AllowVfxEffect": false, // 特殊効果を追加するかどうか
"AllowTransition": false, // トランジション効果を追加するかどうか
"AlignmentMode": "AutoSpeed" // このフィールドはグローバルスクリプトモードでのみ有効です
}
}
TemplateConfig
TemplateConfig には、バッチ動画制作の共通パラメーターが含まれています。パラメーターと例の詳細については、TemplateConfig をご参照ください。
OutputConfig のパラメーター
OutputConfig は、出力先、命名規則、解像度、ビデオ数を指定します。
パラメーターは両方のモードに適用されます。
|
パラメーター |
タイプ |
説明 |
例 |
必須 |
|
MediaURL |
文字列 |
出力ビデオ URL。 |
ルール: 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 |
文字列 |
ApsaraVideo VOD に出力されるメディアアセットの保存場所です。 |
ルール: [your-vod-bucket].oss-[your-region-id].aliyuncs.com 例: outin-****6c886b4549d481030f6e****.oss-cn-shanghai.aliyuncs.com |
GeneratePreviewOnly が false で、出力先が VOD の場合に必須です。 |
|
FileName |
文字列 |
出力ファイル名。指定の |
ルール: [your-file-name]__{index}.mp4 例: example_{index}.mp4 |
GeneratePreviewOnly が false で、出力先が VOD の場合に必須です。 |
|
GeneratePreviewOnly |
ブール値 |
|
false |
いいえ。デフォルト値は false です。 |
|
Count |
整数 |
出力するビデオの数です。最大 100 です。 |
10 |
いいえ。デフォルト値は 1 です。 |
|
MaxDuration |
浮動小数点数 |
出力ビデオあたりの最大デュレーション (秒) です。
|
20 |
いいえ。デフォルト値は 15 です。 |
|
FixedDuration |
浮動小数点数 |
出力ビデオあたりの固定デュレーションです。設定した場合、ビデオの長さはこの値に調整されます。
|
20 |
いいえ。デフォルト値はありません。 |
|
Width |
整数 |
出力ビデオの幅 (ピクセル) です。 |
1080 |
はい |
|
Height |
整数 |
出力ビデオの高さ (ピクセル) です。 |
1920 |
はい |
|
JSON |
出力ビデオストリームの設定 (CRF、コーデックなど) です。 |
{"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 の例
前提条件
Intelligent Media Services (IMS) サーバー SDK がインストールされている必要があります。詳細については、「Get started」をご参照ください。
コード例
この例では、グローバルスクリプトモードを使用します。
API 入力パラメーター
高度な構成
詳細設定については、「バッチワンクリックビデオ作成のロジックと高度な構成」をご参照ください。
よくある質問
スクリプトビデオに関するよくある質問は、「よくある質問」をご参照ください。
リファレンス
-
SubmitBatchMediaProducingJob :バッチ動画制作ジョブの送信
-
GetBatchMediaProducingJob :バッチ動画制作ジョブ詳細の取得