验证 org.WebRTC VideoFrame 或 NV21Buffer 是否包含有效(未损坏)图片

Verifying that an org.WebRTC VideoFrame or NV21Buffer contain a valid (not corrupted) picture

我调用以下方法将帧从 USB 摄像头流式传输到 org.WebRTC 的 Video Capture Observer。它工作正常,除了在远程对等方的视频显示中每隔几秒出现一些损坏的帧(绿色或扭曲的灰色帧)。我想验证 nv21BuffervideoFrame 是好照片,然后再将它们进一步发送给观察者。

    public void addFrame(ByteBuffer frame) {
        try {
            byte[] imageArray = new byte[frame.remaining()];
            frame.get(imageArray);
            NV21Buffer nv21Buffer = new NV21Buffer(imageArray, 640, 480, () -> JniCommon.nativeFreeByteBuffer(frame));
            VideoFrame videoFrame = new VideoFrame(nv21Buffer, 0, System.nanoTime());

            // before sending the videoFrame further, I need to validate if it is a good picture / frame
            capturerObs.onFrameCaptured(videoFrame);

        } catch (
                Exception e) {
            Log.d("addFrame", e.getMessage());
        }
    }

是否有任何内置工具/方法可以在进一步发送之前验证帧的质量?

Nv21 是原始像素。在内存中它只是一个字节数组。没有校验和,或其他可能出错的结构。如果它是正确的字节数,那就是“好”

您唯一的选择是进行某种形式的图像处理并将其与其他帧进行比较,或者开发 heuristic/algorithm 来检测这些。但是没有内置。