bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.42k stars 1.57k forks source link

grabImage block #2042

Closed loprx closed 11 months ago

loprx commented 1 year ago

I encountered a block while using Javacv to read the stream. I observed through the logs that it took nearly 90 minutes for the result to be returned.

This my code.

try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("rtps://xxxxxxxx");
     Java2DFrameConverter java2dFrameConverter = new Java2DFrameConverter()) {
    grabber.setOption("rtsp_transport", "tcp");
    grabber.setOption("buffer_size", "10240000");
    grabber.setOption("stimeout", "300000");

    grabber.setOption("fflags", "+discardcorrupt");
    grabber.setVideoOption("fflags", "+discardcorrupt");
    grabber.setOption("threads", "2");
    grabber.setAudioChannels(0);
    grabber.setNumBuffers(8);
    grabber.start();

    while (true) {
        Frame frame = grabber.grabImage();

        BufferedImage image = java2dFrameConverter.convert(frame);
        if (image != null) {
            // do something
        } else {
            log.debug("Source {} screenshot frame is null.", source);
            break;
        }

        frame.close();
    }
}

This is log.

2023-06-12 10:08:45.947 [tid] DEBUG org.bytedeco.javacpp.PointerScope : Opening org.bytedeco.javacpp.PointerScope@310172e0
2023-06-12 11:33:52.645 [tid] DEBUG org.bytedeco.javacpp.PointerScope : Closing org.bytedeco.javacpp.PointerScope@310172e0
saudet commented 1 year ago

Sounds like a network issue.

loprx commented 1 year ago

Yes, it has only appeared once so far. It does sound like a network problem. I am observing.

loprx commented 11 months ago

Close.