Skip to main content
SDK 2.0.0。デスクトップはモバイルと異なります。TRTC / Agora などは Windows 上では多くが CPU バッファ(I420 / YUV) であり、OpenGL の textureId はほとんど渡しません。Facebetter を相手のカスタム前処理コールバックに接続し、ImageFrame::CreateWithI420(または NV12)で ProcessImage を実行し、プレーンを相手のフレームへ書き戻します。 Linux と同一の C++ API を共有します。基本的な使い方: 美顔の実装。ルーム参加 / 配信はベンダーの公式ドキュメントに従ってください。

共通の契約

共通: I420 を処理してプレーンへ書き戻す

エンジン作成:
認証情報: サブスクリプション認証とライセンス

TRTC(Tencent Cloud)

Windows / デスクトップ C++: カスタム前処理は Buffer であり、Texture ではありません。新しい SDK では enableLocalVideoCustomProcess + setLocalVideoCustomProcessCallback を使います(旧名 setLocalVideoProcessCallback は非推奨。統合しているバージョンに従ってください)。 ピクセル形式は I420、バッファタイプは Buffer を選びます。onProcessVideoFramesrcFrame を処理し、dstFrame に書き込みます(またはドキュメントどおり dstFrame をその場で変更します)。
Tencent Cloud のドキュメントでは、モバイルは Texture を使える一方、PC は Buffer のみです。Windows では Android の Texture_2D 経路で接続しないでください。

Agora

フック: IRtcEngine::registerVideoFrameObserver(C++ Video SDK 4.x)。Windows ではデフォルトで YUV420 / I420 を取得できます。
  1. getVideoFrameProcessModePROCESS_MODE_READ_WRITE を返す
  2. onCaptureVideoFrameyBuffer / uBuffer / vBufferProcessI420InPlace に渡す
  3. true を返し、SDK がそのフレームを使い続けるようにする
IRtcEngine を破棄する前に observer を解除し、engine.reset() してください。

LiveKit

デスクトップ側の一般的なやり方は、カスタム動画ソースです。自分でキャプチャ / 処理したフレームを LiveKit(C++ / 自前ブリッジ)へ送ります。モバイルのような VideoProcessor テクスチャコールバックではありません。 推奨パイプライン:
  1. カメラ / DXGI / V4L2 などからフレームを取得する
  2. CreateWithI420 / CreateWithRGBAProcessImage
  3. 出力を LiveKit / WebRTC が受け取れるフレームに包み、VideoSource / RTCVideoSource へ入れる
具体的なクラス名(RtcVideoSourceVideoTrack ファクトリなど)は LiveKit クライアントのバージョンで変わります。LiveKit クライアントドキュメント のカスタムトラック説明を参照してください。Facebetter が担当するのはステップ 2 のみです。

トラブルシューティング

関連ドキュメント