验证 org.WebRTC VideoFrame 或 NV21Buffer 是否包含有效(未损坏)图片
Verifying that an org.WebRTC VideoFrame or NV21Buffer contain a valid (not corrupted) picture
我调用以下方法将帧从 USB 摄像头流式传输到 org.WebRTC
的 Video Capture Observer。它工作正常,除了在远程对等方的视频显示中每隔几秒出现一些损坏的帧(绿色或扭曲的灰色帧)。我想验证 nv21Buffer
或 videoFrame
是好照片,然后再将它们进一步发送给观察者。
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 来检测这些。但是没有内置。
我调用以下方法将帧从 USB 摄像头流式传输到 org.WebRTC
的 Video Capture Observer。它工作正常,除了在远程对等方的视频显示中每隔几秒出现一些损坏的帧(绿色或扭曲的灰色帧)。我想验证 nv21Buffer
或 videoFrame
是好照片,然后再将它们进一步发送给观察者。
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 来检测这些。但是没有内置。