第三方美颜

更新时间: 2022/10/31 07:24:28

在社交娱乐或教育场景中,用户在进行视频通话或直播的过程中,常常希望向对方呈现良好的肌肤状态和精神面貌。NERoom SDK 提供了采集数据回调的 API 方法,帮助您轻松接入第三方专业美颜滤镜厂商,以完善业务场景。

功能介绍

NERoom SDK 提供 setVideoFrameCallback 接口用于设置相机采集数据的回调。APP 在美颜后将数据返回给 SDK,SDK 对美颜后的数据进行预览以及编码发送。

注意事项

该方法依赖于相机采集的 OES 纹理和 YUV I420 数据。默认情况下 SDK 仅返回 Texture 数据,如果第三方滤镜率需要 YUV 数据,可以通过参数 textureWithI420 设置同时返回 YUV I420 和 Texture 的数据。

预览美颜效果

配置步骤

  1. 调用 previewRoom 方法开启房间预览。
  2. 调用 startPreview 方法开启视频预览。
  3. 调用 setVideoFrameCallback 方法设置返回的本地视频采集数据。调用此方法时,您需要通过 NERoomVideoFrame 设置视频数据格式,以及通过 textureWithI420 设置是否需要同时返回 YUV I420 和 Texture 格式的数据,默认仅返回 Texture 数据。

示例代码

 NEPreviewRoomContext previewRoomContext =null;
    NERoomVideoView videoView=findViewById(R.id.videoView);
    //开启预览
    startPreview();
    private void startPreview(){
        NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        roomService.previewRoom(new NEPreviewRoomParams(), new NEPreviewRoomOptions(), new NECallback2<NEPreviewRoomContext>() {
            @Override
            public void onSuccess(@Nullable NEPreviewRoomContext nePreviewRoomContext) {
                super.onSuccess(nePreviewRoomContext);

                previewRoomContext.getPreviewController().startPreview(videoView, new NECallback2<Unit>() {
                    @Override
                    public void onSuccess(@Nullable Unit unit) {
                        super.onSuccess(unit);
                        // 美颜
                        previewRoomContext.getPreviewController().setVideoFrameCallback(true, new Function1<NERoomVideoFrame, Boolean>() {
                            @Override
                            public Boolean invoke(NERoomVideoFrame neRoomVideoFrame) {
                                //您可以基于以下数据进行美颜处理
                                Log.d(TAG,"width:"+neRoomVideoFrame.getWidth());
                                Log.d(TAG,"height:"+neRoomVideoFrame.getHeight());
                                Log.d(TAG,"rotation:"+neRoomVideoFrame.getRotation());
                                Log.d(TAG,"format:"+neRoomVideoFrame.getFormat());
                                Log.d(TAG,"timeStamp:"+neRoomVideoFrame.getTimeStamp());
                                Log.d(TAG,"data:"+neRoomVideoFrame.getData());
                                Log.d(TAG,"textureId:"+neRoomVideoFrame.getTextureId());
                                Log.d(TAG,"transformMatrix:"+neRoomVideoFrame.getTransformMatrix());
                                return null;
                            }
                        });
                    }

                    @Override
                    public void onError(int code, @Nullable String message) {
                        super.onError(code, message);
                        Log.d(TAG,"error");
                    }
                });
            }

            @Override
            public void onError(int code, @Nullable String message) {
                super.onError(code, message);
            }
        });
    }

房间内开启美颜

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 setVideoFrameCallback 方法设置返回的本地视频采集数据。调用此方法时,您需要通过 NERoomVideoFrame 设置视频数据格式,以及通过 textureWithI420 设置是否需要同时返回 YUV I420 和 Texture 格式的数据,默认仅返回 Texture 数据。

示例代码


       NERoomService roomService = NERoomKit.getInstance().getService(NERoomService.class);
        NERoomContext roomContext = roomService.getRoomContext(roomUuid);
        if (roomContext != null) {
             roomContext.getRtcController().setVideoFrameCallback(true, new Function1<NERoomVideoFrame, Boolean>() {
                 @Override
                 public Boolean invoke(NERoomVideoFrame neRoomVideoFrame) {
                     //您可以基于以下数据进行美颜处理
                     Log.d(TAG,"width:"+neRoomVideoFrame.getWidth());
                     Log.d(TAG,"height:"+neRoomVideoFrame.getHeight());
                     Log.d(TAG,"rotation:"+neRoomVideoFrame.getRotation());
                     Log.d(TAG,"format:"+neRoomVideoFrame.getFormat());
                     Log.d(TAG,"timeStamp:"+neRoomVideoFrame.getTimeStamp());
                     Log.d(TAG,"data:"+neRoomVideoFrame.getData());
                     Log.d(TAG,"textureId:"+neRoomVideoFrame.getTextureId());
                     Log.d(TAG,"transformMatrix:"+neRoomVideoFrame.getTransformMatrix());
                     return null;
                 }
             });
        }

API 参考

方法 功能描述
previewRoom 开启房间预览。
startPreview 开启视频预览。
setVideoFrameCallback 设置视频采集数据回调,用于美颜等操作。
getRoomContext 获取房间上下文。
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 预览美颜效果
  • 配置步骤
  • 示例代码
  • 房间内开启美颜
  • 配置步骤
  • 示例代码
  • API 参考