Java 我想给android webrtc添加一个过滤器。例如,我想给视频帧添加一个模糊效果

Java 我想给android webrtc添加一个过滤器。例如,我想给视频帧添加一个模糊效果,java,android,filter,webrtc,blur,Java,Android,Filter,Webrtc,Blur,在寻找将过滤器应用于webrtc的示例时,我遵循了转换视频帧的部分 @Override public void onFrameCaptured(VideoFrame frame) { if (this.videoEffector.needToProcessFrame()) { VideoFrame.I420Buffer originalI420Buffer = frame.getBuffer().toI420(); V

在寻找将过滤器应用于webrtc的示例时,我遵循了转换视频帧的部分

   @Override
    public void onFrameCaptured(VideoFrame frame) {
        if (this.videoEffector.needToProcessFrame()) {
            VideoFrame.I420Buffer originalI420Buffer = frame.getBuffer().toI420();
            VideoFrame.I420Buffer effectedI420Buffer =
                    this.videoEffector.processByteBufferFrame(
                            originalI420Buffer, frame.getRotation(), frame.getTimestampNs());
            VideoFrame effectedVideoFrame = new VideoFrame(
                    effectedI420Buffer, frame.getRotation(), frame.getTimestampNs());
            originalI420Buffer.release();
            frame.release();
            this.originalObserver.onFrameCaptured(effectedVideoFrame);
        } else {
            this.originalObserver.onFrameCaptured(frame);
        }
    }
我使用onFrameCapturerd函数成功地应用了模糊过滤器。 然而,GC发生得太多了。所以相机工作得太慢了。 我去了很多地方,发现

ByteBuffer outRgbaBuffer = ByteBuffer.allocateDirect(width * height * 4).order(ByteOrder.nativeOrder());
ByteBuffer dataYBuffer = ByteBuffer.allocateDirect(strideY * height).order(ByteOrder.nativeOrder());
ByteBuffer dataUBuffer = ByteBuffer.allocateDirect(strideU * height).order(ByteOrder.nativeOrder());
ByteBuffer dataVBuffer = ByteBuffer.allocateDirect(strideV * height).order(ByteOrder.nativeOrder());
GC继续在这条线上运行。allocateDirect方法如何解决?
或者,您可以告诉我另一种将筛选器应用于webrtc的方法吗?

您在这里使用的是什么?processByteBufferFrame()找到解决方案了吗?声明在方法外部,而不是在方法内部