Skip to main content
SDK 2.0.0. 서드파티 SDK의 커스텀 비디오 전처리 콜백에 Facebetter를 겁니다. 해당 SDK의 OpenGL ES 스레드에서 외부 텍스처에 processImage를 실행한 뒤 출력 텍스처를 반환합니다. 전체 텍스처 규칙: 뷰티 효과 적용 · 외부 텍스처. 방 입장, 게시, 권한은 벤더 문서에 따릅니다. 이 페이지는 Facebetter 연결만 다룹니다.

공통 계약

Facebetter는 createWithTextureGL_TEXTURE_EXTERNAL_OES를 받지 않습니다. 벤더가 기본으로 OES를 쓰면 문서에 따라 Texture2D / RGB로 바꾸거나 먼저 GL_TEXTURE_2D로 blit하세요.

공유 헬퍼

모든 벤더 GL 콜백에서 재사용합니다(GL 스레드에서 실행해야 함).
엔진 생성(역시 GL 스레드):
자격 증명: 구독, 인증 및 라이선스.

TRTC (Tencent)

훅: TRTCCloud.setLocalVideoProcessListener. 픽셀 형식 Texture_2D와 버퍼 유형 TEXTURE를 사용하세요. onGLContextCreated에서 Facebetter를 만들고, onProcessVideoFrame에서 처리한 뒤 dstFrame.texture.textureId를 설정하고, onGLContextDestory에서 release()합니다.
리스너를 제거하거나 방을 나간 뒤 엔진을 해제하세요. 최신 TRTC 세부 사항은 Tencent 서드파티 뷰티 가이드를 참고하세요. Flutter는 Flutter · 서드파티 연동(FacebetterPlugin.processTexture, 이 Java API가 아님)을 사용하세요.

Agora

훅: RtcEngine.registerVideoFrameObserver(Video SDK 4.x). 다음이 필요합니다.
  1. getVideoFrameProcessMode()에서 PROCESS_MODE_READ_WRITE를 반환
  2. 유형 **RGB(GL_TEXTURE_2D)**인 TextureBuffer를 선호
  3. onCaptureVideoFrame(또는 선택한 observe position)에서 Facebetter를 실행한 뒤 처리된 텍스처를 VideoFrame다시 씀
textureId를 Agora VideoFrame에 주입하는 방법은 TextureBuffer 헬퍼와 메이저 버전에 따라 다릅니다. Facebetter는 새 GL_TEXTURE_2D만 만듭니다. 다시 쓰는 단계는 Agora video frame observer / API Reference를 따르세요.
RtcEngine를 파괴하기 전에 observer를 등록 해제하고 beautyEngine.release()를 호출하세요.

LiveKit

훅: 로컬 비디오 트랙을 만들 때 org.webrtc.VideoProcessor(또는 동등한 트랙 프로세서)를 전달합니다. onFrameCaptured에서 텍스처를 처리한 뒤 sink.onFrame(...)으로 전달합니다.
커스텀 VideoCapturer를 구현하고 캡처 후 processTexture를 실행한 뒤 capturerObserver.onFrameCaptured를 호출할 수도 있습니다. 공식 프로세서(예: 가상 배경)는 LiveKit의 livekit-android-track-processors 모듈에 있습니다.

문제 해결

관련 문서