IVS Broadcast SDK で BytePlus を使用する - Amazon IVS

IVS Broadcast SDK で BytePlus を使用する

このドキュメントでは、IVS Broadcast SDK で BytePlus Effects SDK を使用する方法について説明します。

Android

BytePlus Effects SDK のインストールと設定

BytePlus Effects SDK のインストール、初期化、設定方法の詳細については、BytePlus「Android アクセスガイド」を参照してください。

カスタム画像ソースを設定する

SDK を初期化した後、フィルター効果を適用した処理済みのカメラフレームをカスタム画像入力ソースにフィードします。そのためには、DeviceDiscovery オブジェクトのインスタンスを作成し、カスタム画像ソースを作成します。カメラのカスタムコントロールにカスタム画像入力ソースを使用する場合、Broadcast SDK はカメラの管理をしなくなることに注意してください。代わりに、アプリケーションはカメラのライフサイクルを正しく処理する責任があります。

var deviceDiscovery = DeviceDiscovery(applicationContext) var customSource = deviceDiscovery.createImageInputSource( BroadcastConfiguration.Vec2( 720F, 1280F )) var surface: Surface = customSource.inputSurface var filterStream = ImageLocalStageStream(customSource)

出力をビットマップに変換し、カスタム画像入力ソースにフィードする

BytePlus Effects SDK からフィルター効果が適用されたカメラフレームを IVS Broadcast SDK に直接転送できるようにするには、BytePlus Effects SDK のテクスチャ出力をビットマップに変換します。画像が処理されると、SDK によって onDrawFrame() メソッドが呼び出されます。onDrawFrame() メソッドは Android の GLSurfaceView.Renderer インターフェイスのパブリックメソッドです。BytePlus が提供する Android サンプルアプリケーションでは、このメソッドはカメラフレームごとに呼び出され、テクスチャを出力します。同時に、このテクスチャをビットマップに変換してカスタム画像入力ソースにフィードするロジックを onDrawFrame() メソッドに追加できます。次のサンプルコードに示すように、BytePlus SDK が提供する transferTextureToBitmap メソッドを使用してこの変換を行います。このメソッドは、次のサンプルコードに示すように、BytePlus Effects SDK から com.bytedance.labcv.core.util.ImageUtil ライブラリで提供されます。次に、結果のビットマップを Surface のキャンバスに書き込むことで、CustomImageSource の基盤 Android Surface にレンダリングできます。onDrawFrame() を何度も連続して呼び出すと、ビットマップのシーケンスが生成され、組み合わせると動画のストリームが作成されます。

import com.bytedance.labcv.core.util.ImageUtil; ... protected ImageUtil imageUtility; ... @Override public void onDrawFrame(GL10 gl10) { ... // Convert BytePlus output to a Bitmap Bitmap outputBt = imageUtility.transferTextureToBitmap(output.getTexture(),ByteEffect Constants.TextureFormat.Texture2D,output.getWidth(), output.getHeight()); canvas = surface.lockCanvas(null); canvas.drawBitmap(outputBt, 0f, 0f, null); surface.unlockCanvasAndPost(canvas);