¿Cómo puedo configurar la conexión con DVR y decodificar los datos?

Mi sistema consta de una grabadora de video digital (dvr) y dos cámaras, que están conectadas con dvr. El dvr también funciona como servidor (conectado a LAN). Al sistema se incluyó una aplicación de Android, donde coloco información sobre el servidor, el puerto, el nombre de usuario y la contraseña (puedo agregar cuentas usando el software del servidor). La aplicación transmite video desde cámaras. También puedo conectarme con dvr a través de http (solo IE), luego mostrar la aplicación activeX.

Lo que debo hacer es escribir una aplicación similar, pero me metí en un problema: ¿cómo puedo obtener el flujo de video de dvr? No soy un experto con Java y he intentado conectar con dvr, sin éxito.

Aquí está mi código:

import java.net.*;
import java.io.*;

public class VideoStream
{

final static int BUFFER_SIZE = 1024000;
public static void main(String[] args) throws Exception 
{
    Authenticator.setDefault(new Authenticator()
    {
        protected  PasswordAuthentication  getPasswordAuthentication()
        {
            System.out.println("Authenticatting...");
            PasswordAuthentication p=new PasswordAuthentication("login", "password".toCharArray());
        return p;       
        }
    });
    Socket s = new Socket();
    String host = "192.168.80.107"; //192.168.80.107
    PrintWriter s_out = null;
    BufferedReader s_in = null;
    BufferedInputStream bufferedInputStream = null;

    try
    {
        s.connect(new InetSocketAddress(host, 34599));
        System.out.println("Is connected? : " + s.isConnected());

        s_out = new PrintWriter(s.getOutputStream(), true);
        s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));
        //bufferedInputStream = new BufferedInputStream(s.getInputStream());
    }
    catch(UnknownHostException e)
    {
        e.printStackTrace();
        System.exit(1);
    }
    catch(Exception e)
    {
        e.printStackTrace();
        System.exit(1);
    }

    byte[] b = new byte[BUFFER_SIZE];
    //bufferedInputStream.read(b);

    int bytesRead = 0;
    System.out.println("Reading... \n");
    while((bytesRead = s_in.read()) > 0)
    {
        System.out.println(s_in.readLine());
    }
    System.out.println("Done");
}

Probé un puerto diferente (TCP y para la aplicación de Android incluida). El zócalo se conecta con el servidor, pero se "cuelga" cuando intento usar el método read () (incluso fuera del bucle while). El autenticador no funciona también.

Alguna información sobre dvr:

Soporte de protocolo: TCP / IP, UDP, SMTP, NTP, DHCP, DDNSCompresión de video: H.264Sistema operativo: linux

Apreciaré mucho cualquier consejo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta