Skip to main content
SDK 2.0.0. Engancha Facebetter en el callback de preprocess de vídeo personalizado de un SDK de terceros: procesa fotogramas en el hilo OpenGL de ese SDK (o en el callback de pixel-buffer) y luego devuelve el resultado. Comparte la misma API Objective-C que iOS · Integración con terceros; las diferencias son sobre todo de runtime (OpenGL, App Sandbox, vinculación por nombre de proceso). Reglas completas de textura: Implementar belleza · Textura externa.

Contrato compartido

El preprocess personalizado de TRTC suele usar texturas OpenGL; Agora / LiveKit entregan más a menudo CVPixelBuffer. No mezcles ambos modos en un mismo motor.

Compartido: procesar textura

Compartido: procesar CVPixelBuffer (esquema NV12)

Usa externalContext = NO para el camino de pixel-buffer. Credenciales: Suscripción, Autenticación y licencia. Vincula el nombre del proceso en la Consola para herramientas CLI sin Bundle ID.

TRTC (Tencent)

Enganche: setLocalVideoProcessDelegete:pixelFormat:bufferType: (ortografía oficial Delegete). TRTCVideoPixelFormat_Texture_2D + TRTCVideoBufferType_Texture.
Pon el motor a nil tras limpiar el delegate o salir de la sala. Consulta la documentación de belleza de terceros de TRTC de Tencent para los detalles actuales.

Agora

Enganche: AgoraRtcEngineKit.setVideoFrameDelegate: (Video SDK 4.x). En macOS, los fotogramas capturados también suelen ser CVPixelBuffer.
Cómo escribes un CVPixelBuffer procesado de vuelta en el fotograma de Agora varía entre versiones mayores. Facebetter mantiene la salida en el mismo formato que la entrada; sigue la documentación de Agora para inyectarla en AgoraOutputVideoFrame.
Llama a setVideoFrameDelegate:nil y pon beautyEngine a nil antes del desmontaje.

LiveKit

Implementa Swift VideoProcessor, procesa CVPixelBuffer en process(frame:) y pasa processor: al crear el track de cámara (también se admite en macOS).
Consulta BackgroundBlurVideoProcessor (macOS 12+) para un ejemplo oficial. Los tracks de compartir pantalla pueden usar el mismo patrón de procesador (API según tu versión de LiveKit Swift).

Solución de problemas

Relacionado