android-webrtc-usb-camera icon indicating copy to clipboard operation
android-webrtc-usb-camera copied to clipboard

capturerObserver.onByteBufferFrameCaptured has been removed

Open yhchi opened this issue 5 years ago • 3 comments

It seems that capturerObserver.onByteBufferFrameCaptured has been removed. How can I use uvc camera with webrtc now?

yhchi avatar Jun 10 '19 12:06 yhchi

I combine this with react-native-webrtc, and I solve it by the code below, but the output seem like rgb bgr inverted

@Override
public void onFrame(ByteBuffer frame) {
    executor.execute(new Runnable() {
        @Override
        public void run() {
            byte[] imageArray = new byte[frame.remaining()];
            frame.get(imageArray);
            Long imageTime = System.currentTimeMillis();

            VideoFrame.Buffer mNV21Buffer = new NV21Buffer(imageArray, 1280, 720, null);

            VideoFrame mVideoFrame = new VideoFrame(mNV21Buffer, 0, imageTime);
            capturerObserver.onFrameCaptured(mVideoFrame);
        }
    });
}

yokada2254 avatar Mar 27 '20 16:03 yokada2254

Hi @yhchi I have also encountered this problem. Have you solved it? Can you share your solution

Thanks!

TenXu avatar Apr 04 '20 09:04 TenXu

I solve it by the code below: VideofFrame needs a timestamp in nanoseconds.

byte[] imageArray = new byte[frame.remaining()]; frame.get(imageArray); //without this line only a green image was transferred long timestampNS = System.nanoTime(); NV21Buffer buffer = new NV21Buffer(imageArray, UVCCamera.DEFAULT_PREVIEW_WIDTH, UVCCamera.DEFAULT_PREVIEW_HEIGHT, null); VideoFrame videoFrame = new VideoFrame(buffer, 0, timestampNS); capturerObserver.onFrameCaptured(videoFrame);

and use camera.setFrameCallback(UsbCapturer.this, UVCCamera.PIXEL_FORMAT_YUV420SP);

pintukumarpatil avatar Dec 31 '21 08:12 pintukumarpatil