All Products
Search
Document Center

Intelligent Media Services:Pembuatan video otomatis berbasis skrip

Last Updated:Nov 11, 2025

Topik ini menjelaskan parameter produksi, konfigurasi lanjutan, dan contoh pemanggilan kit pengembangan perangkat lunak (SDK) untuk pembuatan video otomatis berbasis skrip.

Penting
  • Script-to-Video dan Smart Text and Image to Video menggunakan API Submit Job yang sama. Untuk memahami cara membedakan keduanya melalui parameter, lihat Perbedaan parameter.

  • Catatan: Di API ini, wilayah dalam URL Object Storage Service (OSS) untuk semua aset media harus sama dengan wilayah dalam titik akhir OpenAPI.

  • Wilayah yang mendukung pembuatan video otomatis berbasis skrip adalah Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Hangzhou), Tiongkok (Shenzhen), AS (Barat), dan Singapura.

  • Dalam praktiknya, gantilah parameter seperti [your-bucket], [your-region-id], [your-file-name], [your-file-path], dan ID aset media (misalnya, "****9d46c8b4548681030f6e****") dalam contoh dengan nilai aktual Anda.

Catatan
  • Untuk memahami topik ini lebih baik, kami menyarankan Anda terlebih dahulu mempelajari Script-to-Video di Pembuatan Video Cerdas.

  • Pembuatan video otomatis berbasis skrip memiliki dua mode pemrosesan: mode narasi global dan mode narasi berkelompok.

    • Mode narasi global: Menggabungkan beberapa skrip narasi lengkap secara acak dengan node skrip untuk mencapai pencampuran dan pengeditan video batch.

    • Mode narasi berkelompok: Membagi skrip narasi lengkap menjadi beberapa paragraf dan memasangkannya dengan node skrip berbeda untuk menghasilkan output yang lebih optimal.

    • Bagian berikut menjelaskan cara membedakan antara mode narasi global dan mode narasi berkelompok berdasarkan parameter:

Catatan penggunaan

Parameter InputConfig

Catatan

Anda dapat mengonfigurasi InputConfig untuk menentukan parameter material dasar seperti aset video, narasi, musik latar, dan stiker.

Parameter

Tipe

Deskripsi

Contoh

Wajib

Mode yang didukung

MediaGroupArray

List<MediaGroup>

Material berskrip untuk pembuatan video otomatis. Anda dapat mengatur nama grup dan daftar material.

Nama grup: Maksimal 50 karakter. Emoji tidak didukung.

Daftar material: ID aset media atau URL OSS dari material.

Maksimal 40 grup. Setiap grup dapat berisi maksimal 200 material.

Untuk informasi selengkapnya, lihat Pola pengumuman global - contoh parameter dan Pola pengumuman berkelompok - contoh parameter

Ya

  • Narasi global

  • Narasi berkelompok

TitleArray

List<String>

Array judul. Judul acak dipilih untuk setiap produksi video.

Maksimal 50 judul. Setiap judul dapat memiliki panjang hingga 50 karakter.

["Judul 1","Judul 2"]

Tidak

  • Narasi global

  • Narasi berkelompok

SubHeadingArray

List<SubHeading>

Pengaturan subjudul.

[{"Level":1,"TitleArray":["Subjudul level-1 1","Subjudul level-1 2"]},{"Level":3,"TitleArray":["Subjudul level-3"]}]

Tidak

  • Narasi global

  • Narasi berkelompok

SpeechTextArray

List<String>

  • Array skrip narasi. Skrip acak dipilih untuk setiap produksi video.

  • Maksimal 50 skrip. Setiap skrip dapat memiliki panjang hingga 1.000 karakter.

  • Anda dapat menggunakan bahasa markup SSML untuk mengontrol sintesis suara.

  • Bahasa lisan default adalah Bahasa Tionghoa (zh). Untuk mengatur bahasa lain, lihat parameter SpeechLanguage.

    Penting

    Saat ini, hanya <break>, <s>, <sub>, <w>, <phoneme>, dan <say-as> yang didukung. Untuk suara terkait CosyVoice, hanya <break>, <s>, dan <sub> yang didukung.

["Konten narasi 1","Konten narasi 2"]

Tidak

  • Narasi global

StickerArray

List<Sticker>

  • Array stiker. Stiker acak dipilih untuk setiap produksi video. Maksimal 50 stiker didukung.

  • Aturan pemilihan acak: Misalnya, jika Anda menyediakan 10 stiker dan mengatur jumlah video yang akan diproduksi menjadi 20, bilangan acak dari 1 hingga 10 dihasilkan, misalnya 3. Kemudian, stiker dipilih secara berurutan: 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, dan seterusnya.

  • Untuk informasi selengkapnya tentang format material yang didukung, lihat Format citra.

[{"MediaId":"****9d46c8b4548681030f6e****","X":10,"Y":100,"Width":300,"Height":300,"Opacity":0.6}]

Tidak

  • Narasi global

  • Narasi berkelompok

BackgroundMusicArray

List<String>

  • Array musik latar. Trek acak dipilih untuk setiap produksi video. Maksimal 50 trek didukung. Anda dapat menggunakan ID aset media atau URL OSS.

  • Aturan pemilihan acak: Misalnya, jika Anda menyediakan 10 trek musik latar dan mengatur jumlah video yang akan diproduksi menjadi 20, bilangan acak dari 1 hingga 10 dihasilkan, misalnya 3. Kemudian, trek dipilih secara berurutan: 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, dan seterusnya.

  • Untuk format media yang didukung, lihat Format audio.

["****b4549d46c88681030f6e****","****549d46c88b4681030f6e****"]

Tidak

  • Narasi global

  • Narasi berkelompok

BackgroundImageArray

List<String>

  • Array citra latar belakang. Citra acak dipilih untuk setiap produksi video. Maksimal 50 citra didukung. Anda dapat menggunakan ID aset media atau URL OSS.

  • Aturan pemilihan acak: Misalnya, jika Anda menyediakan 10 citra latar belakang dan mengatur jumlah video yang akan diproduksi menjadi 20, bilangan acak dari 1 hingga 10 dihasilkan, misalnya 3. Kemudian, citra dipilih secara berurutan: 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, dan seterusnya.

  • Untuk daftar format yang didukung, lihat Format citra.

["****b4549d46c88681030f6e****","****549d46c88b4681030f6e****"]

Tidak

  • Narasi global

  • Narasi berkelompok

Parameter MediaGroup

Catatan

Perbedaan konfigurasi parameter MediaGroup antara mode narasi global dan mode narasi berkelompok ditunjukkan pada kolom "Mode yang didukung" dalam tabel.

Parameter

Tipe

Deskripsi

Contoh

Wajib

Mode yang didukung

GroupName

String

Nama grup.

Maksimal 50 karakter. Emoji tidak didukung.

Group1

Ya

  • Narasi global

  • Narasi berkelompok

MediaArray

List<String>

  • Daftar material. Anda dapat menggunakan ID media atau URL. Maksimal 200 material didukung.

  • Untuk format yang didukung, lihat Format video.

****b4549d46c88681030f6e****

Ya

  • Narasi global

  • Narasi berkelompok

SpeechTextArray

List<String>

  • Array skrip narasi. Skrip acak dipilih untuk setiap produksi video.

  • Maksimal 50 skrip. Setiap skrip dapat memiliki panjang hingga 1.000 karakter.

  • Mendukung penggunaan bahasa markup SSML untuk mengontrol sintesis suara.

    Penting

    Saat ini, hanya <break>, <s>, <sub>, <w>, <phoneme>, dan <say-as> yang didukung. Untuk suara terkait CosyVoice, hanya <break>, <s>, dan <sub> yang didukung.

["Konten narasi 1","Konten narasi 2"]

Tidak

  • Narasi berkelompok

Duration

Float

Durasi grup saat ini dalam detik. Parameter ini hanya berlaku ketika SpeechTextArray kosong.

10

Tidak. Default: 5.

  • Narasi berkelompok

SplitMode

String

NoSplit

Tidak. Default: AverageSplit.

  • Narasi global

  • Narasi berkelompok

Volume

Float

  • Volume video input. Jika Anda mengatur volume di sini, volume video dalam grup saat ini akan sesuai dengan pengaturan ini, dan parameter EditingConfig.MediaConfig.Volume tidak lagi berlaku untuk grup ini.

  • Rentang nilai: [0, 10,0]. Mendukung hingga dua tempat desimal.

0,5

Tidak

  • Narasi berkelompok

DurationAutoAdapt

Boolean

Menentukan apakah akan mengaktifkan adaptasi durasi otomatis untuk grup. Jika diaktifkan dan tidak ada narasi, durasi grup akan disesuaikan secara otomatis untuk memastikan klip video diputar dengan kecepatan aslinya.

true

Tidak. Default: false.

  • Narasi berkelompok

Mode narasi global - Contoh parameter

{
  "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": [
    "Hema Fresh di Huilongguan sekarang buka",
    "Hema Fresh sekarang buka"
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["Subjudul 1", "Subjudul 2"]
    },
    {
      "Level": 3,
      "TitleArray": ["Subjudul level-3"]
    }
  ],
  "SpeechTextArray": [
    "Toko Hema Fresh baru saja dibuka di mal terdekat. Hari ini adalah pembukaan resmi, dan saya bergegas datang untuk bergabung dalam keseruan. Tokonya tidak terlalu besar, tetapi malnya ramai. Camilan dan minuman cukup murah, dan antrian kasir sangat panjang. Ayo datang dan coba!",
    "Toko Hema Fresh baru saja dibuka di mal terdekat. Hari ini adalah pembukaan resmi, jadi saya datang untuk bergabung dalam keseruan.",
    "<speak>Pertarungan <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">sangat sengit</phoneme>. Hari ini, tokoh utama kita, legenda tenis meja Ma Long, sedang berjuang menuju puncak kejayaan. Dalam pertandingan perempat final melawan Shunsuke Togami yang tangguh, Ma Long tidak gentar, memberikan segalanya dalam setiap reli. Pukulan presisinya dan penilaian tenang memberinya keunggulan dalam pertandingan ini. Akhirnya, Ma Long berhasil mengalahkan lawannya dan maju ke semifinal.</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"
  ]
}

Mode narasi berkelompok - Contoh parameter

{
  "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": ["Toko Hema Fresh baru saja dibuka di mal terdekat. Hari ini adalah pembukaan resmi.", "Hari ini adalah pembukaan resmi toko Hema Fresh ini.", "<speak>Pertarungan <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">sangat sengit</phoneme>. Hari ini, tokoh utama kita, legenda tenis meja Ma Long, sedang berjuang menuju puncak kejayaan. Dalam pertandingan perempat final melawan Shunsuke Togami yang tangguh, Ma Long tidak gentar, memberikan segalanya dalam setiap reli. Pukulan presisinya dan penilaian tenang memberinya keunggulan dalam pertandingan ini. Akhirnya, Ma Long berhasil mengalahkan lawannya dan maju ke semifinal.</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": ["Tokonya tidak terlalu besar, tetapi malnya ramai. Camilan dan minuman cukup murah, dan antrian kasir sangat panjang.", "Suasananya sangat meriah, dengan kerumunan orang dan berbagai macam barang."]
    },
    {
      "GroupName": "group3",
      "MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
      "SpeechTextArray": ["Ayo datang dan lihat!", "Cepat datang dan lihat!"]
    },
    {
      "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": [
    "Hema Fresh di Huilongguan sekarang buka",
    "Hema Fresh sekarang buka"
  ],
  "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": ["Subjudul level-1 1", "Subjudul level-1 2"]
    },
    {
      "Level": 3,
      "TitleArray": ["Subjudul level-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"
  ]
}

Parameter EditingConfig

Anda dapat mengonfigurasi EditingConfig untuk menentukan volume, posisi, dan parameter komposisi lainnya untuk klip. Untuk contoh parameter, lihat Contoh parameter EditingConfig.

Catatan

Kecuali parameter berikut, semua parameter lain mendukung mode narasi global dan mode narasi berkelompok:

Parameter

Tipe

Deskripsi

Contoh

Wajib

MediaConfig

JSON

Konfigurasi untuk material video input.

{"Volume":"1","MediaMetaDataArray":[{"Media":"****6c886b4549d481030f6e****","GroupName":"GroupA","TimeRangeList":[{"In":"0","Out":"1"},{"In":"2","Out":"3"}]}]}

Tidak

TitleConfig

JSON

Konfigurasi untuk judul. Anda dapat mengonfigurasi parameter teks.

{"Alignment":"TopCenter","AdaptMode":"AutoWrap","Font":"Alibaba PuHuiTi 2.0 95 ExtraBold","SizeRequestType":"Nominal","Y":0.1}

Tidak

SubHeadingConfig

JSON

Konfigurasi untuk subjudul multi-level. Anda dapat mengonfigurasi parameter teks.

Deskripsi bidang JSON:

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

Tidak

SpeechConfig

JSON

Konfigurasi untuk skrip narasi.

Untuk informasi selengkapnya, lihat Contoh parameter EditingConfig

Tidak

BackgroundMusicConfig

JSON

Konfigurasi untuk musik latar.

{"Volume":0.2}

Tidak

BackgroundImageConfig

JSON

Konfigurasi untuk citra latar belakang. Bidang ini tidak berlaku jika citra latar belakang sudah dikonfigurasi dalam InputConfig.

{"SubType":"Blur","Radius":0.5}

Tidak

ProcessConfig

JSON

Konfigurasi untuk pemrosesan pencampuran dan pengeditan.

Untuk informasi selengkapnya, lihat Contoh parameter EditingConfig

Tidak

FECanvas

JSON

Konfigurasi kanvas untuk pratinjau halaman antarmuka depan.

{"Width": 1080,"Height": 1920}

Tidak

ProduceConfig

JSON

Konfigurasi untuk pengeditan dan produksi video standar. Untuk informasi selengkapnya tentang bidang-bidang tersebut, lihat EditingProduceConfig.

{"AutoRegisterInputVodMedia":true,"OutputWebmTransparentChannel":true,"CoverConfig":{"StartTime":3.3},"AudioChannelCopy":"left","PipelineId":"****d54a97cff4108b555b01166d4****","MaxBitrate":5000,"KeepOriginMaxBitrate":false,"KeepOriginVideoMaxFps":false}

Tidak

Parameter ProcessConfig

Parameter

Tipe

Deskripsi

Contoh

Wajib

SingleShotDuration

Float

Ketika material video panjang diedit, material tersebut dibagi secara otomatis. Parameter ini menentukan durasi satu shot setelah pembagian, dalam detik.

5

Tidak. Default: 3.

AllowVfxEffect

Boolean

Menentukan apakah akan menambahkan efek khusus.

true

Tidak. Default: false.

VfxEffectProbability

Float

Probabilitas menerapkan efek khusus pada setiap klip video. Rentang nilai: 0,0 hingga 1,0. Mendukung hingga dua tempat desimal.

0,6

Tidak. Default: 0,5.

VfxFirstClipEffectList

List<String>

  • Jika VfxFirstClipEffectList tidak kosong, efek untuk klip pertama video dipilih dari daftar ini.

  • Jika VfxFirstClipEffectList kosong, efek untuk klip pertama dipilih secara acak dari berikut ini: "slightshow", "starfieldshinee", "starfieldshinee2", "starsparkle", "colorfulripples", dan "starfield".

  • Untuk contoh efek, lihat contoh efek.

["slightshow","starfieldshinee"]

Tidak

VfxNotFirstClipEffectList

List<String>

  • Jika VfxNotFirstClipEffectList tidak kosong, efek untuk klip selain yang pertama dipilih dari daftar ini.

  • Jika VfxNotFirstClipEffectList kosong, efek untuk klip selain yang pertama dipilih dari berikut ini: "zoomslight", "zoom", "zoominout", dan "slightshake".

  • Untuk informasi selengkapnya, lihat Contoh efek.

["zoomslight","zoom"]

Tidak

AllowTransition

Boolean

Menentukan apakah akan menambahkan efek transisi.

true

Tidak. Default: false.

TransitionDuration

Float

Durasi transisi dalam detik. Jika durasi transisi lebih besar daripada (durasi klip - 1), efek transisi untuk klip tersebut tidak akan diterapkan.

0,5

Tidak. Default: 0,5 detik.

TransitionList

List<String>

Daftar efek transisi kustom. Ketika AllowTransition diatur ke true, efek transisi acak dari daftar ini dipilih untuk komposisi. Untuk informasi selengkapnya tentang efek transisi yang tersedia, lihat Pustaka Efek Transisi. Jika parameter ini kosong, efek acak dipilih dari efek transisi berikut: "linearblur", "colordistance", "crosshatch", "dreamyzoom", atau "doomscreentransition_up".

["directional", "linearblur"]

Tidak

UseUniformTransition

Boolean

Menentukan apakah akan menggunakan efek transisi yang sama sepanjang satu video yang diproduksi.

true

Tidak. Default: true.

AllowFilter

Boolean

Menentukan apakah akan menambahkan filter kustom.

false

Tidak. Default: false.

FilterList

List<String>

Daftar efek filter kustom. Jika `AllowFilter` diatur ke `true`, filter dipilih secara acak dari daftar ini untuk komposisi. Untuk efek filter yang tersedia, lihat Contoh Efek Filter. Jika parameter ini kosong, tidak ada efek filter yang ditambahkan.

["m1", "m2"]

Tidak

AlignmentMode

String

Mode penyelarasan untuk video dan skrip narasi. Parameter ini hanya berlaku dalam mode narasi global. Nilai yang valid:

  • "AutoSpeed": Durasi trek video diskalakan agar sesuai dengan trek audio.

  • "Cut": Durasi trek video dipotong agar sesuai dengan trek audio.

AutoSpeed

Tidak. Default: AutoSpeed.

ImageDuration

Float

Durasi material citra dalam detik.

2

Tidak. Default: 2.

EditingConfig contoh parameter

{
  "MediaConfig": {
    "Volume": 0 // Bisukan material video secara default
  },
  "TitleConfig": {
    "Alignment": "TopCenter",
    "AdaptMode": "AutoWrap",
    "Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
    "SizeRequestType": "Nominal",
    "Y": 0.1, // Koordinat Y default judul ketika video output dalam mode potret
    "Y": 0.05, // Koordinat Y default judul ketika video output dalam mode lanskap
    "Y": 0.08 // Koordinat Y default judul ketika video output dalam mode persegi
  },
   "SubHeadingConfig": {
    "1": {
      "Y": 0.3,
      "FontSize": 40
    },
    "3": {
      "Y": 0.5,
      "FontSize": 30
    }
  },
  "SpeechConfig": {
    "Volume": 1,  // Gunakan volume asli untuk audio narasi secara default
    "SpeechRate": 0,
    "Voice": null,
    "Style": null,
    "CustomizedVoice": null, // ID suara untuk kloning suara. Jika bidang ini ditentukan, Voice dan Style menjadi tidak valid.
    "AsrConfig": {
      "Alignment": "TopCenter",
      "AdaptMode": "AutoWrap",
      "Font": "Alibaba PuHuiTi 2.0 65 Medium",
      "SizeRequestType": "Nominal",
      "Spacing": -1,
      "Y": 0.8, // Koordinat Y default teks ketika video output dalam mode potret
      "Y": 0.9, // Koordinat Y default teks ketika video output dalam mode lanskap
      "Y": 0.85 // Koordinat Y default teks ketika video output dalam mode persegi
    },
    "SpecialWordsConfig": [{
      "Type": "Highlight",
      "Style": {
        "FontName": "KaiTi",
        "FontSize": 80,
        "FontColor": "20AEE9",
        "OutlineColour": "2D20E9",
        "Outline": 3,
        "FontFace": {
          "Bold": true,
          "Underline": true
        }
      },
      "WordsList": [
        "ApsaraVideo",
        "Intelligent Media Services",
        "Smart video creation"
      ]
    },
    {
      "Type": "Highlight",
      "Style": {
        "FontFace": {
          "Italic": true
        }
      },
      "WordsList": [
        "product",
        "take a look"
      ]
    },
    {
      "Type": "Forbidden",
      "WordsList": [
        "pilipala",
        "bilibala"
      ],
      "SoundReplaceMode": "None"
    }
  ]},
  "BackgroundMusicConfig": {
    "Volume": 0.2,   // Gunakan 20% dari volume asli untuk musik latar secara default
    "Style": null
  },
  "ProcessConfig": {
    "SingleShotDuration": 3,      // Durasi satu shot setelah pembagian
    "AllowVfxEffect": false,	  // Menentukan apakah akan menambahkan efek khusus
    "AllowTransition": false,	  // Menentukan apakah akan menambahkan efek transisi
    "AlignmentMode": "AutoSpeed"  // Bidang ini hanya didukung dalam mode narasi global
  }
}

Parameter TemplateConfig

TemplateConfig adalah parameter umum yang digunakan untuk mengatur templat fitur Pembuatan Video Satu-Klik. Untuk deskripsi parameter terperinci dan contoh penggunaan, lihat Parameter TemplateConfig.

Parameter OutputConfig

Anda dapat mengonfigurasi OutputConfig untuk menentukan parameter produksi seperti alamat output, aturan penamaan, lebar dan tinggi, serta jumlah video yang akan diproduksi.

Catatan

Konfigurasi parameter OutputConfig sama untuk mode narasi global dan mode narasi berkelompok.

Parameter

Tipe

Deskripsi

Contoh

Wajib

MediaURL

String

Alamat video output. Harus berisi placeholder {index}.

Aturan: http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4

Contoh: http://example.oss-cn-shanghai.aliyuncs.com/example/example_{index}.mp4

Wajib ketika GeneratePreviewOnly adalah false dan video output disimpan di OSS.

StorageLocation

String

Alamat penyimpanan untuk file aset media yang akan dioutput ke ApsaraVideo VOD (VOD).

Aturan: [your-vod-bucket].oss-[your-region-id].aliyuncs.com

Contoh: outin-****6c886b4549d481030f6e****.oss-cn-shanghai.aliyuncs.com

Wajib ketika GeneratePreviewOnly adalah false dan video output disimpan di VOD.

FileName

String

Nama file output. Harus berisi placeholder {index}.

Aturan: [your-file-name]__{index}.mp4

Contoh: example_{index}.mp4

Wajib ketika GeneratePreviewOnly adalah false dan video output disimpan di VOD.

GeneratePreviewOnly

Boolean

  • Jika GeneratePreviewOnly diatur ke true, tugas saat ini hanya menghasilkan timeline untuk pratinjau dan tidak melakukan produksi aktual. Anda tidak perlu menentukan alamat video output.

  • Setelah pekerjaan pembuatan video satu-klik selesai, panggil GetBatchMediaPoducingJob untuk mengkueri hasil pekerjaan. Daftar subtugas yang dikembalikan berisi ID proyek pengeditan video, projectId. Anda kemudian dapat memanggil GetEditingProject untuk mendapatkan timeline pratinjau.

false

Tidak. Default: false.

Count

Integer

Jumlah video yang akan dioutput. Maksimum 100.

10

Tidak. Default: 1.

MaxDuration

Float

Durasi maksimum satu video output, dalam detik.

20

Tidak. Default: 15.

FixedDuration

Float

Durasi tetap satu video output, dalam detik. Jika durasi tetap diatur, durasi video akan diselaraskan dengan parameter ini.

  • Parameter ini tidak didukung dalam mode narasi berkelompok.

  • Dalam mode narasi global, parameter ini didukung ketika SpeechTextArray kosong.

  • Anda dapat mengatur FixedDuration atau MaxDuration.

  • Untuk informasi selengkapnya, lihat Aturan durasi video.

20

Tidak. Default: 15.

Width

Integer

Lebar video output dalam piksel.

1080

Ya

Height

Integer

Tinggi video output dalam piksel.

1920

Ya

Video

JSON

Konfigurasi untuk aliran video output, seperti Crf dan Codec.

{"Crf": 27}

Tidak

Contoh parameter

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

Contoh aplikasi

Contoh 1: Mengonfigurasi pembukaan dan penutupan dalam mode narasi berkelompok

Skenario

Contoh ini berlaku untuk skenario di mana Anda ingin menambahkan intro dan outro yang konsisten dengan narasi suara yang seragam ke video. Anda dapat mengatur MediaGroup.SplitMode grup intro dan outro ke NoSplit. Dalam hal ini, sistem tidak membagi klip media dalam grup intro dan outro. Sebaliknya, sistem memutar klip media yang dipilih secara acak dari setiap grup secara keseluruhan untuk menambahkan intro dan outro yang tetap.

Contoh parameter

Klik untuk melihat contoh parameter InputConfig

{
    "mediaGroupArray": [
        {
            "duration": 4,
            "splitMode": "NoSplit",
            "groupName": "opening",
            "mediaArray": [
                "****e44009ee71f0b62bf6f7d44b****"
            ]
        },
        {
            "groupName": "group1",
            "mediaArray": [
                "****e44009eef1f0b62bf6f7d44b****"
            ],
            "speechTextArray": [
                "Bingung mau pergi liburan ke mana?",
                "Masih ragu dengan rencana liburan Anda?"
            ]
        },
        {
            "groupName": "group2",
            "mediaArray": [
                "****e44009eeferfb62bf6f7d44b****",
                "****e440094fghf0b62bf6f7d44b****",
                "****e44009ee74fgh62bf6f7d44b****"
            ],
            "speechTextArray": [
                "Danau Lugu di Yunnan mengundang Anda untuk janji temu dengan alam. Danau biru jernih seperti cermin, memantulkan adat istiadat unik Kerajaan Perempuan Mosuo, indah seperti lukisan. Mendayung perahu di tengah danau dan rasakan tahun-tahun damai dalam perahu dayung yang bergoyang. Pandang Gunung XX dan **** legenda misteriusnya. Tunggu apa lagi?",
                "Mengapa tidak mempertimbangkan pesta alam di Danau Lugu, Yunnan? Danau biru jernih seperti cermin memantulkan adat istiadat rakyat unik Kerajaan Perempuan Mosuo, indah dan memikat. Anda bisa dengan santai mendayung perahu di tengah danau, mengalami tahun-tahun damai dalam perahu dayung yang bergoyang. Anda juga bisa memandang Gunung XX yang sakral dan mendengarkan legenda kuno dan misterius yang telah diturunkan selama ribuan tahun. Datanglah ke Danau Lugu."
            ]
        },
        {
            "groupName": "group3",
            "mediaArray": [
                "****e44009ee7ft5662bf6f7d44b****"
            ],
            "speechTextArray": [
                "Datanglah ke Danau Lugu dan nikmati pemandangan yang tenang dan memesona ini!",
                "Nikmati puisi tak berujung yang dibawa oleh pemandangan yang tenang dan memesona ini!"
            ]
        },
        {
            "duration": 4,
            "splitMode": "NoSplit",
            "groupName": "ending",
            "mediaArray": [
                "****e44009ee5fgfg62bf6f7d44b****"
            ]
        }
    ]
}

Klik untuk melihat contoh parameter 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
                    }
                ]
            }
        ]
    }
}

Klik untuk melihat contoh parameter 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
}

Contoh 2: Membuat video montase wajah menggunakan pembuatan video otomatis berbasis skrip

Jika Anda tertarik dengan skenario koleksi wajah, lihat Praktik terbaik untuk membuat video koleksi wajah.

Contoh pemanggilan SDK

Prasyarat

Anda telah menginstal SDK sisi server IMS. Untuk informasi selengkapnya, lihat Persiapan.

Contoh kode

Contoh berikut menggunakan mode narasi global.

Klik untuk melihat contoh kode

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;


/**
 *  Anda perlu menambahkan dependensi Maven berikut:
 *   <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]"; // Pembuatan video cerdas dari citra dan teks didukung di cn-shanghai, cn-beijing, dan 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 Akun Alibaba Cloud memiliki akses penuh ke semua API. Kami menyarankan Anda menggunakan Pengguna RAM untuk pemanggilan API dan O&M rutin.
        // Contoh ini menunjukkan cara menyimpan ID AccessKey dan rahasia AccessKey dalam variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasinya, lihat https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-access-credentials
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();

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

        // Untuk menyematkan ID AccessKey dan rahasia AccessKey secara langsung, gunakan kode berikut. Namun, kami sangat menyarankan agar Anda tidak menyematkannya secara langsung dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor, yang membahayakan keamanan semua sumber daya Anda.
        // config.accessKeyId = <ID AccessKey yang dibuat di Langkah 2>;
        // config.accessKeySecret = <Rahasia AccessKey yang dibuat di Langkah 2>;
        config.endpoint = "ice." + regionId + ".aliyuncs.com";
        config.regionId = regionId;
        iceClient = new Client(config);
    }

    public void runExample() throws Exception {

        // Material video
        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);

        // Skrip narasi
        List<String> speechTextArray = Arrays.asList(
            "Bingung mau pergi liburan ke mana? Danau Lugu di Yunnan mengundang Anda untuk janji temu dengan alam. Danau biru jernih seperti cermin, memantulkan adat istiadat unik Kerajaan Perempuan Mosuo, indah seperti lukisan. Mendayung perahu di tengah danau dan rasakan tahun-tahun damai dalam perahu dayung yang bergoyang. Pandang Gunung XX dan **** legenda misteriusnya. Tunggu apa lagi? Datanglah ke Danau Lugu dan nikmati pemandangan yang tenang dan memesona ini!",
            "Masih ragu dengan rencana liburan Anda? Mengapa tidak mempertimbangkan pesta alam di Danau Lugu, Yunnan? Danau biru jernih seperti cermin memantulkan adat istiadat rakyat unik Kerajaan Perempuan Mosuo, indah dan memikat. Anda bisa dengan santai mendayung perahu di tengah danau, mengalami tahun-tahun damai dalam perahu dayung yang bergoyang. Anda juga bisa memandang Gunung XX yang sakral dan mendengarkan legenda kuno dan misterius yang telah diturunkan selama ribuan tahun. Datanglah ke Danau Lugu, dan nikmati puisi tak berujung yang dibawa oleh pemandangan yang tenang dan memesona ini!"
        );

        // Judul video
        List<String> titleArray = Arrays.asList(
            "Danau Lugu: Adat Mosuo dalam pemandangan indah",
            "Menjelajahi misteri Danau Lugu",
            "Pengalaman imersif Danau Lugu"
        );

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

        // Jumlah video yang akan diproduksi
        int produceCount = 4;

        // Lebar dan tinggi video output. Video potret dihasilkan.
        //int outputWidth = 1080;
        //int outputHeight = 1920;

        //// Lebar dan tinggi video output. Video lanskap dihasilkan.
        int outputWidth = 1920;
        int outputHeight = 1080;

        // Alamat OSS video output. Harus berisi placeholder {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);

        // Kirim tugas pembuatan video cerdas
        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("Mulai tugas batch skrip, batchJobId: " + jobId);

        // Periksa status tugas hingga tugas selesai
        System.out.println("Menunggu tugas selesai...");
        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("Tugas batch gagal. InfoTugas: " + JSONObject.toJSONString(getResponse.getBody().getEditingBatchJob()));
                throw new Exception("Produksi gagal. BatchJobId: " + jobId);
            }

            if ("Finished".equals(status)) {
                System.out.println("Tugas batch selesai. InfoTugas: " + JSONObject.toJSONString(getResponse.getBody().getEditingBatchJob()));
                break;
            }
        }
    }
}

Detail parameter permintaan API

Klik untuk melihat 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": [
    "Bingung mau pergi liburan ke mana? Danau Lugu di Yunnan mengundang Anda untuk janji temu dengan alam. Danau biru jernih seperti cermin, memantulkan adat istiadat unik Kerajaan Perempuan Mosuo, indah seperti lukisan. Mendayung perahu di tengah danau dan rasakan tahun-tahun damai dalam perahu dayung yang bergoyang. Pandang Gunung XX dan **** legenda misteriusnya. Tunggu apa lagi? Datanglah ke Danau Lugu dan nikmati pemandangan yang tenang dan memesona ini!",
    "Masih ragu dengan rencana liburan Anda? Mengapa tidak mempertimbangkan pesta alam di Danau Lugu, Yunnan? Danau biru jernih seperti cermin memantulkan adat istiadat rakyat unik Kerajaan Perempuan Mosuo, indah dan memikat. Anda bisa dengan santai mendayung perahu di tengah danau, mengalami tahun-tahun damai dalam perahu dayung yang bergoyang. Anda juga bisa memandang Gunung XX yang sakral dan mendengarkan legenda kuno dan misterius yang telah diturunkan selama ribuan tahun. Datanglah ke Danau Lugu, dan nikmati puisi tak berujung yang dibawa oleh pemandangan yang tenang dan memesona ini!"
  ],
  "TitleArray": [
    "Danau Lugu: Adat Mosuo dalam pemandangan indah",
    "Menjelajahi misteri Danau Lugu",
    "Pengalaman imersif Danau Lugu"
  ]
}

Klik untuk melihat 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"
}

Konfigurasi Lanjutan

Untuk informasi selengkapnya, lihat Logika remix video satu-klik batch dan konfigurasi lanjutan.

FAQ

Untuk pertanyaan umum tentang Script-to-Video, lihat FAQ Script-to-Video.

Referensi