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: linuxEu apreciarei muito qualquer conselho.