Problema com grabber.Start() JavaCV com RTSP

1 resposta
programaçãojava
W

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 Resposta

W

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’."

Criado 23 de março de 2017
Ultima resposta 24 de mar. de 2017
Respostas 1
Participantes 1