Problema com grabber.Start() JavaCV com RTSP

Fiz um programa para pegar um video de um link RTSP (camera ip).

O código utiliza a biblioteca JavaCV, e é um exemplo igual este abaixo:

 public static void main(String[] args){

    FrameGrabber frameGrabber = new 

    FFmpegFrameGrabber("rtsp://ip:port/login&password");

    CanvasFrame canvasFrame = new CanvasFrame("Test");

    frameGrabber.start();

    for(int i = 0; i<frameGrabber.getLengthInFrames(); i++){
        canvasFrame.showImage(frameGrabber.grab());
    }
   frameGrabber.flush();

   canvasFrame.dispose();
}

O programa está funcionando normalmente, desde que o link não esteja indisponível ou incorreto.

Se o link da camera RTSP estiver indisponível ou estiver com um link incorreto, o programa não retorna da função
frameGrabber.start();

Ele entra nesta função e trava, não faz mais nada, não retorna erro e não da timeout.

Já procurei varias formas de validar o link antes chamar esta função e não encontrei como.

Usando protocolo http ou buscando um video da máquina funciona o retorno quando vc passa ip ou caminho incorreto apenas no rtsp não funciona.

1 curtida

I find the solution.

It is necessary you define one timeout.

streamGrabber.setOption(“timeout” , “3”);

The default value for this parameter is ‘-1’ (infinite).

"Timeout
Set maximum timeout (in seconds) to wait for incoming connections.

A value of -1 means infinite (default). This option implies the rtsp_flags set to ‘listen’."