공통 계약
Apple 플랫폼에서 TRTC 커스텀 전처리는 보통 OpenGL 텍스처를 사용합니다. Agora / LiveKit는 **
CVPixelBuffer**를 더 자주 제공합니다. 둘 다 동작합니다. 한 엔진 인스턴스에서 두 모드를 섞지 마세요.
공유: 텍스처 처리
공유: CVPixelBuffer 처리 (NV12 스케치)
Agora / LiveKit 콜백은 종종 NV12를 사용합니다.CVPixelBuffer에서 평면 포인터와 stride를 가져옵니다. 벤더 프레임에 다시 쓰는 방식은 SDK 버전에 따라 다릅니다.
externalContext = NO로 엔진을 만듭니다. 자격 증명: 구독, 인증 및 라이선스.
TRTC (Tencent)
훅:setLocalVideoProcessDelegete:pixelFormat:bufferType:(공식 철자 Delegete). **TRTCVideoPixelFormat_Texture_2D**와 **TRTCVideoBufferType_Texture**를 사용하세요.
TRTCVideoFrameDelegate를 구현합니다. onGLContextCreated에서 엔진을 만들고, onProcessVideoFrame:dstFrame:에서 dstFrame.textureId를 설정하고, onGLContextDestory에서 엔진을 nil로 둡니다.
FacebetterPlugin.processTexture)을 사용하세요.
Agora
훅:AgoraRtcEngineKit.setVideoFrameDelegate:(Video SDK 4.x). iOS에서 캡처 프레임은 보통 CVPixelBuffer(textureBuf / 형식 12)이며 Android 스타일 GL_TEXTURE_2D id가 아닙니다.
다음이 필요합니다.
getVideoFrameProcessMode에서 ReadWrite를 반환onCapture:sourceType:(또는 구onCaptureVideoFrame)에서CVPixelBuffer를 가져옴createWithNV12:/createWithBGRA:로 넣고, 결과를AgoraOutputVideoFrame에 다시 씀
setVideoFrameDelegate:nil을 호출하고 beautyEngine을 nil로 둡니다.
LiveKit
훅: SwiftVideoProcessor를 구현하고 process(frame:)에서 변환한 뒤 새 프레임을 반환합니다(nil이면 드롭). 카메라 트랙을 만들 때 processor:를 전달하거나 나중에 track.processor를 설정합니다.
BackgroundBlurVideoProcessor로 제공됩니다. 커스텀 capturer는 프레임이 인코더에 들어가기 전에 Facebetter를 실행할 수 있습니다.

