通过Java进行视频捕获(实时视频流)

时间:2012-07-04 17:50:17

标签: video-streaming video-capture live-streaming

我想编写一个程序,可以通过我的网络摄像头使用Java语言捕获视频,即实时视频流。 我找到了一些关于这个主题的线索,但问题是如何让我的程序独立于操作系统,比如如何在32位和64位操作系统上捕获视频。

请帮助我解决这个问题,我的工作时间很短。如果有人对此主题有所了解,请在此处发布其链接。 感谢。

1 个答案:

答案 0 :(得分:4)

  1. 由于j2se中没有可用于从网络摄像头捕获视频的类,因此您需要使用外部库(如JMF或JavaCV)来执行相同操作。

  2. 要安装JavaCV,您可以找到有关这些链接的说明:

    一个。 ganeshtiwaridotcomdotnp.blogspot.in Link

    湾code.google.com Link

  3. 从相机实时捕捉视频的代码:

    import com.googlecode.javacv.CanvasFrame;
    import com.googlecode.javacv.FrameGrabber;
    import com.googlecode.javacv.VideoInputFrameGrabber;
    import com.googlecode.javacv.cpp.opencv_core.IplImage;
    import static com.googlecode.javacv.cpp.opencv_core.cvFlip;
    
    class GrabberShow implements Runnable 
    {    
       IplImage image;
       CanvasFrame canvas = new CanvasFrame("Web Cam");
       public GrabberShow() {
           canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
       }
       @Override
       public void run() {
           FrameGrabber grabber = new VideoInputFrameGrabber(0); // 1 for next camera
           try {
               grabber.start();
               IplImage img;
               while (true) {
                   img = grabber.grab();
                   if (img != null) {
                       cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
                       canvas.showImage(img);
                   }
               } 
           } catch (Exception e) {}
       }
    }
    
    public class Main 
    {
           public static void main(String[] args) 
           {
               GrabberShow gs = new GrabberShow();
               Thread th = new Thread(gs);
               th.start();
           }
    }
    
  4. 希望这会有所帮助。