All Products
Search
Document Center

ApsaraVideo Live:Integrasikan Queen SDK untuk Web

Last Updated:Nov 05, 2025

Queen Web SDK adalah komponen retouching yang mendukung fitur seperti retouching wajah dasar dan lanjutan, makeup, pembentukan wajah, stiker, pembentukan tubuh, penghapusan gambar, filter, penulisan AR, dan Animoji. Topik ini menjelaskan cara mengintegrasikan Queen SDK for Web.

Persiapan

Integrasikan Queen SDK

Gunakan NPM (disarankan)

  1. Instal Queen SDK.

    npm install aliyun-queen-engine  //Versi terbaru adalah 6.3.14

  2. Impor retouching.

    Impor versi retouching default

    Mendukung retouching dasar dan lanjutan, makeup, pembentukan, filter, dan stiker.

    Catatan

    Ukuran paket dan file sumber daya yang dimuat berbeda tergantung pada edisi. Ukuran paket yang lebih besar biasanya menawarkan fitur yang lebih komprehensif. Pilih edisi yang paling sesuai dengan kebutuhan Anda.

    import QueenEngine, {kQueenBeautyType, kQueenBeautyParams, kQueenBeautyMakeupType, kQueenBeautyFaceShapeType, kQueenBeautyBlend} from "aliyun-queen-engine"
    queenEngine = new QueenEngine();

    Edisi Lite

    Hanya mendukung retouching dasar.

    import {QueenEngineLite, kQueenBeautyType, kQueenBeautyParams} from "aliyun-queen-engine"
    queenEngine = new QueenEngineLite();

    Edisi Pro

    Mendukung retouching dasar dan lanjutan, makeup, pembentukan wajah, pembentukan tubuh, filter, stiker, penulisan AR, dan penghapusan gambar.

    import {QueenEnginePro, kQueenBeautyType, kQueenBeautyParams, kQueenBeautyMakeupType, kQueenBeautyFaceShapeType, kQueenBeautyBodyShapeType, kQueenBeautyBlend} from "aliyun-queen-engine"
    queenEngine = new QueenEnginePro();

    Impor versi lengkap retouching

    Mendukung retouching dasar dan lanjutan, makeup, pembentukan wajah, pembentukan tubuh, filter, stiker, penulisan AR, penghapusan gambar, serta Animoji.

    import {QueenEngineFull, kQueenBeautyType, kQueenBeautyParams, kQueenBeautyMakeupType, kQueenBeautyFaceShapeType, kQueenBeautyBodyShapeType, kQueenBeautyBlend} from "aliyun-queen-engine"
    queenEngine = new QueenEngineFull();

    Impor versi Worker retouching

    Memungkinkan Anda menentukan kQueenVersion untuk mengimpor Lite, Advanced, Pro, atau Full Edition selama proses inisialisasi.

    import {QueenEngineWorker, kQueenBeautyType, kQueenBeautyParams, kQueenBeautyMakeupType, kQueenBeautyFaceShapeType, kQueenBeautyBodyShapeType, kQueenBeautyBlend, kQueenVersion} from "aliyun-queen-engine"
    queenEngine = new QueenEngineWorker(kQueenVersion.Pro);

Impor file JavaScript

Tambahkan awalan QueenEngine untuk menggunakan fitur yang sesuai, seperti queenEngine.setQueenBeautyParams(QueenEngine.kQueenBeautyParams.Wrinkles, 0.9);.

<!-- Lite -->
<script src="https://g.alicdn.com/apsara-media-box/imp-web-queen-wasm/6.3.14/dist/js/aliyun-queen-engine-lite.js"></script>
<!-- Advanced -->
<script src="https://g.alicdn.com/apsara-media-box/imp-web-queen-wasm/6.3.14/dist/js/aliyun-queen-engine.js"></script>
<!-- Pro -->
<script src="https://g.alicdn.com/apsara-media-box/imp-web-queen-wasm/6.3.14/dist/js/aliyun-queen-engine-pro.js"></script>
<!-- Full -->
<script src="https://g.alicdn.com/apsara-media-box/imp-web-queen-wasm/6.3.14/dist/js/aliyun-queen-engine-full.js"></script>
<!-- Worker -->
<script src="https://g.alicdn.com/apsara-media-box/imp-web-queen-wasm/6.3.14/dist/js/aliyun-queen-engine-worker.js"></script>

Unduh paket SDK

Unduh paket Queen SDK dan ekstrak.

Penggunaan fitur

Inisialisasi

  1. Inisialisasi QueenEngine dengan pendaftaran lisensi.

    const sdkLicenseKey = ""; //queen sdk license key
    const queenEngine = new QueenEngine();
    //const queenEngine = new QueenEnginePro(); //Inisialisasi edisi Pro
    queenEngine.create({
      SdkLicenseKey: sdkLicenseKey,
      OnInit: function(result: Boolean){
          console.info("queen sdk diinisialisasi.", result)
      },
      Domain: '',//Nama domain untuk aplikasi percobaan, Anda dapat menggunakan domain root, seperti aliyun.com
      OnProgress: function(progress: Number){
          console.info("queen sdk memuat:", progress);
      }
    });
  2. Inisialisasi dengan canvas tertentu.

    Tipe canvasElement perlu ditentukan sebagai webgl2 atau dibiarkan kosong secara default.

    const canvasElement = document.getElementById("canvas");
    const queenEngine = new QueenEngine();
    queenEngine.create({
      SdkLicenseKey: sdkLicenseKey,
      OnInit: function(result: Boolean){
          console.info("queen sdk diinisialisasi.", result)  
      },
      Domain: '',//Nama domain untuk aplikasi percobaan, Anda dapat menggunakan domain root
      OnProgress: function(progress: Number){
          console.info("queen sdk memuat:", progress);
      },
      RenderCanvas: canvasElement
    });
  3. Inisialisasi dengan model inferensi tertentu.

    const queenEngine = new QueenEnginePro();
    queenEngine.create({
      SdkLicenseKey: sdkLicenseKey,
      OnInit: function(result: Boolean){
          console.info("queen sdk diinisialisasi.", result)     
      },
      Domain: '',//Nama domain untuk aplikasi percobaan, Anda dapat menggunakan domain root
      OnProgress: function(progress: Number){
          console.info("queen sdk memuat:", progress);
      },
      RenderCanvas: canvasElement//dapat dikosongkan
      SegmentModel: kQueenModelShapeType.Vertical,//Model gambar vertikal, jika tidak ada skenario bisnis penghapusan gambar, gunakan kQueenModelShapeType.None
      PoseModel: kQueenModelShapeType.None,//Jangan muat model pembentukan tubuh saat inisialisasi
      InferenceBackend: kBackendType.WebGL,//Gunakan backend WebGL untuk inferensi
    });
    Catatan
    • kQueenModelShapeType.None: Secara default, model penghapusan gambar tidak dimuat. Saat ingin menggunakan penghapusan gambar atau pembentukan tubuh, muat sesuai kebutuhan.

    • kQueenModelShapeType.Horizontal: Model horizontal dimuat selama inisialisasi mesin.

    • kQueenModelShapeType.Vertical: Model vertikal dimuat selama inisialisasi mesin.

    • kQueenModelShapeType.Both: Kedua model horizontal dan vertikal dimuat selama inisialisasi mesin.

    • Model gambar horizontal merujuk pada sumber input di mana lebar > tinggi.

    • Model gambar vertikal merujuk pada sumber input di mana tinggi > lebar.

    • kBackendType.WebGL: Gunakan backend inferensi WebGL.

    • kBackendType.WebGPU: Prioritaskan menggunakan backend inferensi WebGPU.

    • Pemuatan model mempengaruhi kecepatan pemuatan halaman.

  4. Integrasi Edisi Worker.

    import {QueenEngineWorker, kQueenBeautyType, kQueenBeautyParams, kQueenBeautyMakeupType, kQueenBeautyFaceShapeType, kQueenBeautyBlend} from "aliyun-queen-engine"
    const canvasElement = document.getElementById("canvas");
    queenEngine = new QueenEngineWorker(kQueenVersion.Pro);
    queenEngine.init(sdkLicenseKey, function(){
     //Callback setelah inisialisasi selesai
    }, function(progress){
     //progress: bilah kemajuan pemuatan
    }, canvasElement);

Konfigurasikan parameter retouching

  1. Konfigurasikan retouching wajah dasar.

    // Aktifkan retouching dasar
    queenEngine.setQueenBeautyType(kQueenBeautyType.SkinBuffing, true);
    // Atur tingkat penghalusan kulit
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.SkinBuffing, 0.7);
    // Atur tingkat ketajaman gambar
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Sharpen, 0.5);
    // Aktifkan pemutihan kulit
    queenEngine.setQueenBeautyType(kQueenBeautyType.SkinWhiting, true);
    // Atur tingkat pemutihan kulit
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Whitening, 0.6);
    // Atur tingkat pipi merona
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.SkinRed, 0.2);
  2. Konfigurasikan retouching wajah lanjutan.

    //Retouching wajah lanjutan
    queenEngine.setQueenBeautyType(kQueenBeautyType.FaceBuffing, true);
    // Atur tingkat penghilangan kantung mata
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Pouch, 0.9);
    // Atur tingkat penghilangan kerutan nasolabial
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.NasolabialFolds, 0.9);
    // Atur tingkat pemutihan gigi
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.WhiteTeeth, 0.9);
    // Atur tingkat lipstik
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Lipstick, 0.2);
    // Atur tingkat blush on
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Blush, 0.1);
    // Atur hue lipstik
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.LipstickColorParam, 0.1);
    // Atur saturasi lipstik
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.LipstickGlossParam, 0.1);
    // Atur kecerahan lipstik
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.LipstickBrightnessParam, 0.1);
    // Atur tingkat pencerahan mata
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.BrightenEye, 0.9);
    // Atur tingkat pipi merona
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.SkinRed, 0.2);
    // Atur tingkat penghilangan kerutan
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Wrinkles, 0.9);
    // Atur tingkat pencerahan kulit
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.BrightenFace, 0.3);
  3. Konfigurasikan pembentukan wajah.

    // Aktifkan pembentukan wajah. Parameter pembentukan wajah ditunjukkan oleh kQueenBeautyFaceShapeType
    queenEngine.setQueenBeautyType(kQueenBeautyType.FaceShape, true);
    // Atur tulang pipi. Nilai valid: [0,1]. Nilai default: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.CutCheek, 0.6);
    // Atur penyempitan tulang pipi. Nilai valid: [0,1]. Nilai default: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.CutFace, 0.7);
    // Atur penyusutan wajah. Nilai valid: [0,1]. Nilai default: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.ThinFace, 0.8);
    // Atur panjang wajah. Nilai valid: [0,1]. Nilai default: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.LowerJaw, 0.8);
    // Atur pemanjangan dagu. Nilai valid: [-1,1]. Nilai default: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.HigherJaw, 0.6); 
  4. Konfigurasikan sumber daya riasan.

    • Gunakan sumber daya riasan bawaan dari SDK.

      Saat menggunakan sumber daya bawaan, SDK mengunduh materi retouching dari Alibaba Cloud CDN.

      //Aktifkan makeup
      queenEngine.setQueenBeautyType(kQueenBeautyType.Makeup, true);
      //Atur efek alis
      await queenEngine.setMakeupEyeBrow(Assets.kResMakeupEyeBrow.BiaoZhunMei, 0.6);
      //Atur efek bulu mata
      await queenEngine.setMackupEyeLash(Assets.kResMakeupEyeLash.ChenJing, 0.6);
      //Atur efek bayangan mata
      await queenEngine.setMakeupEyeShadow(Assets.kResMakeupEyeShadow.DaDiSe, 0.5);
      //Atur efek eyeliner
      await queenEngine.setMakeupEyeLiner(Assets.kResMakeupEyeLiner.DaYan, 0.4);
      //Atur efek lensa kontak berwarna
      await queenEngine.setMakeupEyeBall(Assets.kResMakeupEyeBall.BiMuYu, 0.5);
      //Atur efek lipstik
      await queenEngine.setMakeupMouth(Assets.kResMakeupMouth.AnYeZi, 0.3);
      //Atur efek blush on
      await queenEngine.setMakeupBlush(Assets.kResMakeupBlush.BlushWuGu, 0.2);
      //Atur efek highlight
      await queenEngine.setMakeupHighlight(Assets.kResMakeupHighLight.Highlight, 0.1);
      //Hapus efek makeup - Hapus lensa kontak berwarna
      queenEngine.removeMakeupWithType(kQueenBeautyMakeupType.Eyeball);
      //Untuk informasi lebih lanjut, lihat file antarmuka QueenEngin.d.ts
    • Gunakan sumber daya riasan lokal Anda.

      const makeupPackage = "./mouth.zip"
      const makeupName = "1.2.3.png";
      const band = kQueenBeautyBlend.LabMix;
      // Aktifkan makeup. Parameter makeup ditunjukkan oleh kQueenBeautyMakeupType
      queenEngine.setQueenBeautyType(kQueenBeautyType.Makeup, true);
      // Atur transparansi efek lipstik
      queenEngine.setMakeupAlphaWithType(kQueenBeautyMakeupType.Mouth, true, 0.6);
      // Atur efek lipstik
      queenEngine.setMakeupWithPackage(kQueenBeautyMakeupType.Mouth, makeupPackage, makeupName, band).then(() => {
      
      });
  5. Atur filter.

    • Gunakan filter bawaan.

      await queenEngine.setLutByType(Assets.kResLut.M1, 0.5);
    • Gunakan filter kustom.

      const lutImageUrl = "./lut.png";
      queenEngine.setLutImageUrl(lutImageUrl).then(function () {
        queenEngine.setQueenBeautyType(kQueenBeautyType.LUT, true);
        queenEngine.setQueenBeautyParams(kQueenBeautyParams.LUT, 0.5);
      });
  6. Konfigurasikan stiker.

    1. Gunakan stiker bawaan.

      queenEngine.addMaterialWithType(Assets.kResSticker.ILoveChina);
      //atau
      queenEngine.addMaterialWithIndex(0);
      //Atur beberapa stiker secara bersamaan
      queenEngine.addMaterialWithIndexs([0,1]);
    2. Gunakan stiker kustom.

      const stickerZip = "./sticker.zip";
      queenEngine.addMaterialWithUrl(stickerZip).then(() => {
       });
  7. Konfigurasikan pengaturan matting citra.

    const backgroundUrl = "./bg.png";
    queenEngine.setSegmentBackgroundUrl(backgroundUrl).then(() => {
     });
  8. Konfigurasikan chroma keying layar hijau.

    const backgroundUrl = "./bg.png";
    const isBlue = false;//Apakah menggunakan layar biru
    queenEngine.setGreenScreenWithUrl(isBlue, backgroundUrl).then(() => {
     });
  9. Konfigurasikan pemrosesan latar belakang.

    //Kaburkan latar belakang
    queenEngine.enableBokehBackground(true);
    //Latar belakang transparan
    queenEngine.enableTransparentBackground(true);

Rendering retouching

  1. Render aliran kamera.

     queenEngine.openCameraAndRender().then((stream=>{
     const video = document.querySelector('video');
     video.srcObject = stream;
     video.play();
     })) 
  2. Terapkan media yang dirender ke kanvas.

    Kanvas adalah yang ditentukan saat mesin diinisialisasi.

     const sourceVideo = document.querySelector('video');
     queenEngine.renderMediaObjectToRenderCanvas(sourceVideo, sourceVideo.clientWidth, sourceVideo.clientHeight);
  3. Render aliran video.

     navigator.mediaDevices.getUserMedia(constraints)
     .then(mediaStream => {
     let renderMediaStream = queenEngine.renderMediaStream(mediaStream);
     const video = document.querySelector('video');
     video.srcObject = renderMediaStream;
     video.play();
     });
  4. Render gambar.

    fetch(URL Gambar)
    .then(buffer => buffer.blob())
    .then(createImageBitmap)
    .then(img => {
     queenEngine.renderWithMediaObject(img, img.width, img.height, function(imageBufferData, imageWidth, imageHeight){
     const canvas = document.getElementById('playCanvas'); //canvas 
     const ctx = canvas.getContext("2d");
     const imageBuffer = new Uint8ClampedArray(imageBufferData);
     const imageData = new ImageData(imageBuffer, imageWidth, imageHeight);
     ctx.clearRect(0, 0, imageWidth, imageHeight);
     ctx.putImageData(imageData, 0, 0);
    });
    });
  5. Render tekstur.

    const canvas = document.getElementById("sourceCanvas");
    let outTexture = queenEngine.renderMediaObjectToTexture(canvas, canvas.width, canvas.height);
    queenEngine.drawOutTexture(outTexture);//Tekstur akan digambar pada kanvas yang dilewatkan selama inisialisasi
  6. Render input tekstur.

    let inputTexture = queenEngine.generateTextureId();
    queenEngine.updateTexture(inputTexture, imageData);
    let outTexture = queenEngine.renderTextureId(inputTexture, width, height);
    queenEngine.drawOutTexture(outTexture)//Tekstur akan digambar pada kanvas yang dilewatkan selama inisialisasi
  7. Render aliran pipeline.

    const videoTrack = stream.getVideoTracks()[0];
    const processor = new MediaStreamTrackProcessor({ track: videoTrack });
    const readFrameStream = processor.readable;
    const generator = new MediaStreamTrackGenerator({ kind: 'video' });
    let writeFrameStream = generator.writable;
    readFrameStream.pipeThrough(queenEngine.getTransformStream()).pipeTo(writeFrameStream);

Referensi API

Lihat Metode.