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.RendereronDrawFrame()
メソッドに追加できます。次のサンプルコードに示すように、BytePlus SDK が提供する transferTextureToBitmap
メソッドを使用してこの変換を行います。このメソッドは、次のサンプルコードに示すように、BytePlus Effects SDK から com.bytedance.labcv.core.util.ImageUtilCustomImageSource
の基盤 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);