使用java的轴ip camera live streaming

时间:2013-12-06 06:48:41

标签: java ip-camera

我有轴m1114 ip camera

我希望使用java显示实时流式传输和记录流式传输。我尝试使用以下代码,但帧速率非常低

请建议一些api给我更多的帧速率和录制功能。

import java.io.File;
import java.net.URL;
import com.googlecode.javacpp.Loader;
import com.googlecode.javacv.*;
import com.googlecode.javacv.cpp.*;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_calib3d.*;
import static com.googlecode.javacv.cpp.opencv_objdetect.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import  demo.authenticator.MyAuthenticator;
import java.net.Authenticator;
import java.net.MalformedURLException;
import org.jcodec.api.SequenceEncoder;
public class Demo {
    public static void main(String[] args) throws IOException {

        CanvasFrame CamWindow = new CanvasFrame("Camera");
        int i=0,j=0;

        URL url = null ;
        SequenceEncoder encoder=new SequenceEncoder(new File("video.mp4"));
        try {
            // Create a new URL object from the URL-string of our camera.
            url = new URL("http://192.168.168.92/axis-cgi/jpg/image.cgi");
        } catch (MalformedURLException m) {
            m.getMessage();
        }

        // Check if this camera requires authentication.
        // If so, then create and set the authenticator object.

            MyAuthenticator authenticator = new MyAuthenticator("root",
                        "pass");
    Authenticator.setDefault(authenticator);

    Long stime=System.currentTimeMillis();
        while(true){
            i++;
        //InputStream is = url.openStream();
        BufferedImage image = ImageIO.read(url);

        CamWindow.showImage(image);
     //   is.close();

       /* if(i<100)
        {
           encoder.encodeImage(image);
        }
        else 
        {
            if(j==0)
            {
                encoder.finish();
                j++;
                System.out.println("video saved");
                System.out.println((System.currentTimeMillis()-stime)/1000+"seconds");
            }

        }*/
        System.out.println((System.currentTimeMillis()-stime));
        }
    }
}

2 个答案:

答案 0 :(得分:1)

Axis相机API位于:http://www.axis.com/files/manuals/vapix_video_streaming_52937_en_1307.pdf

你需要使用这个: HTTP:///axis-cgi/mjpg/video.cgi

而不是您现在拥有的图片网址。从Axis相机获取静止图像将非常不稳定。您需要使用它吐出的Motion JPEG Feed。

答案 1 :(得分:0)

我也经历过这些解决方案,其中一个好的 API 我发现是WEBCAM-Capture。由于某些原因,我认为它很好

  • 已更新
  • 是开源的
  • 许多例子
  • 大多数重要来自其开发人员的支持是快速而准确的,而不是其他相机支持API。 希望这会对你有所帮助。