java怎么写摄像头获取的视频流

发布网友

我来回答

3个回答

热心网友

摄像头获取到的数据其实都是一帧一帧的图片,任何语言不仅仅是java都可以对这些数据进行处理,但是Java不是最佳的选择。
针对这些图片你首先要知道摄像头是否对视频流使用了压缩技术,例如:H263\H2或者是没有压缩过的。
如果是压缩过的,你需要先对每一帧进行解编码(DECODE),然后就是一张图了,你进行你要做的编辑,然后再编码(ENCODE),再放入视频流中。
C语言开发的视频处理软件是cstream,你可以看一看,这个是通道式处理,添加插件,处理每一个buffer,一个buffer就是一帧,同时也可以处理多种格式的音频。
对视频的编辑不是简简单单就能实现的,需要对算法有很好的了解。

热心网友

public class video  
{    
    public static void main(String[] args) throws Exception   
    {   
  
        final String savedImageFile = "d:\\my.jpg";   //拍摄所存储的文件  
        OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);    
        grabber.start();   //开始获取摄像头数据  
        IplImage image =grabber.grab(); //将所获取摄像头数据放入IplImage  
          
        int width = image.width();    
        int height = image.height();  
        final BufferedImage bImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);    
        Graphics2D bGraphics = bImage.createGraphics();                         
          
        CanvasFrame canvas = new CanvasFrame("Camera",1);  
        canvas.setCanvasSize(width, height);    
          
        canvas.getCanvas().addMouseListener(new MouseAdapter(){    
                public void mouseClicked(MouseEvent e){         
                  try{  
                     ImageIO.write(bImage, "jpg", new File(savedImageFile));//数据写入my.jpg  
                     }   
                  catch (IOException e1){  
                    // TODO Auto-generated catch block  
                    e1.printStackTrace();  
                    }    
               }  
            });  
       while(canvas.isVisible() && (image=grabber.grab()) != null){    
        canvas.showImage(image);   
        bGraphics.drawImage(image.getBufferedImage(),null,0,0);   
        }  
          
            cvReleaseImage(image);       
            grabber.stop();    
            canvas.dispose();       
    }  
      
}

热心网友

JMF 可以有,这个程序请百度 JMF 摄像头 了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com