All Products
Search
Document Center

Intelligent Media Services:Skenario umum

Last Updated:Nov 11, 2025

Topik ini menjelaskan parameter sintesis, konfigurasi lanjutan, dan contoh pemanggilan SDK untuk pencocokan cerdas teks-gambar dalam skenario umum.

Penting
  • Produksi video otomatis berbasis skrip dan pencocokan cerdas teks-gambar menggunakan API yang sama untuk mengirimkan tugas. Untuk informasi tentang cara membedakan keduanya melalui parameter, lihat Deskripsi perbedaan parameter.

  • Catatan: Di antarmuka ini, wilayah dalam URL OSS dari semua aset media harus konsisten dengan wilayah dalam titik akhir OpenAPI.

  • Wilayah yang didukung: Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Hangzhou), Tiongkok (Shenzhen), AS (Barat), dan Singapura.

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

Catatan
  • Untuk pemahaman yang lebih baik mengenai topik ini, kami menyarankan Anda terlebih dahulu mempelajari konsep dan proses penggunaan [Pencocokan Cerdas Teks-Gambar - Skenario Umum] melalui Panduan Operasi Produksi Video Satu-Klik Cerdas.

  • Pencocokan cerdas teks-gambar – skenario umum mencakup dua mode produksi. Topik ini menjelaskan secara rinci mode berikut:

    • Mode Siaran

    • Skrip Storyboard

Instruksi penggunaan

Deskripsi parameter InputConfig

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

Parameter

Tipe

Deskripsi

Nilai contoh

Wajib

Mode yang didukung

MediaArray

List<String>

  • Tentukan material editing dengan mengunggah aset media. Mendukung daftar ID aset media atau URL OSS material, dengan durasi video total maksimum dua jam.

  • Untuk format material yang didukung, lihat Format video.

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

Salah satu dari MediaArray atau MediaSearchInput wajib diisi

Semua

MediaSearchInput

MediaSearchInput

Mencari dan mencocokkan material editing secara cerdas dengan menentukan pustaka pengambilan dan teks deskripsi subjek.

{"LibSearchCondition":{"SearchLibs":["ims-default-search-lib","test-20"],"SearchText":"Asisten Alibaba Cloud sedang belajar cara siaran langsung"}}

Semua

TitleArray

List<String>

Daftar judul, satu dipilih secara acak untuk setiap produksi

Maksimal 50 judul, masing-masing tidak melebihi 50 karakter

["Judul 1","Judul 2"]

Tidak

Semua

SubHeadingArray

List<SubHeading>

Pengaturan subjudul

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

Tidak

Semua

SpeechTextArray

List<String>

  • Daftar skrip narasi suara, satu dipilih secara acak untuk setiap produksi.

  • Maksimal 50 entri, masing-masing skrip narasi suara tidak melebihi 1.000 karakter.

  • Mendukung pengendalian sintesis suara melalui bahasa markup SSML

    Penting

    Saat ini hanya mendukung <break>, <s>, <sub>, <w>, <phoneme>, <say-as>. Nada terkait CosyVoice hanya mendukung <break>, <s>, <sub>

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

Tidak

  • Mode Siaran

SceneInfo

SceneInfo

Informasi adegan, digunakan untuk parameter terkait adegan.

Lihat Contoh parameter: Mode Siaran, Contoh parameter: Skrip Storyboard

Ya

  • Skrip Storyboard

StickerArray

List<Sticker>

  • Daftar stiker, satu dipilih secara acak untuk setiap produksi. Maksimal 50, mendukung ID aset media atau URL OSS.

  • Aturan pemilihan acak: Jika diberikan 10 stiker dan jumlah video yang akan diproduksi diatur menjadi 20, bilangan acak antara 1 dan 10 dihasilkan, misalnya 3, lalu stiker dipilih secara berurutan 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7...

  • Untuk format material yang didukung, lihat Format gambar.

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

Tidak

Semua

BackgroundMusicArray

List<String>

  • Daftar musik latar, satu dipilih secara acak untuk setiap produksi. Maksimal 50, mendukung ID aset media atau URL OSS.

  • Aturan pemilihan acak: Jika diberikan 10 trek musik latar dan jumlah video yang akan diproduksi diatur menjadi 20, bilangan acak antara 1 dan 10 dihasilkan, misalnya 3, lalu trek musik latar dipilih secara berurutan 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7...

  • Untuk format material yang didukung, lihat Format audio

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

Tidak

Semua

BackgroundImageArray

List<String>

  • Daftar gambar latar, satu dipilih secara acak untuk setiap produksi. Maksimal 50, mendukung ID aset media atau URL OSS.

  • Aturan pemilihan acak: Jika diberikan 10 gambar latar dan jumlah video yang akan diproduksi diatur menjadi 20, bilangan acak antara 1 dan 10 dihasilkan, misalnya 3, lalu gambar latar dipilih secara berurutan 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7...

  • Untuk format material yang didukung, lihat Format gambar

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

Tidak

Semua

Deskripsi parameter MediaSearchInput

Parameter

Tipe

Deskripsi

Wajib

LibSearchCondition

LibSearchCondition

Pengaturan kondisi pencarian pustaka pengambilan

Wajib

Deskripsi parameter LibSearchCondition

Parameter

Tipe

Deskripsi

Nilai contoh

Wajib

SearchLibs

List<String>

Daftar pustaka pengambilan

["ims-default-search-lib"]

Ya

SearchText

String

Teks deskripsi subjek, digunakan untuk menggambarkan konten tematik material target yang dicocokkan, dengan panjang teks maksimum 20 karakter.

Samudra, terumbu karang, anjing laut, lumba-lumba, lingkungan laut

Ya

Deskripsi parameter SceneInfo

Parameter

Tipe

Deskripsi

Wajib

Scene

String

Jenis adegan pencocokan, untuk skenario umum, nilai tetap "General" harus dilewatkan.

Ya

ShotInfo

ShotInfo

Atur skrip storyboard.

Catatan

Parameter ini hanya berlaku untuk mode Skrip Storyboard. Jika menggunakan Mode Siaran, parameter ini tidak diperlukan.

Tidak

Deskripsi parameter ShotInfo

Catatan

Parameter ini hanya berlaku untuk mode Skrip Storyboard. Jika menggunakan Mode Siaran, parameter ini tidak diperlukan.

Parameter

Tipe

Deskripsi

Wajib

ShotScripts

List<ShotScript>

Daftar skrip storyboard

Ya

Deskripsi parameter ShotScript

Catatan

Parameter ini hanya berlaku untuk mode Skrip Storyboard. Jika menggunakan Mode Siaran, parameter ini tidak diperlukan.

Parameter

Tipe

Deskripsi

Nilai contoh

Wajib

ScriptText

String

Teks skrip untuk satu shot, digunakan untuk menggambarkan konten shot tersebut

Akhir-akhir ini ia sedang mengembangkan ramuan ajaib baru.

Tidak

SpeechText

String

  • Skrip narasi suara untuk satu shot, tidak melebihi 100 karakter

  • Mendukung pengendalian sintesis suara melalui bahasa markup SSML

    Penting

    Saat ini hanya mendukung <break>, <s>, <sub>, <w>, <phoneme>, <say-as>

Penyihir tua Danny sedang mengutak-atik instrumen aneh. Akhir-akhir ini ia sedang mengembangkan ramuan ajaib baru.

Tidak

Duration

Float

  • Durasi shot dalam detik. Nilai harus lebih besar dari atau sama dengan 1 detik.

  • Hanya berlaku ketika tidak ada narasi suara. Jika ada narasi suara, durasi shot dihitung secara otomatis berdasarkan durasi narasi suara.

5

Tidak

Volume

Float

  • Volume video input. Jika volume diatur di sini (Volume), volume video pada shot saat ini akan disesuaikan dengan volume ini. EditingConfig.MediaConfig.Volume tidak akan berlaku lagi untuk grup ini.

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

0,5

Tidak

Contoh parameter: Mode Siaran

{
  // Pilih salah satu antara MediaArray atau MediaSearchInput
  "MediaArray": [
    "****9d46c886b45481030f6e****",
    "****c886810b4549d4630f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.mp4",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test2.png"
  ],
  // Pilih salah satu antara MediaArray atau MediaSearchInput
  "MediaSearchInput": {
        "LibSearchCondition": {
            "SearchLibs": [
                "ims-default-search-lib",
                "test-20"
            ],
            "SearchText": "Asisten Alibaba Cloud sedang belajar cara siaran langsung"
      }
  },
  "TitleArray": [
    "Pembukaan Hema Fresh Huilongguan",
    "Hema Fresh sekarang buka"
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["Subjudul 1", "Subjudul 2"]
    },
    {
      "Level": 3,
      "TitleArray": ["Subjudul level 3"]
    }
  ],
  "SpeechTextArray": [
    "Toko Hema Fresh baru telah dibuka di mal terdekat. Hari ini adalah hari pertama pembukaan, buruan ikut meramaikan. Toko Hema ini tidak besar, tetapi banyak orang di mal. Camilan dan minuman cukup terjangkau. Orang-orang mengantri dalam antrean panjang. Datang dan lihat sendiri!",
    "Toko Hema Fresh baru telah dibuka di mal terdekat. Hari ini adalah hari pertama pembukaan, buruan ikut meramaikan",
    "<speak>Pertarungan sedang <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">berkecamuk</phoneme>. Hari ini, tokoh utama kita, legenda tenis meja Ma Long, sedang berjuang menuju puncak kejayaan. Di perempat final melawan Kamizono Shunpei yang tangguh, Ma Long tidak gentar, memberikan segalanya dalam setiap reli. Penempatan bola yang presisi dan penilaian tenangnya memberinya keunggulan dalam pertandingan ini. Akhirnya, Ma Long berhasil mengalahkan lawannya dan maju ke semifinal.</speak>"
  ],
  "Sticker": {
    "MediaId": "****b681034549d46c880f6e****",
    "X": 10,
    "Y": 100,
    "Width": 300,
    "Height": 300,
    "Opacity": 0.6
  },
  "StickerArray": [
    {
      "MediaId": "****9d46c8b4548681030f6e****",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300,
      "Opacity": 0.6
    },
    {
      "MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test3.png",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    }
  ],
  "BackgroundMusicArray": [
    "****b4549d46c88681030f6e****",
    "****549d46c88b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test4.mp3"
  ],
  "BackgroundImageArray": [
    "****6c886b4549d481030f6e****",
    "****9d46c8548b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png"
  ]
}

Contoh parameter: Skrip Storyboard

{
  // Pilih salah satu antara MediaArray atau MediaSearchInput
  "MediaArray": ["****9d46c886b45481030f6e****", "****c886810b4549d4630f6e****"],
  // Pilih salah satu antara MediaArray atau MediaSearchInput
  "MediaSearchInput": {
        "LibSearchCondition": {
            "SearchLibs": [
                "ims-default-search-lib",
                "test-20"
            ],
            "SearchText": "Asisten Alibaba Cloud sedang belajar cara siaran langsung"
      }
  },
  "SceneInfo": {
    "Scene": "General", // Pencocokan umum 
    "ShotInfo": {
      "ShotScripts": [
        {
          "ScriptText": "Ini adalah teks skrip untuk shot pertama",
          "SpeechText": "Ini adalah skrip narasi suara untuk shot pertama, durasi shot sesuai dengan durasi narasi suara"
        },
        {
          "ScriptText": "Ini adalah teks skrip untuk shot kedua, ketika tidak ada skrip narasi suara, Anda dapat mengatur Duration untuk mengontrol durasi shot",
          "Duration": 5.0, // Dapat diatur ketika tidak ada skrip narasi suara
          "Volume": 1.0 // Atur volume material video pada shot ini
        },
        {
          "ScriptText": "Ini adalah teks skrip untuk shot ketiga",
          "SpeechText": "<speak>Skrip narasi suara mendukung ssml. Pertarungan sedang <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">berkecamuk</phoneme>. Hari ini, tokoh utama kita, legenda tenis meja Ma Long, sedang berjuang menuju puncak kejayaan. <s>Di perempat final melawan Kamizono Shunpei yang tangguh, Ma Long tidak gentar, memberikan segalanya dalam setiap reli</s>Penempatan bola yang presisi dan penilaian tenangnya memberinya keunggulan dalam pertandingan ini. Akhirnya, Ma Long berhasil mengalahkan lawannya dan maju ke semifinal<break time=\"1000ms\"/></speak>"
        }
      ]
    }
  },
   "TitleArray": [
    "Pembukaan Hema Fresh Huilongguan",
    "Hema Fresh sekarang buka"
  ],
  "SubHeadingArray": [
    {
      "Level": 1,
      "TitleArray": ["Subjudul 1", "Subjudul 2"]
    },
    {
      "Level": 3,
      "TitleArray": ["Subjudul level 3"]
    }
  ],
  "StickerArray": [
    {
      "MediaId": "****9d46c8b4548681030f6e****",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    },
    {
      "MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test3.png",
      "X": 10,
      "Y": 100,
      "Width": 300,
      "Height": 300
    }
  ],
  "BackgroundMusicArray": [
    "****b4549d46c88681030f6e****",
    "****549d46c88b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test4.mp3"
  ],
  "BackgroundImageArray": [
    "****6c886b4549d481030f6e****",
    "****9d46c8548b4681030f6e****",
    "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png"
  ]
}

Deskripsi parameter EditingConfig

Anda dapat mengonfigurasi EditingConfig untuk menentukan parameter font judul, volume, posisi, dan parameter sintesis lainnya pada video keluaran. Jika tidak memiliki persyaratan khusus, kami menyarankan menggunakan konfigurasi default dengan membiarkan bidang ini kosong.

Catatan

Deskripsi parameter untuk "Mode Siaran" dan "Skrip Storyboard" dalam skenario umum adalah sama.

Parameter

Tipe

Deskripsi

Nilai contoh

Wajib

MediaConfig

JSON

Konfigurasi terkait material video input.

Lihat Contoh parameter

Tidak

TitleConfig

JSON

Konfigurasi terkait judul. Mendukung pengaturan parameter keterangan.

Lihat Contoh parameter

Tidak

SubHeadingConfig

JSON

Konfigurasi terkait subjudul multi-level. Mendukung pengaturan parameter keterangan.

Deskripsi bidang JSON:

Lihat Contoh parameter

Tidak

SpeechConfig

JSON

Konfigurasi terkait skrip narasi suara.

Lihat Contoh parameter

Tidak

BackgroundMusicConfig

JSON

Konfigurasi terkait musik latar.

{"Volume":0.2}

Tidak

BackgroundImageConfig

JSON

Konfigurasi terkait gambar latar. Jika gambar latar sudah dikonfigurasi di InputConfig, bidang ini tidak akan berlaku.

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

Tidak

ProcessConfig

JSON

Konfigurasi pemrosesan pengeditan campuran.

Lihat Contoh parameter

Tidak

FECanvas

JSON

Konfigurasi kanvas untuk pratinjau halaman antarmuka depan.

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

Tidak

ProduceConfig

JSON

Konfigurasi sintesis pengeditan reguler, untuk detail bidang lihat: EditingProduceConfig

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

Tidak

Deskripsi parameter ProcessConfig

Parameter

Tipe

Deskripsi

Nilai contoh

Wajib

SingleShotDuration

Float

Ketika material video panjang diedit, material tersebut akan secara otomatis dibagi menjadi segmen. Ini adalah durasi setiap shot setelah pemisahan, dalam satuan detik.

5

Opsi, default adalah 3

EnableClipSplit

Boolean

Menunjukkan apakah akan melakukan segmentasi AI (secara otomatis membagi material panjang sesuai perubahan adegan video). Jika true, parameter SingleShotDuration menjadi tidak berlaku.

false

Opsi, default adalah false

AllowVfxEffect

Boolean

Apakah diizinkan menambahkan efek khusus.

true

Opsi, default adalah false

VfxEffectProbability

Float

Probabilitas menerapkan efek pada setiap klip video, rentang nilai: 0,0 - 1,0, mendukung 2 tempat desimal.

0,6

Opsi, default adalah 0,5

VfxFirstClipEffectList

List<String>

  • Ketika VfxFirstClipEffectList tidak kosong, efek untuk klip pertama dalam video akan dipilih dari VfxFirstClipEffectList.

  • Ketika VfxFirstClipEffectList kosong, efek untuk klip pertama dalam video akan dipilih secara acak dari efek berikut: "slightshow", "starfieldshinee", "starfieldshinee2", "starsparkle", "colorfulripples", "starfield".

  • Untuk contoh efek, lihat: Contoh efek khusus

["slightshow","starfieldshinee"]

Tidak

VfxNotFirstClipEffectList

List<String>

  • Ketika VfxNotFirstClipEffectList tidak kosong, efek untuk klip non-pertama dalam video akan dipilih dari VfxNotFirstClipEffectList.

  • Ketika VfxNotFirstClipEffectList kosong, efek untuk klip non-pertama dalam video akan dipilih dari efek berikut: "zoomslight", "zoom", "zoominout", "slightshake".

  • Untuk contoh efek, lihat: Contoh efek khusus

["zoomslight","zoom"]

Tidak

AllowTransition

Boolean

Apakah diizinkan menambahkan efek transisi.

true

Opsi, default adalah false

TransitionDuration

Float

Durasi transisi dalam detik. Jika durasi transisi > durasi klip - 1, efek transisi tidak akan berlaku pada klip tersebut.

0,5

Opsi, default adalah 0,5 detik

TransitionList

List<String>

Daftar efek transisi kustom. Ketika AllowTransition=true, efek transisi dipilih secara acak dari daftar ini untuk sintesis. Untuk rentang efek transisi yang tersedia, lihat Pustaka efek transisi. Jika parameter ini kosong, efek transisi akan dipilih secara acak dari berikut: "linearblur", "colordistance", "crosshatch", "dreamyzoom", "doomscreentransition_up"

["directional", "linearblur"]

Tidak

UseUniformTransition

Boolean

Apakah akan menggunakan efek transisi yang konsisten dalam satu video.

true

Opsi, default adalah true

AllowFilter

Boolean

Apakah diizinkan menambahkan filter kustom

false

Opsi, default adalah false

FilterList

List<String>

Daftar efek filter kustom. Ketika AllowFilter=true, filter dipilih secara acak dari daftar ini untuk sintesis. Untuk rentang efek filter yang tersedia, lihat Contoh efek filter. Jika parameter ini kosong, tidak akan ditambahkan efek filter.

["m1", "m2"]

Tidak

AllowDuplicateMatch

Boolean

Menunjukkan apakah klip yang cocok dapat digunakan kembali.

false

Opsi, default adalah false

ImageDuration

Float

Durasi material gambar dalam detik.

2

Opsi, default adalah 2

EditingConfig contoh parameter

Semua parameter dalam EditingConfig bersifat opsional. Berikut adalah konfigurasi default.

{
  "MediaConfig": {
    "Volume": 0 // Material video default dimatikan suaranya
  },
  "TitleConfig": {
    "Alignment": "TopCenter",
    "AdaptMode": "AutoWrap",
    "Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
    "SizeRequestType": "Nominal",
    "Y": 0.1, // Nilai koordinat Y judul ketika output potret
    "Y": 0.05, // Nilai koordinat Y judul ketika output lanskap
    "Y": 0.08 // Nilai koordinat Y judul ketika output persegi
  },
  "SpeechConfig": {
    "Volume": 1,  // Audio narasi suara default menggunakan volume asli
    "SpeechRate": 0,
    "Voice": null,
    "Style": null,
    "CustomizedVoice": null, // voiceId kloning suara, jika bidang ini diisi, Voice dan Style tidak akan berlaku.
    "AsrConfig": {
      "Alignment": "TopCenter",
      "AdaptMode": "AutoWrap",
      "Font": "Alibaba PuHuiTi 2.0 65 Medium",
      "SizeRequestType": "Nominal",
      "Spacing": -1,
      "Y": 0.8, // Nilai koordinat Y keterangan ketika output potret
      "Y": 0.9, // Nilai koordinat Y keterangan ketika output lanskap
      "Y": 0.85 // Nilai koordinat Y keterangan ketika output persegi
    }
  },
  "SubHeadingConfig": {
    "1": {
      "Y": 0.3,
      "FontSize": 40
    },
    "3": {
      "Y": 0.5,
      "FontSize": 30
    }
  },
  "BackgroundMusicConfig": {
    "Volume": 0.2,   // Musik latar default menggunakan volume 20%,
    "Style": null
  },
  "ProcessConfig": {
    "SingleShotDuration": 3,      // Durasi shot setelah pemisahan, pilih salah satu antara SingleShotDuration atau EnableClipSplit
    "EnableClipSplit": false      // Apakah akan melakukan segmentasi AI, jika true, parameter SingleShotDuration menjadi tidak berlaku
    "AllowVfxEffect": false,	  // Apakah akan menambahkan efek khusus
    "AllowTransition": false,	  // Apakah akan menambahkan efek transisi
    "AllowDuplicateMatch": false, // Dalam mode pencocokan teks-gambar, apakah klip yang cocok dapat digunakan kembali
  }
}

Deskripsi parameter TemplateConfig

TemplateConfig merupakan parameter umum untuk produksi video satu-klik, digunakan untuk mengatur templat produksi video satu-klik. Untuk deskripsi parameter detail dan contoh penggunaan, lihat Deskripsi parameter TemplateConfig.

Deskripsi parameter OutputConfig

Catatan
  • Anda dapat mengonfigurasi OutputConfig untuk menentukan alamat output, aturan penamaan, lebar dan tinggi video output, jumlah video output, serta konfigurasi parameter sintesis lainnya.

  • Deskripsi parameter untuk "Mode Siaran" dan "Skrip Storyboard" dalam skenario umum adalah sama.

Parameter

Tipe

Deskripsi

Nilai contoh

Wajib

MediaURL

String

Alamat video output, harus mengandung placeholder {index}.

Format: 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=false dan video output ke OSS

StorageLocation

String

Tentukan lokasi penyimpanan untuk file media output ke VOD.

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

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

Wajib ketika GeneratePreviewOnly=false dan video output ke VOD

FileName

String

Nama file output, harus mengandung placeholder {index}.

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

Contoh: example_{index}.mp4

Wajib ketika GeneratePreviewOnly=false dan video output ke VOD

GeneratePreviewOnly

Boolean

  • Ketika GeneratePreviewOnly = true, menunjukkan bahwa tugas saat ini hanya menghasilkan timeline untuk pratinjau dan tidak benar-benar mensintesis video, sehingga alamat video output dapat dibiarkan kosong.

  • Setelah tugas produksi video satu-klik selesai, Anda dapat mengkueri hasil tugas melalui GetBatchMediaPoducingJob. Daftar subtugas yang dikembalikan akan menyertakan ID proyek editing (projectId). Anda kemudian dapat memanggil GetEditingProject untuk mendapatkan timeline pratinjau.

false

Opsi, default adalah false

Count

Integer

Jumlah video output

  • Mode Siaran: batas maksimal 100.

  • Skrip Storyboard: batas maksimal 100.

10

Opsi, default adalah 1

MaxDuration

Float

Batas durasi maksimum untuk satu video output.

Jika ada parameter "teks narasi suara" yang ditentukan, durasi didasarkan pada durasi TTS dari teks narasi suara, dan parameter ini tidak berlaku.

Jika tidak ada "teks narasi suara", pengaturan saat ini digunakan sebagai durasi maksimum untuk satu video, default adalah 15 detik.

20

Opsi, default adalah 15 detik

FixedDuration

Float

Durasi tetap untuk satu video output. Jika durasi tetap diatur, durasi video akan disesuaikan dengan parameter ini.

Catatan:

  • Mode Skrip Storyboard tidak mendukung pengaturan parameter ini;

  • Dalam Mode Siaran, parameter ini dapat diatur ketika SpeechTextArray kosong;

  • Anda hanya dapat memilih salah satu antara FixedDuration dan MaxDuration;

20

Opsi, default adalah 15 detik

Width

Integer

Lebar output dalam px

1080

Ya

Height

Integer

Tinggi output dalam px

1920

Ya

Video

JSONObject

Konfigurasi terkait aliran video output, seperti Crf, Codec, dll.

{"Crf": 27}

Tidak

Contoh parameter

{
 	"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4",
 	"Count": 1,
 	"MaxDuration": 15,
 	"Width": 1080,
 	"Height": 1920,
 	"Video": {"Crf": 27},
        "GeneratePreviewOnly":false
}

Contoh pemanggilan SDK

Prasyarat

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

Contoh kode

Menggunakan Mode Siaran sebagai contoh.

Bentangkan untuk melihat contoh kode

package com.example;

import com.alibaba.fastjson.JSONObject;
import com.aliyun.ice20201109.Client;
import com.aliyun.ice20201109.models.*;
import com.aliyun.teaopenapi.models.Config;

import java.util.*;

/**
 *  Dependensi Maven yang diperlukan:
 *   <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 SmartMixBatchEditingService {

    static final String regionId = "[your-bucket]"; // Pencocokan cerdas teks-gambar mendukung cn-shanghai, cn-beijing, cn-hangzhou
    static final String bucket = "[your-region-id]";
    private Client iceClient;

    public static void main(String[] args) throws Exception {
        SmartMixBatchEditingService smartMixBatchEditingService = new SmartMixBatchEditingService();
        smartMixBatchEditingService.initClient();
        smartMixBatchEditingService.runExample();
    }

    public void initClient() throws Exception {
        // AccessKey Akun Alibaba Cloud memiliki izin akses untuk semua API. Kami menyarankan Anda menggunakan pengguna RAM untuk akses API atau operasi harian.
        // Contoh ini menunjukkan penyimpanan ID AccessKey dan Rahasia AccessKey dalam variabel lingkungan. Untuk metode konfigurasi, lihat: https://www.alibabacloud.com/help/zh/sdk/developer-reference/v2-manage-access-credentials
        com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();

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

        // Jika Anda perlu menyematkan ID AccessKey dan Rahasia AccessKey secara langsung, gunakan kode di bawah ini. Namun, kami sangat menyarankan untuk tidak menyimpan ID AccessKey dan Rahasia AccessKey dalam kode proyek Anda, karena hal ini dapat menyebabkan kebocoran AccessKey, mengancam keamanan semua sumber daya di bawah akun 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
        List<String> mediaArray = Arrays.asList(
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-1.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-2.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-3.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-4.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-5.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-6.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-7.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-8.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-9.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-10.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-11.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-12.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-13.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-14.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-15.mp4",
            "http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-16.mp4"
        );

        // Skrip narasi suara
        String speechText = "Di hamparan luas biru pekat, permadani kehidupan yang berwarna-warni perlahan terbentang. Di perairan biru jernih, terumbu karang seperti hutan bawah laut, berwarna-warni dan beragam. Mereka merupakan fondasi penting keanekaragaman hayati laut, menyediakan perlindungan bagi tak terhitung ikan kecil, kerang, dan rumput laut. Singa laut yang malas dan menggemaskan menikmati berjemur di bawah sinar matahari hangat di atas bebatuan, hidup selaras dengan alam. Lumba-lumba berenang bersama di perairan biru, saling mengejar dan bermain, menunjukkan kelincahan dan kebijaksanaan yang dianugerahkan alam. Namun, lingkungan laut yang indah menghadapi tantangan yang belum pernah terjadi sebelumnya. Berbagai polusi sampah meninggalkan bekas luka di kulit lautan, tanpa ampun mengikis lingkungan ekologis yang awalnya murni. Banyak spesies menghadapi krisis kekurangan makanan, peningkatan penyakit, dan penurunan populasi. Kita harus bertindak untuk melindungi rumah biru yang indah namun rapuh ini, agar lautan dapat kembali mendapatkan kemurnian dan vitalitasnya di masa depan.";

        // Judul video
        String title = "Melindungi Rumah Biru Kita";

        JSONObject inputConfig = new JSONObject();
        inputConfig.put("MediaArray", mediaArray);
        inputConfig.put("SpeechText", speechText);
        inputConfig.put("Title", title);

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

        // Lebar dan tinggi video, menghasilkan file potret
        int outputWidth = 1080;
        int outputHeight = 1920;

        //// Lebar dan tinggi video, menghasilkan file lanskap
        //int outputWidth = 1920;
        //int outputHeight = 1080;

        // Alamat OSS video, harus menyertakan placeholder {index}
        String mediaUrl = "http://" + bucket + ".oss-" + regionId + ".aliyuncs.com/smart_mix/output_{index}.mp4";

        JSONObject outputConfig = new JSONObject();
        outputConfig.put("MediaURL", mediaUrl);
        outputConfig.put("Count", produceCount);
        outputConfig.put("Width", outputWidth);
        outputConfig.put("Height", outputHeight);

        // Kirim tugas produksi video satu-klik
        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 pencampuran cerdas, batchJobId: " + jobId);

        // Periksa status tugas hingga semuanya 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 input pemanggilan API

Bentangkan untuk melihat InputConfig

{
	"MediaArray": [
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-1.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-2.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-3.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-4.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-5.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-6.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-7.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-8.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-9.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-10.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-11.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-12.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-13.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-14.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-15.mp4",
		"http://ice-document-materials.oss-cn-shanghai.aliyuncs.com/test_media/sea/sea-16.mp4"
	],
	"SpeechText": "Di hamparan luas biru pekat, permadani kehidupan yang berwarna-warni terbentang. Di perairan biru jernih, terumbu karang membentuk hutan bawah laut, berwarna-warni dan beragam, berperan sebagai fondasi keanekaragaman hayati laut serta menyediakan perlindungan bagi tak terhitung ikan kecil, kerang, dan rumput laut. Singa laut yang malas dan menggemaskan berjemur di bawah sinar matahari hangat di atas bebatuan, menikmati matahari dengan puas, hidup selaras dengan alam. Lumba-lumba berenang bersama di perairan biru, saling mengejar dan bermain, menunjukkan kelincahan dan kecerdasan yang dianugerahkan alam. Namun, lingkungan laut yang indah menghadapi tantangan yang belum pernah terjadi sebelumnya. Berbagai bentuk polusi sampah meninggalkan bekas luka di kulit lautan, tanpa ampun mengikis lingkungan ekologis yang dulunya murni. Banyak spesies menghadapi krisis kekurangan makanan, peningkatan penyakit, dan penurunan populasi. Kita harus bertindak untuk melindungi rumah biru yang indah namun rapuh ini, agar lautan masa depan dapat kembali mendapatkan kemurnian dan vitalitasnya.",
	"Title":"Lindungi Rumah Biru Kita"
}

Bentangkan untuk melihat OutputConfig

{
  "Count": 4,
  "Height": 1080,
  "Width": 1920,
  "MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4"
}

Logika pengeditan campuran dan konfigurasi lanjutan

Logika pemrosesan

Mode Siaran:

  • Jika material video dipilih melalui "pustaka pengambilan yang ditentukan + teks deskripsi subjek yang ditetapkan", teks deskripsi subjek tersebut dapat digunakan sebagai kondisi pencarian untuk mencari klip video yang sesuai secara cerdas di pustaka pengambilan yang ditentukan sebagai video input.

  • Jika video input berupa klip video panjang, klip tersebut akan terlebih dahulu disegmentasi. Selama pengeditan campuran, klip video yang telah disegmentasi akan dipilih untuk disambung dan disintesis. Durasi default setiap shot setelah segmentasi adalah 3 detik. Anda juga dapat menentukan durasi shot melalui parameter SingleShotDuration.

  • Jika tidak ada skrip narasi suara, klip video akan dipilih secara acak dan disambung bersama untuk menghasilkan video berdurasi sekitar 15 detik.

  • Jika tersedia skrip narasi suara, pencocokan cerdas teks-gambar akan dilakukan dan disejajarkan dengan skrip narasi suara untuk memproduksi beberapa video secara batch.

Skrip Storyboard:

  • Jika material video ditentukan melalui "pustaka pengambilan yang ditentukan + teks deskripsi subjek yang ditetapkan", teks deskripsi subjek tersebut harus digunakan untuk pencarian cerdas di pustaka pengambilan yang ditentukan guna mengekstraksi klip video yang sesuai sebagai video input.

  • Dalam mode Skrip Storyboard, tidak perlu mengatur SpeechTextArray/SpeechText. Sebagai gantinya, gunakan SceneInfo.ShotInfo.ShotScripts untuk mengontrol konten, durasi, narasi suara, dan informasi lainnya untuk setiap shot dalam video.

  • Dalam satu shot, prioritas diberikan pada pemotongan dan pencocokan cerdas berdasarkan teks skrip. Jika teks skrip tidak diatur tetapi teks narasi suara diatur, pencocokan akan dilakukan berdasarkan teks narasi suara.

  • Dalam satu shot, durasi shot disejajarkan dengan durasi narasi suara atau durasi kustom.

Konfigurasi lanjutan

Untuk detail konfigurasi lanjutan, lihat Logika pengeditan campuran produksi video satu-klik batch dan konfigurasi lanjutan.

Referensi