powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Захват видео с IP камеры
14 сообщений из 14, страница 1 из 1
Захват видео с IP камеры
    #38718104
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Передо мной стоит задача, необходимо считывать с IP камеры данные. Может кто знает, какими средствами можно реализовать?
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38718472
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего надо ковырять название производителя камеры. Потом стандарт в котором она вещает.
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38718574
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понял камера китайская (ipc-bn20w3130t) и толком про нее ничего нет. Находил, что можно использовать JMF, а также JavaCV, но, понятной мне, документации, а также примеров, я не нашел. Есть еще варианты?
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719044
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотреть произоводителя.
а если производитель не представляет документацию к камере и проколам вещения то это плохо.
много лучше если есть sdk от производителя.

а так только wireshark - смотреть на сигнатуру данных попробовать определить протокол (если повезет может быть он стандартизирован и где то получиться найти его описание и библиотеки к нему)
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719051
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно начать отсюда http://www.onvif.org/ эта какмера вроде как совместимая.

только не проще купить сразу камеру где поддержка получше
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719061
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку http://sourceforge.net/projects/onvifdm/
http://stackoverflow.com/questions/20535199/onvif-beginning-of-device-discovery
http://www.openipcam.com/files/ONVIF/ONVIF_WG-APG-Application_Programmer's_Guide.pdf

на стаковерфлоу репортуют что успешно получили данные с камеры. она вроде как через веб сервис данные передет
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719301
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin1706, ну возьми любой туториал по JMF запусти
и посмотри что будет. Делов-то на 10 минут.
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719679
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственное стоящее на тему считывание информации с IP камер средствами JMF это следующий код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.applet.*;
 
public class IPCamera extends Applet implements Runnable
{
     public boolean useMJPGStream = true;
     String appletToLoad;
     Thread appletThread;
 
     public String jpgURL = "http://192.168.1.100/cgi-bin/video.jpg";
     public String mjpgURL = "http://192.168.1.100/video.cgi";
 
     DataInputStream dis;
     private Image image=null;
     public Dimension imageSize = null;
     public boolean connected = false;
     private boolean initCompleted = false;
     HttpURLConnection huc=null;
     Component parent;
 
     /** Creates a new instance of AxisCamera */
      public IPCamera (Component parent_)      //
     {                                   //
          parent = parent_;               //
     }                                   //
 
     public void connect(){
          try{
               URL u = new URL(useMJPGStream?mjpgURL:jpgURL);
               huc = (HttpURLConnection) u.openConnection();
               //System.out.println(huc.getContentType());
               InputStream is = huc.getInputStream();
               connected = true;
               BufferedInputStream bis = new BufferedInputStream(is);
               dis= new DataInputStream(bis);
               if(!initCompleted)
                    initDisplay();
          }
          catch(IOException e){
               //incase no connection exists wait and try again, instead of printing the error
               try{
                    huc.disconnect();
                    Thread.sleep(60);
               }catch(InterruptedException ie){
                    huc.disconnect();connect();
               }
               connect();
          }catch(Exception e){;}
     }
 
     public void initDisplay(){
          //setup the display
          if (useMJPGStream)
               readMJPGStream();
          else{
               readJPG();
               disconnect();
          }
          imageSize = new Dimension(image.getWidth(this), image.getHeight(this));
          setPreferredSize(imageSize);      //
          parent.setSize(imageSize);        //
          parent.validate();          //
          initCompleted = true;
     }
 
     public void disconnect(){
          try{
               if(connected){
                    dis.close();
                    connected = false;
               }
          }catch(Exception e){;}
     }
 
     public void init(){
          System.out.println("Starting Applet");
          appletToLoad = getParameter("appletToLoad");
          setBackground(Color.white);
     }
 
     public void paint(Graphics g){
          //used to set the image on the panel
          if (image != null)
               g.drawImage(image, 0, 0, this);
     }
 
     /*public void run()
     {
          try {
               connect();
               readStream();
               
               Class appletClass = Class.forName(appletToLoad);
               Applet realApplet = (Applet)appletClass.newInstance();
               //realApplet.setStub(this);
               setLayout( new GridLayout(1,0));
               add(realApplet);
               realApplet.init();
               realApplet.start();
          }
          catch (Exception e) {
               System.out.println( e );
          }
          validate();
     }*/
 
     public void start(){
          appletThread = new Thread(this);
          appletThread.start();
     }
 
     public void stop(){
          appletThread.stop();
          appletThread = null;
     }
 
     public void readStream(){
          //the basic method to continuously read the stream
          try{
               if (useMJPGStream){
                    while(true){
                         readMJPGStream();
                         //parent.repaint();
                    }
               }
               else{
                    while(true){
                         connect();
                         readJPG();
                         //parent.repaint();
                         disconnect();
                    }
               }
          }catch(Exception e){;}
     }
 
     public void readMJPGStream(){
          //preprocess the mjpg stream to remove the mjpg encapsulation
 
          //Following commented on 07/08/2006
          //readLine(3,dis); //discard the first 3 lines
 
          //Following added on 07/08/2006
          readLine(4, dis); //discard the first 4 lines for D-Link DCS-900
 
          readJPG();
          readLine(2,dis); //discard the last two lines
     }
 
     public void readJPG(){
          //read the embedded jpeg image
          try{
               JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(dis);
               image = decoder.decodeAsBufferedImage();
          }catch(Exception e){
               e.printStackTrace();disconnect();
          }
     }
 
     public void readLine(int n, DataInputStream dis){
          //used to strip out the header lines
          for (int i=0; i<n;i++){
               readLine(dis);
          }
     }
 
     public void readLine(DataInputStream dis){
          try{
               boolean end = false;
               String lineEnd = "\n"; //assumes that the end of the line is marked with this
               byte[] lineEndBytes = lineEnd.getBytes();
               System.out.println("lineEndBytes....."+lineEndBytes);
               byte[] byteBuf = new byte[lineEndBytes.length];
               System.out.println("byteBuf......."+byteBuf);
               
               while(!end){
                    //dis.read(byteBuf,0,lineEndBytes.length);
                    String t = "";
                    if(byteBuf != null){
                         dis.read(byteBuf,0,lineEndBytes.length);
                         t = new String(byteBuf);
                    }
                    //System.out.print(t); //uncomment if you want to see what the lines actually look like
                    if(t.equals(lineEnd))
                         end=true;
               }
          }catch(Exception e){
               e.printStackTrace();
          }
     }
 
     public void run(){
          connect();
          readStream();
     }
 
     public static void main(String[] args)
     {
          JFrame jframe = new JFrame();
          jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          //IPCamera axPanel = new IPCamera();
          IPCamera axPanel = new IPCamera(jframe);
          new Thread(axPanel).start();
          jframe.getContentPane().add(axPanel);
          jframe.pack();
          jframe.show();
     }
}


Но на строчки
Код: java
1.
2.
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(dis);
image = decoder.decodeAsBufferedImage();


компилятор будет ругаться. Поискав в нете, обнаружил, что это возможно(!) будет работать с jdk 1.4-1.5.
Для решения данной проблемы предлагают воспользоваться вот этим кодом
Код: java
1.
javax.imageio.ImageIO.write(image, format, stream)


Возможно для замены тех строк потребуется написать следующее
Код: java
1.
2.
URL url = new URL(jpgURL);  
image = ImageIO.read(url);


С таким кодом синтаксических ошибок не оказалось, но при запуске проекта ошибка проявилась.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
java.lang.NoClassDefFoundError: newjframe/NewJFrame (wrong name: NewJFrame/NewJFrame)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Exception in thread "main" Java Result: 1


На данный момент с этой ошибкой не разобрался.
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719682
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin1706На данный момент с этой ошибкой не разобрался.
Это ошибка подробно описана в FAQ форума.
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719811
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konstantin1706компилятор будет ругаться. Поискав в нете, обнаружил, что это возможно(!) будет работать с jdk 1.4-1.5.
Для решения данной проблемы предлагают воспользоваться вот этим кодом
Причем здесь тут? Какое jdk1.4 ?
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719933
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственное стоящее на тему считывание информации с IP камер средствами JMF это следующий код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
import java.applet.*;
 
public class IPCamera extends Applet implements Runnable
{
     public boolean useMJPGStream = true;
     String appletToLoad;
     Thread appletThread;
 
     public String jpgURL = "http://192.168.1.100/cgi-bin/video.jpg";
     public String mjpgURL = "http://192.168.1.100/video.cgi";
 
     DataInputStream dis;
     private Image image=null;
     public Dimension imageSize = null;
     public boolean connected = false;
     private boolean initCompleted = false;
     HttpURLConnection huc=null;
     Component parent;
 
     /** Creates a new instance of AxisCamera */
      public IPCamera (Component parent_)      //
     {                                   //
          parent = parent_;               //
     }                                   //
 
     public void connect(){
          try{
               URL u = new URL(useMJPGStream?mjpgURL:jpgURL);
               huc = (HttpURLConnection) u.openConnection();
               //System.out.println(huc.getContentType());
               InputStream is = huc.getInputStream();
               connected = true;
               BufferedInputStream bis = new BufferedInputStream(is);
               dis= new DataInputStream(bis);
               if(!initCompleted)
                    initDisplay();
          }
          catch(IOException e){
               //incase no connection exists wait and try again, instead of printing the error
               try{
                    huc.disconnect();
                    Thread.sleep(60);
               }catch(InterruptedException ie){
                    huc.disconnect();connect();
               }
               connect();
          }catch(Exception e){;}
     }
 
     public void initDisplay(){
          //setup the display
          if (useMJPGStream)
               readMJPGStream();
          else{
               readJPG();
               disconnect();
          }
          imageSize = new Dimension(image.getWidth(this), image.getHeight(this));
          setPreferredSize(imageSize);      //
          parent.setSize(imageSize);        //
          parent.validate();          //
          initCompleted = true;
     }
 
     public void disconnect(){
          try{
               if(connected){
                    dis.close();
                    connected = false;
               }
          }catch(Exception e){;}
     }
 
     public void init(){
          System.out.println("Starting Applet");
          appletToLoad = getParameter("appletToLoad");
          setBackground(Color.white);
     }
 
     public void paint(Graphics g){
          //used to set the image on the panel
          if (image != null)
               g.drawImage(image, 0, 0, this);
     }
 
     /*public void run()
     {
          try {
               connect();
               readStream();
               
               Class appletClass = Class.forName(appletToLoad);
               Applet realApplet = (Applet)appletClass.newInstance();
               //realApplet.setStub(this);
               setLayout( new GridLayout(1,0));
               add(realApplet);
               realApplet.init();
               realApplet.start();
          }
          catch (Exception e) {
               System.out.println( e );
          }
          validate();
     }*/
 
     public void start(){
          appletThread = new Thread(this);
          appletThread.start();
     }
 
     public void stop(){
          appletThread.stop();
          appletThread = null;
     }
 
     public void readStream(){
          //the basic method to continuously read the stream
          try{
               if (useMJPGStream){
                    while(true){
                         readMJPGStream();
                         //parent.repaint();
                    }
               }
               else{
                    while(true){
                         connect();
                         readJPG();
                         //parent.repaint();
                         disconnect();
                    }
               }
          }catch(Exception e){;}
     }
 
     public void readMJPGStream(){
          //preprocess the mjpg stream to remove the mjpg encapsulation
 
          //Following commented on 07/08/2006
          //readLine(3,dis); //discard the first 3 lines
 
          //Following added on 07/08/2006
          readLine(4, dis); //discard the first 4 lines for D-Link DCS-900
 
          readJPG();
          readLine(2,dis); //discard the last two lines
     }
 
     public void readJPG(){
          //read the embedded jpeg image
          try{
               JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(dis);
               image = decoder.decodeAsBufferedImage();
          }catch(Exception e){
               e.printStackTrace();disconnect();
          }
     }
 
     public void readLine(int n, DataInputStream dis){
          //used to strip out the header lines
          for (int i=0; i<n;i++){
               readLine(dis);
          }
     }
 
     public void readLine(DataInputStream dis){
          try{
               boolean end = false;
               String lineEnd = "\n"; //assumes that the end of the line is marked with this
               byte[] lineEndBytes = lineEnd.getBytes();
               System.out.println("lineEndBytes....."+lineEndBytes);
               byte[] byteBuf = new byte[lineEndBytes.length];
               System.out.println("byteBuf......."+byteBuf);
               
               while(!end){
                    //dis.read(byteBuf,0,lineEndBytes.length);
                    String t = "";
                    if(byteBuf != null){
                         dis.read(byteBuf,0,lineEndBytes.length);
                         t = new String(byteBuf);
                    }
                    //System.out.print(t); //uncomment if you want to see what the lines actually look like
                    if(t.equals(lineEnd))
                         end=true;
               }
          }catch(Exception e){
               e.printStackTrace();
          }
     }
 
     public void run(){
          connect();
          readStream();
     }
 
     public static void main(String[] args)
     {
          JFrame jframe = new JFrame();
          jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          //IPCamera axPanel = new IPCamera();
          IPCamera axPanel = new IPCamera(jframe);
          new Thread(axPanel).start();
          jframe.getContentPane().add(axPanel);
          jframe.pack();
          jframe.show();
     }
}


Но на строчки
Код: java
1.
2.
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(dis);
image = decoder.decodeAsBufferedImage();


компилятор будет ругаться. Поискав в нете, обнаружил, что это возможно(!) будет работать с jdk 1.4-1.5.
Для решения данной проблемы предлагают воспользоваться вот этим кодом
Код: java
1.
javax.imageio.ImageIO.write(image, format, stream)


Возможно для замены тех строк потребуется написать следующее
Код: java
1.
2.
URL url = new URL(jpgURL);  
image = ImageIO.read(url);


С таким кодом синтаксических ошибок не оказалось, но при запуске проекта ошибка проявилась.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
java.lang.NoClassDefFoundError: newjframe/NewJFrame (wrong name: NewJFrame/NewJFrame)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Exception in thread "main" Java Result: 1


На данный момент с этой ошибкой не разобрался.
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719934
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonKonstantin1706компилятор будет ругаться. Поискав в нете, обнаружил, что это возможно(!) будет работать с jdk 1.4-1.5.
Для решения данной проблемы предлагают воспользоваться вот этим кодом
Причем здесь тут? Какое jdk1.4 ?
Поправьте, если не так.
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38719988
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос: какое отношение компилятор имеет к отсутствию пользовательского класса?
Ответ: никакого

Вопрос: какой версии компилятор будет ругаться при компиляции отсутствующего класса
Ответ: любой


JMF вообще непонятно развивается он или нет. Ваш пример имеет значение только если камера транслирует в mjpg формате, в то время как в описании на нее указано что она поддерживает onvif.

Можно зайти в настройки (наверняка админка есть) и смотреть там, можно попробовать найти спецификацию на сайте производителя или в интернете.

Прежде чем рубить с горяча попробуйте собрать информацию на камеру.
...
Рейтинг: 0 / 0
Захват видео с IP камеры
    #38720022
Konstantin1706
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое за помощь. Буду копать в сторону onvif.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Захват видео с IP камеры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]