Skip to main content
SDK 2.0.0. El escritorio difiere del móvil: TRTC / Agora en Windows suelen entregar buffers de CPU (I420 / YUV), no un textureId OpenGL. Engancha Facebetter en el callback de preprocess personalizado del vendor, ejecuta ImageFrame::CreateWithI420 (o NV12) → ProcessImage y luego escribe los planos de vuelta. Comparte la misma API C++ que Linux. Lo básico: Implementar belleza. Unirse a la sala y publicar pertenecen a la documentación del vendor.

Contrato compartido

Compartido: procesar I420 y escribir planos de vuelta

Crea el motor:
Credenciales: Suscripción, Autenticación y licencia.

TRTC (Tencent)

Windows / escritorio C++: el preprocess personalizado usa Buffer, no Texture. Los SDK más nuevos usan enableLocalVideoCustomProcess + setLocalVideoCustomProcessCallback (el antiguo setLocalVideoProcessCallback está deprecado: revisa tu versión). Usa formato de píxel I420 y tipo de buffer Buffer. En onProcessVideoFrame, procesa srcFrame y rellena dstFrame.
Documentación de Tencent: el móvil puede usar Texture; PC solo admite Buffer. No sigas el camino Texture_2D de Android en Windows.

Agora

Enganche: IRtcEngine::registerVideoFrameObserver (C++ Video SDK 4.x). Windows suele entregar YUV420 / I420.
  1. Devuelve PROCESS_MODE_READ_WRITE desde getVideoFrameProcessMode
  2. En onCaptureVideoFrame, ejecuta ProcessI420InPlace en yBuffer / uBuffer / vBuffer
  3. Devuelve true para que el SDK conserve el fotograma
Anula el registro antes de destruir IRtcEngine y luego engine.reset().

LiveKit

En escritorio, el patrón habitual es una fuente de vídeo personalizada: capturas / procesas tú mismo y luego empujas fotogramas a LiveKit (cliente C++ o tu puente), no el callback de textura VideoProcessor del móvil. Pipeline recomendado:
  1. Captura fotogramas (cámara / DXGI / etc.)
  2. CreateWithI420 / CreateWithRGBAProcessImage
  3. Envuelve la salida como fotograma LiveKit / WebRTC y empújala a VideoSource / RTCVideoSource
Los nombres de tipo exactos varían según la versión del cliente LiveKit; consulta LiveKit docs para tracks personalizados. Facebetter solo cubre el paso 2.

Solución de problemas

Relacionado