すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo Live:Web 用 Queen SDK の統合

最終更新日:Nov 05, 2025

Queen Web SDK は、基本的な顔の美顔、高度な顔の美顔、メイク、顔のシェイピング、ステッカー、ボディシェイピング、画像マット、フィルター、AR ライティング、アニ文字などの機能をサポートする美顔コンポーネントです。このトピックでは、Web 用 Queen SDK の統合方法について説明します。

準備

Queen SDK の統合

NPM の使用 (推奨)

  1. Queen SDK をインストールします。

    npm install aliyun-queen-engine  //最新バージョンは 6.3.14 です

  2. レタッチのインポート

    デフォルトの美顔バージョンをインポートする

    基本的な美顔と高度な美顔、メイク、シェイピング、フィルター、ステッカーをサポートします。

    説明

    パッケージサイズとロードするリソースファイルはエディションによって異なります。通常、パッケージサイズが大きいほど、より包括的な機能が提供されます。ニーズに最も適したエディションを選択してください。

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

    Lite エディション

    基本的な美顔のみをサポートします。

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

    Pro エディション

    基本的な美顔と高度な美顔、メイク、顔のシェイピング、ボディシェイピング、フィルター、ステッカー、AR ライティング、画像マットをサポートします。

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

    フルバージョンの美顔をインポートする

    基本的な美顔と高度な美顔、メイク、顔のシェイピング、ボディシェイピング、フィルター、ステッカー、AR ライティング、画像マット、アニ文字をサポートします。

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

    Worker バージョンの美顔をインポートする

    初期化中に kQueenVersion を指定して、Lite、Advanced、Pro、または Full エディションをインポートできます。

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

JavaScript ファイルのインポート

対応する機能を使用するには、QueenEngine プレフィックスを追加します。例: 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>

SDK パッケージのダウンロード

Queen SDK パッケージをダウンロードして解凍します。

機能の使用

初期化

  1. ライセンス登録で QueenEngine を初期化します。

    const sdkLicenseKey = ""; //queen sdk ライセンスキー
    const queenEngine = new QueenEngine();
    //const queenEngine = new QueenEnginePro(); //Pro エディションの初期化
    queenEngine.create({
      SdkLicenseKey: sdkLicenseKey,
      OnInit: function(result: Boolean){
          console.info("queen sdk initialized.", result)
      },
      Domain: '',//トライアルアプリケーションのドメイン名。aliyun.com などのルートドメインを使用できます
      OnProgress: function(progress: Number){
          console.info("queen sdk loading:", progress);
      }
    });
  2. 指定した canvas で初期化します。

    canvasElement typewebgl2 として指定するか、デフォルトで空のままにする必要があります。

    const canvasElement = document.getElementById("canvas");
    const queenEngine = new QueenEngine();
    queenEngine.create({
      SdkLicenseKey: sdkLicenseKey,
      OnInit: function(result: Boolean){
          console.info("queen sdk initialized.", result)  
      },
      Domain: '',//トライアルアプリケーションのドメイン名。ルートドメインを使用できます
      OnProgress: function(progress: Number){
          console.info("queen sdk loading:", progress);
      },
      RenderCanvas: canvasElement
    });
  3. 指定した推論モデルで初期化します。

    const queenEngine = new QueenEnginePro();
    queenEngine.create({
      SdkLicenseKey: sdkLicenseKey,
      OnInit: function(result: Boolean){
          console.info("queen sdk initialized.", result)     
      },
      Domain: '',//トライアルアプリケーションのドメイン名。ルートドメインを使用できます
      OnProgress: function(progress: Number){
          console.info("queen sdk loading:", progress);
      },
      RenderCanvas: canvasElement//空にすることができます
      SegmentModel: kQueenModelShapeType.Vertical,//垂直画像モデル。画像マットのビジネスシナリオがない場合は、kQueenModelShapeType.None を渡します
      PoseModel: kQueenModelShapeType.None,//初期化中にボディシェイピングモデルをロードしません
      InferenceBackend: kBackendType.WebGL,//推論に WebGL バックエンドを使用します
    });
    説明
    • kQueenModelShapeType.None: デフォルトでは、画像マットモデルはロードされません。画像マットまたはボディシェイピングを使用する場合は、オンデマンドでロードします。

    • kQueenModelShapeType.Horizontal: 水平モデルはエンジン初期化中にロードされます。

    • kQueenModelShapeType.Vertical: 垂直モデルはエンジン初期化中にロードされます。

    • kQueenModelShapeType.Both: 水平モデルと垂直モデルの両方がエンジン初期化中にロードされます。

    • 水平画像モデルは、入力ソースの width > height を指します。

    • 垂直画像モデルは、入力ソースの height > width を指します。

    • kBackendType.WebGL: WebGL 推論バックエンドを使用します。

    • kBackendType.WebGPU: WebGPU 推論バックエンドを優先的に使用します。

    • モデルの読み込みはページの読み込み速度に影響します。

  4. 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(){
     //初期化完了コールバック
    }, function(progress){
     //progress: 読み込み進行状況バー
    }, canvasElement);

美顔パラメーターの設定

  1. 基本的な顔の美顔を設定します。

    // 基本的な美顔を有効にする
    queenEngine.setQueenBeautyType(kQueenBeautyType.SkinBuffing, true);
    // 肌の滑らかさのレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.SkinBuffing, 0.7);
    // 画像のシャープネスのレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Sharpen, 0.5);
    // 美白を有効にする
    queenEngine.setQueenBeautyType(kQueenBeautyType.SkinWhiting, true);
    // 美白のレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Whitening, 0.6);
    // 血色のレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.SkinRed, 0.2);
  2. 高度な顔の美顔を設定します。

    //高度な顔の美顔
    queenEngine.setQueenBeautyType(kQueenBeautyType.FaceBuffing, true);
    // 目の下のクマ除去のレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Pouch, 0.9);
    // ほうれい線除去のレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.NasolabialFolds, 0.9);
    // 歯のホワイトニングのレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.WhiteTeeth, 0.9);
    // 口紅のレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Lipstick, 0.2);
    // チークのレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Blush, 0.1);
    // 口紅の色相を設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.LipstickColorParam, 0.1);
    // 口紅の彩度を設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.LipstickGlossParam, 0.1);
    // 口紅の輝度を設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.LipstickBrightnessParam, 0.1);
    // 目の輝きのレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.BrightenEye, 0.9);
    // 血色のレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.SkinRed, 0.2);
    // しわ除去のレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.Wrinkles, 0.9);
    // 肌の明るさのレベルを設定する
    queenEngine.setQueenBeautyParams(kQueenBeautyParams.BrightenFace, 0.3);
  3. 顔のシェイピングを設定します。

    // 顔のシェイピングを有効にします。顔のシェイピングパラメーターは kQueenBeautyFaceShapeType で示されます
    queenEngine.setQueenBeautyType(kQueenBeautyType.FaceShape, true);
    // 頬骨を設定します。有効な値: [0,1]。デフォルト値: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.CutCheek, 0.6);
    // 頬骨の縮小を設定します。有効な値: [0,1]。デフォルト値: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.CutFace, 0.7);
    // 顔のスリム化を設定します。有効な値: [0,1]。デフォルト値: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.ThinFace, 0.8);
    // 顔の長さを設定します。有効な値: [0,1]。デフォルト値: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.LowerJaw, 0.8);
    // あごの長さを設定します。有効な値: [-1,1]。デフォルト値: 0
    queenEngine.setFaceShape(kQueenBeautyFaceShapeType.HigherJaw, 0.6); 
  4. メイクアップリソースを設定します。

    • SDK の組み込みメイクアップリソースを使用します。

      組み込みリソースを使用すると、SDK は Alibaba Cloud CDN から美顔素材をダウンロードします。

      //メイクを有効にする
      queenEngine.setQueenBeautyType(kQueenBeautyType.Makeup, true);
      //眉毛の効果を設定する
      await queenEngine.setMakeupEyeBrow(Assets.kResMakeupEyeBrow.BiaoZhunMei, 0.6);
      //まつげの効果を設定する
      await queenEngine.setMackupEyeLash(Assets.kResMakeupEyeLash.ChenJing, 0.6);
      //アイシャドウの効果を設定する
      await queenEngine.setMakeupEyeShadow(Assets.kResMakeupEyeShadow.DaDiSe, 0.5);
      //アイライナーの効果を設定する
      await queenEngine.setMakeupEyeLiner(Assets.kResMakeupEyeLiner.DaYan, 0.4);
      //カラーコンタクトの効果を設定する
      await queenEngine.setMakeupEyeBall(Assets.kResMakeupEyeBall.BiMuYu, 0.5);
      //口紅の効果を設定する
      await queenEngine.setMakeupMouth(Assets.kResMakeupMouth.AnYeZi, 0.3);
      //チークの効果を設定する
      await queenEngine.setMakeupBlush(Assets.kResMakeupBlush.BlushWuGu, 0.2);
      //ハイライトの効果を設定する
      await queenEngine.setMakeupHighlight(Assets.kResMakeupHighLight.Highlight, 0.1);
      //メイク効果を削除 - カラーコンタクトを削除
      queenEngine.removeMakeupWithType(kQueenBeautyMakeupType.Eyeball);
      //詳細については、QueenEngin.d.ts インターフェイスファイルをご参照ください。
    • ローカルのメイクアップリソースを使用します。

      const makeupPackage = "./mouth.zip"
      const makeupName = "1.2.3.png";
      const band = kQueenBeautyBlend.LabMix;
      // メイクを有効にします。メイクパラメーターは kQueenBeautyMakeupType で示されます
      queenEngine.setQueenBeautyType(kQueenBeautyType.Makeup, true);
      // 口紅の効果の透明度を設定する
      queenEngine.setMakeupAlphaWithType(kQueenBeautyMakeupType.Mouth, true, 0.6);
      // 口紅の効果を設定する
      queenEngine.setMakeupWithPackage(kQueenBeautyMakeupType.Mouth, makeupPackage, makeupName, band).then(() => {
      
      });
  5. フィルターを設定します。

    • 組み込みフィルターを使用します。

      await queenEngine.setLutByType(Assets.kResLut.M1, 0.5);
    • カスタムフィルターを使用します。

      const lutImageUrl = "./lut.png";
      queenEngine.setLutImageUrl(lutImageUrl).then(function () {
        queenEngine.setQueenBeautyType(kQueenBeautyType.LUT, true);
        queenEngine.setQueenBeautyParams(kQueenBeautyParams.LUT, 0.5);
      });
  6. ステッカーを設定します。

    1. 組み込みステッカーを使用します。

      queenEngine.addMaterialWithType(Assets.kResSticker.ILoveChina);
      //または
      queenEngine.addMaterialWithIndex(0);
      //複数のステッカーを同時に設定する
      queenEngine.addMaterialWithIndexs([0,1]);
    2. カスタムステッカーを使用します。

      const stickerZip = "./sticker.zip";
      queenEngine.addMaterialWithUrl(stickerZip).then(() => {
       });
  7. 画像マットを設定します。

    const backgroundUrl = "./bg.png";
    queenEngine.setSegmentBackgroundUrl(backgroundUrl).then(() => {
     });
  8. グリーンスクリーンクロマキーを設定します。

    const backgroundUrl = "./bg.png";
    const isBlue = false;//ブルースクリーンを使用するかどうか
    queenEngine.setGreenScreenWithUrl(isBlue, backgroundUrl).then(() => {
     });
  9. バックグラウンド処理を設定します。

    //バックグラウンドのぼかし
    queenEngine.enableBokehBackground(true);
    //透明なバックグラウンド
    queenEngine.enableTransparentBackground(true);

美顔レンダリング

  1. カメラストリームをレンダリングします。

     queenEngine.openCameraAndRender().then((stream=>{
     const video = document.querySelector('video');
     video.srcObject = stream;
     video.play();
     })) 
  2. レンダリングされたメディアを canvas に適用します。

    canvas は、エンジンの初期化時に指定されたものです。

     const sourceVideo = document.querySelector('video');
     queenEngine.renderMediaObjectToRenderCanvas(sourceVideo, sourceVideo.clientWidth, sourceVideo.clientHeight);
  3. ビデオストリームをレンダリングします。

     navigator.mediaDevices.getUserMedia(constraints)
     .then(mediaStream => {
     let renderMediaStream = queenEngine.renderMediaStream(mediaStream);
     const video = document.querySelector('video');
     video.srcObject = renderMediaStream;
     video.play();
     });
  4. 画像をレンダリングします。

    fetch(Image URL)
    .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. テクスチャをレンダリングします。

    const canvas = document.getElementById("sourceCanvas");
    let outTexture = queenEngine.renderMediaObjectToTexture(canvas, canvas.width, canvas.height);
    queenEngine.drawOutTexture(outTexture);//テクスチャは初期化時に渡された canvas に描画されます
  6. テクスチャ入力をレンダリングします。

    let inputTexture = queenEngine.generateTextureId();
    queenEngine.updateTexture(inputTexture, imageData);
    let outTexture = queenEngine.renderTextureId(inputTexture, width, height);
    queenEngine.drawOutTexture(outTexture)//テクスチャは初期化時に渡された canvas に描画されます
  7. パイプラインストリームをレンダリングします。

    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);

API リファレンス

メソッド」をご参照ください。