Como posso configurar a conexão com o DVR e decodificar os dados?

Meu sistema consiste em um gravador de vídeo digital (dvr) e duas câmeras, que são conectadas com o dvr. O dvr funciona como servidor também (conectado à LAN). Para o sistema foi incluído um aplicativo android, onde eu coloquei informações sobre o servidor, porta, nome de usuário e senha (eu posso adicionar contas usando o software de servidor). O aplicativo transmite vídeo das câmeras. Eu também posso conectar com dvr via http (apenas IE), então ele mostra o aplicativo activeX.

O que eu devo fazer é escrever um aplicativo semelhante, mas eu me deparo com um problema - como posso buscar o fluxo de vídeo do dvr? Não sou especialista em Java e tentei conectar com dvr, sem sucesso.

Aqui está o meu 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");
}

Eu tentei porta diferente (TCP e para o aplicativo android incluído). O soquete se conecta com o servidor, mas "trava" quando tento usar o método read () (mesmo fora do loop while). Autenticador não funciona também.

Algumas informações sobre o dvr:

Suporte a protocolos: TCP / IP, UDP, SMTP, NTP, DHCP, DDNSCompressão de vídeo: H.264Sistema operacional: linux

Eu apreciarei muito qualquer conselho.

questionAnswers(1)

yourAnswerToTheQuestion