スクリプトトゥビデオのプロダクションパラメーター、高度な構成、SDK サンプルについて説明します。
スクリプト動画と画像テキストマッチングは、どちらもSubmitBatchMediaProducingJob API を使用してタスクを送信します。パラメーターに基づいて両者を区別するには、パラメーターの違いをご参照ください。
この API では、すべてのメディアアセットの OSS URL で指定するリージョンを、OpenAPI サービスエンドポイントと一致させる必要があります。
サポートされているリージョン: China (Shanghai)、China (Beijing)、China (Hangzhou)、China (Shenzhen)、US (Silicon Valley)、Singapore。
実際には、例にある [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 文字です。 | ["タイトル 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": "****..."}, {"MediaURL": "http://.../example.png"}] | いいえ |
|
BackgroundMusicArray | List<String> |
| ["****b4549d46c88681030f6e****", "****549d46c88b4681030f6e****"] | いいえ |
|
BackgroundImageArray | List<String> |
| ["****b4549d46c88681030f6e****", "****549d46c88b4681030f6e****"] | いいえ |
|
MediaGroup
MediaGroup のパラメーターは、サポートされているモード列にグローバルスクリプトとセグメントスクリプトの違いが示されています。
パラメーター | 型 | 説明 | 例 | 必須 | サポートされているモード |
GroupName | 文字列 | グループ名です。最大 50 文字で、絵文字は使用できません。 | Group1 | はい |
|
MediaArray | List<String> |
| ****b4549d46c88681030f6e**** | はい |
|
SpeechTextArray | List<String> |
| ["ボイスオーバーの内容1", "ボイスオーバーの内容2"] | いいえ |
|
Duration | 浮動小数点 | 現在のグループのデュレーションです (単位:秒)。 | 10 | いいえ。デフォルト:5 |
|
SplitMode | 文字列 |
| NoSplit | いいえ。デフォルト:AverageSplit |
|
Volume | 浮動小数点 |
| 0.5 | いいえ |
|
DurationAutoAdapt | ブール値 | このグループでデュレーション自動適応を有効にするかどうかを指定します。有効にした場合、ボイスオーバーがなければ、ビデオクリップが元の速度で再生されるように、グループのデュレーションが調整されます。 | 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": [
"ABCストアがさくら町に新店舗をオープン",
"ABCストアの新店舗がオープン"
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["レベル1のサブタイトル1", "レベル1のサブタイトル2"]
},
{
"Level": 3,
"TitleArray": ["レベル3のサブタイトル"]
}
],
"SpeechTextArray": [
"近所のモールにABCストアが新しくオープンしました。今日はグランドオープンなので、早速見に来ました。店内はそれほど広くありませんが、人でいっぱいです。スナックやドリンクがとても安く、レジは長蛇の列でした。ぜひ、あなたも見に来てください!",
"近所のモールにABCストアが新しくオープンしました。今日はグランドオープンなので、早速見に来ました。",
"<speak>今日、我らがヒーロー、卓球界のレジェンド<phoneme alphabet="ipa" ph="jɑmɑdɑ tɑroʊ">山田太郎</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"],
"SplitMode": "NoSplit"
},
{
"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": ["近所のモールにABCストアが新しくオープンしました。", "今日はグランドオープンです。", "<speak>今日、我らがヒーロー、卓球界のレジェンド<phoneme alphabet="ipa" ph="jɑmɑdɑ tɑroʊ">山田太郎</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"]
}
],
"TitleArray": [
"ABCストアがさくら町に新店舗をオープン",
"ABCストアの新店舗がオープン"
],
"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 は、音量、配置、その他の制作設定を指定します。
すべてのパラメーターは、以下を除き、グローバルスクリプトモードとセグメントスクリプトモードの両方をサポートします:
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 | String | ビデオとナレーションの配置モード。グローバルスクリプトモードでのみサポートされています。 有効な値:
| 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 // 縦画面ビデオの 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 座標
},
"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": [
"ピリパラ",
"ビリバラ"
],
"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 |
|
StorageLocation | 文字列 | ApsaraVideo VOD に出力されるメディアアセットのストレージ場所です。 | ルール:[your-vod-bucket].oss-[your-region-id].aliyuncs.com 例:outin-****6c886b4549d481030f6e****.oss-cn-shanghai.aliyuncs.com |
|
FileName | 文字列 | 出力ファイル名です。プレースホルダー | ルール:[your-file-name]__{index}.mp4 例:example_{index}.mp4 |
|
GeneratePreviewOnly | ブール値 |
| false | いいえ。デフォルト:false。 |
Count | 整数 | 出力するビデオ数です。最大:100。 | 20 | いいえ。デフォルト:1。 |
MaxDuration | 浮動小数点数 | 出力ビデオ 1 本あたりの最大デュレーションです (単位:秒)。
| 20 | いいえ。デフォルト:15。 |
FixedDuration | 浮動小数点数 | 出力ビデオ 1 本あたりの固定デュレーションです。設定した場合、ビデオのデュレーションはこの値に調整されます。
| 20 | いいえ。デフォルト:15。 |
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 サンプル
前提条件
IMS サーバー SDK がインストールされている必要があります。 詳細については、「はじめに」をご参照ください。
コード例
この例では、グローバルスクリプトモードを使用します。
API 入力パラメーター
詳細設定
詳細設定については、「バッチワンクリック動画作成のロジックと詳細設定」をご参照ください。
よくある質問
Script-to-Video に関するよくある質問は、よくある質問をご参照ください。
関連ドキュメント
SubmitBatchMediaProducingJob:バッチ動画制作ジョブの送信
GetBatchMediaProducingJob:バッチ動画制作ジョブ詳細の取得