java实现视频通话

        首先来确定一下基本思路

  一、显示阶段

      1、打开摄像头,获得一张BufferedImage1,并获得他的宽、高

      2、根据宽,高实例化一个BufferedImage2

      3、把BufferedImage1上的每一个像素点画到BufferedImage2上

      4、把BufferedImage2画到窗体上

二、发送阶段

      1、BufferedImage的本质是一个二维数组,我们把二维数组写到输出流,发送

三、接受阶段

      把数组字节流转换为一张图片,画到窗体上

发送端:

	        //打开默认摄像头,webcam 是一个Webcam类,需要大家提前下载好
                webcam=Webcam.getDefault();
		webcam.setViewSize(WebcamResolution.VGA.getSize());
		webcam.open();

                  while(true) {
			//从摄像头获取一张图片
			BufferedImage img=webcam.getImage();/
			if(img!=null) {
				//字节数组输出流
				ByteArrayOutputStream bos=new ByteArrayOutputStream();
                                //获得他的宽 、高
				int width=img.getWidth();
				int height=img.getHeight();
				
				//处理后的照片
				BufferedImage img2=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
				Graphics g2=img2.getGraphics();
				for(int i=0;i<width;i+=special) {//把img的每个颜色转移到img2上
					for(int j=0;j<height;j+=special) {
						int rgb=img.getRGB(i, j);
						Color c=new Color(rgb);
					
						g2.setColor(new Color(c.getRed(),c.getGreen(),c.getBlue()));
						g2.drawLine(i, j,i, j);
					}
			}
				
				//把图片写入bos输出流
				try {
                                        //ImageIO可以直接把img写到bos中
					ImageIO.write(img,"jpg",bos);
					g.drawImage(img2 ,0 , 0, null);//把img2画到窗体上
					
					byte[] bytes=bos.toByteArray();//直接把数组输出流转给换位数组
					//此处是我自己的方法,把bytes发送给对方
                                        sa=SendApp.getInstance();
					sa.sendVideoData(bytes);
					
					
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
		  }
			
	   }

接收端

private void DrawCapture(byte[] buffer) {
		
		//字节数组输入流
		ByteArrayInputStream bis=new ByteArrayInputStream(buffer);
		
		try {
			//直接将字节数组输入流转换为依照图片
			BufferedImage recvImg=ImageIO.read(bis);
			VideoMessage.g.drawImage(recvImg, 0, 500, null);


		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
发布了22 篇原创文章 · 获赞 2 · 访问量 5444

猜你喜欢

转载自blog.csdn.net/qq_43135849/article/details/97286984