Skip to main content
SDK 2.0.0. 데스크톱은 모바일과 다릅니다. Windows의 TRTC / Agora는 보통 OpenGL textureId가 아니라 **CPU 버퍼(I420 / YUV)**를 제공합니다. 벤더의 커스텀 전처리 콜백에 Facebetter를 걸고, ImageFrame::CreateWithI420(또는 NV12) → ProcessImage를 실행한 뒤 평면을 다시 씁니다. Linux와 동일한 C++ API를 공유합니다. 기본: 뷰티 효과 적용. 방 입장 / 게시는 벤더 문서에 따릅니다.

공통 계약

공유: I420을 처리하고 평면을 다시 쓰기

엔진 생성:
자격 증명: 구독, 인증 및 라이선스.

TRTC (Tencent)

Windows / 데스크톱 C++: 커스텀 전처리는 Texture가 아니라 Buffer를 사용합니다. 최신 SDK는 enableLocalVideoCustomProcess + setLocalVideoCustomProcessCallback을 사용합니다(구 setLocalVideoProcessCallback은 폐기됨 — 버전을 확인하세요). 픽셀 형식 I420과 버퍼 유형 Buffer를 사용하세요. onProcessVideoFrame에서 srcFrame을 처리하고 dstFrame을 채웁니다.
Tencent 문서: 모바일은 Texture를 사용할 수 있습니다. PC는 Buffer만 지원합니다. Windows에서 Android Texture_2D 경로를 따르지 마세요.

Agora

훅: IRtcEngine::registerVideoFrameObserver(C++ Video SDK 4.x). Windows는 보통 YUV420 / I420을 제공합니다.
  1. getVideoFrameProcessMode에서 PROCESS_MODE_READ_WRITE를 반환
  2. onCaptureVideoFrame에서 yBuffer / uBuffer / vBufferProcessI420InPlace 실행
  3. SDK가 프레임을 유지하도록 true를 반환
IRtcEngine를 파괴하기 전에 등록을 해제하고 engine.reset()을 호출하세요.

LiveKit

데스크톱의 일반적인 패턴은 커스텀 비디오 소스입니다. 직접 캡처 / 처리한 뒤 프레임을 LiveKit(C++ 클라이언트 또는 브리지)에 푸시합니다. 모바일 VideoProcessor 텍스처 콜백이 아닙니다. 권장 파이프라인:
  1. 프레임 캡처(카메라 / DXGI / 등)
  2. CreateWithI420 / CreateWithRGBAProcessImage
  3. 출력을 LiveKit / WebRTC 프레임으로 감싸 VideoSource / RTCVideoSource에 푸시
정확한 타입 이름은 LiveKit 클라이언트 버전에 따라 다릅니다. 커스텀 트랙은 LiveKit 문서를 참고하세요. Facebetter는 2단계만 담당합니다.

문제 해결

관련 문서