Android

1단계: Demo 프로젝트 압축 해제

  1. Tencent Effect(TE) SDK와 통합된 TRTC Demo를 다운로드합니다. 이 Demo는 Tencent Effect SDK S1-04 에디션을 기반으로 제작되었습니다.
  2. Demo의 SDK 파일을 실제로 사용하는 SDK용 파일로 교체합니다. 구체적 작업은 다음 단계를 따르십시오.
    • xmagic 모듈의 libs 디렉터리에 있는 .aar 파일을 SDK의 libs에 있는 .aar 파일로 교체하십시오.
    • xmagic 모듈의 ../src/main/assets에 있는 모든 파일을 SDK의 assets/에 있는 파일로 교체합니다. SDK 패키지의 MotionRes 폴더에 파일이 있는 경우 ../src/main/assets 디렉터리에도 복사합니다.
    • xmagic 모듈의 ../src/main/jniLibs에 있는 모든 .so 파일을 SDK 패키지의 jniLibs에 있는 .so 파일로 교체합니다(arm64-v8a 및 armeabi-v7a에 대한 .so 파일을 얻으려면 jinLibs 폴더에 있는 ZIP 파일의 압축을 풀어야 합니다).
  3. Demo 프로젝트의 xmagic 모듈을 실제 항목 프로젝트로 가져옵니다.

2단계: app 모듈의 build.gradle 열기

  1. applicationId를 신청된 테스트 인증과 일치하는 패키지 이름으로 수정합니다.
  2. gson 종속성 설정을 추가합니다.
    configurations{
    all*.exclude group:'com.google.code.gson'
    }
    

3단계: SDK 인터페이스 통합

Demo 프로젝트의 ThirdBeautyActivity 클래스를 참고하십시오.

  1. 인증:

     //인증 시 주의사항 및 오류 코드 내용은 https://intl.cloud.tencent.com/document/product/1143/45385#step-1.-authenticate를 참고하십시오
    XMagicImpl.checkAuth((errorCode, msg) -> {
                if (errorCode == TELicenseCheck.ERROR_OK) {
                    showLoadResourceView();
                } else {
                    TXCLog.e(TAG, "인증 실패, 인증 url 및 key를 확인하십시오" + errorCode + " " + msg);
                }
            });
    
  2. 소재 초기화:

    private void showLoadResourceView() {
        if (XmagicLoadAssetsView.isCopyedRes) {
            XmagicResParser.parseRes(getApplicationContext());
            initXMagic();
        } else {
            loadAssetsView = new XmagicLoadAssetsView(this);
            loadAssetsView.setOnAssetsLoadFinishListener(() -> {
                XmagicResParser.parseRes(getApplicationContext());
                initXMagic();
            });
        }
    }
    
  3. 푸시 설정 활성화:

    mTRTCCloud.setLocalVideoProcessListener(TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D, TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE, new TRTCCloudListener.TRTCVideoFrameListener() {
    @Override
    public void onGLContextCreated() {
    }
    @Override
    public int onProcessVideoFrame(TRTCCloudDef.TRTCVideoFrame srcFrame, TRTCCloudDef.TRTCVideoFrame dstFrame) {
    }
    @Override
    public void onGLContextDestory() {
    }
    });
    
  4. textureId를 SDK에 불러오기 및 렌더링 처리:
    TRTCVideoFrameListener 인터페이스의 onProcessVideoFrame(TRTCCloudDef.TRTCVideoFrame srcFrame, TRTCCloudDef.TRTCVideoFrame dstFrame) 메소드에 다음 코드를 추가합니다.

    dstFrame.texture.textureId = mXMagic.process(srcFrame.texture.textureId, srcFrame.width, srcFrame.height);
    
  5. SDK 일시 중지/비활성화:
    onPause()는 뷰티 필터 일시 중지에 사용되며, Activity/Fragment 라이프사이클 메소드에서 실행할 수 있습니다. onDestroy 메소드는 GL 스레드에서 호출해야 합니다. (onTextureDestroyed 메소드에서 XMagicImpl 객체의 onDestroy() 호출 가능), 자세한 사용법은 Demo를 참고하십시오.

    mXMagic.onPause();   //일시 정지, Activity의 onPause 메소드와 연결
    mXMagic.onDestroy();  //폐기. GL 스레드에서 호출
    
  6. 레이아웃에 SDK 뷰티 필터 패널 추가:

       <RelativeLayout
        android:layout_above="@+id/ll_edit_info"
        android:id="@+id/livepusher_bp_beauty_pannel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    
  7. 패널 초기화:

         private void initXMagic() {
          if (mXMagic == null) {
              mXMagic = new XMagicImpl(this, mBeautyPanelView);
          }else{
              mXMagic.onResume();
          }
      }
    

자세한 내용은 Demo 프로젝트의 ThirdBeautyActivity.initXMagic(); 메소드를 참고하십시오.