Android 验证org.WebRTC视频帧或NV21缓冲区是否包含有效(未损坏)图片
我调用以下方法将帧从USB摄像头流式传输到org.WebRTC的视频捕获观察器。它工作正常,除了在远程对等的视频显示中每隔几秒钟出现一些损坏的绿色或扭曲的灰色帧。我想在将NV21缓冲区或视频帧进一步发送给观察者之前,验证它们是否是良好的图片Android 验证org.WebRTC视频帧或NV21缓冲区是否包含有效(未损坏)图片,android,video-streaming,webrtc,rtcpeerconnection,usb-camera,Android,Video Streaming,Webrtc,Rtcpeerconnection,Usb Camera,我调用以下方法将帧从USB摄像头流式传输到org.WebRTC的视频捕获观察器。它工作正常,除了在远程对等的视频显示中每隔几秒钟出现一些损坏的绿色或扭曲的灰色帧。我想在将NV21缓冲区或视频帧进一步发送给观察者之前,验证它们是否是良好的图片 public void addFrame(ByteBuffer frame) { try { byte[] imageArray = new byte[frame.remaining()];
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是原始像素。在内存中,它只是一个字节数组。没有可能出错的校验和或其他结构。如果字节数正确,则为“良好”
您唯一的选择是进行某种形式的图像处理,并将其与其他帧进行比较,或者开发一种启发式/算法来检测这些帧。但是没有一个内置的 对于其他格式:YUV、RAW、RGBX,这也正确吗?我可以从我的USB摄像机上得到所有的ByteBuffer格式。如果我生成帧的位图,会不会使验证图像更容易?不会。这适用于所有原始像素格式。位图也是一样,只是有一个具有像素格式和分辨率的标题。它仍然没有校验和。