Jak mogę skonfigurować połączenie z DVR i zdekodować dane?
Mój system składa się z cyfrowego rejestratora wideo (dvr) i dwóch kamer, które są połączone z dvr. Dvr działa również jako serwer (podłączony do sieci LAN). Do systemu dołączono aplikację na Androida, w której umieściłem informacje o serwerze, porcie, nazwie użytkownika i haśle (mogę dodawać konta za pomocą oprogramowania serwera). Aplikacja strumieniuje wideo z kamer. Mogę również połączyć się z dvr przez http (tylko IE), a następnie pokazać aplikację activeX.
Mam napisać podobną aplikację, ale utknąłem w problemie - jak mogę pobrać strumień wideo z dvr? Nie jestem ekspertem w dziedzinie Java i próbowałem połączyć się z dvr bezskutecznie.
Oto mój kod:
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");
}
Próbowałem innego portu (TCP i dołączonej aplikacji dla Androida). Gniazdo łączy się z serwerem, ale „zawiesza się”, gdy próbuję użyć metody read () (nawet poza pętlą while). Authenticator też nie działa.
Niektóre informacje o dvr:
Obsługa protokołu: TCP / IP, UDP, SMTP, NTP, DHCP, DDNSKompresja wideo: H.264System operacyjny: linuxBędę bardzo wdzięczny za wszelkie rady.