JAVA视频会议的源代码 !!!
帮你up ,找到了一定共享呀。

解决方案 »

  1.   

    java来做这个。。
    应该是一个很大的项目
    而且采用java,可能会有效率上的问题,
      

  2.   

    /*
     * @(#)Vadio.java 1.0 04/01/29
     * @auther jaddy0302
     *
     * You can modify the template of this file in the
     * directory ..\JCreator\Templates\Template_1\Project_Name.java
     *
     * You can also create your own project template by making a new
     * folder in the directory ..\JCreator\Template\. Use the other
     * templates as examples.
     *
     */
    import java.awt.*;
    import java.awt.event.*;
    import javax.media.*;
    import java.util.*;
    import java.net.*;
    import javax.media.format.*;
    import javax.media.control.*;
    import javax.media.util.*;class Vadio extends Frame implements ControllerListener
    {
    Vector videoDevices; //所有视频设备的向量
        Vector devices; //所有视频、音频设备的向量
        CaptureDeviceInfo cdi; //截取视频设备信息
        VideoFormat videoFormat; //
        CaptureDeviceInfo videoCDI;
        CaptureDeviceInfo videoCDI21;
        String videoDeviceName;
        URL url=null;
       // VideoFormatChooser chooserVideo;
        Player videoPlayer;
        CaptureDeviceInfo ci;
        static Vadio contentPane=new Vadio();
        //从摄像头中读取数据流
    public static void main(String args[]) 
    {
    try
    {
    System.out.println("Starting Vadio...");
    contentPane.captureData();
    contentPane.setSize(400, 400);
    contentPane.setTitle("Vadio");
    contentPane.setVisible(true);
    }catch(Exception e)
    {
    e.printStackTrace();
    }
    }
        void captureData() {             videoCDI = CaptureDeviceManager.getDevice(
                "vfw:Microsoft WDM Image Capture (Win32):0");
            Vector deviceList = CaptureDeviceManager.getDeviceList(new VideoFormat(
                VideoFormat.YUV));
            System.out.println("sum .." + deviceList.size());
            if (deviceList.size() > 0) {
                videoCDI = (CaptureDeviceInfo) deviceList.firstElement();
            }
            else {
                System.out.println("over...");
                return;
            }
            Format[] cfmts = videoCDI.getFormats();
            for(int i=0;i<cfmts.length;i++)
            System.out.println(cfmts[i].getEncoding());
            MediaLocator loc = videoCDI.getLocator();
            //loc.getProtocol()
            try {
                videoPlayer = Manager.createPlayer(loc);
            }
            catch (Exception e) 
            {
             e.printStackTrace();
            }
            videoPlayer.start();        
            videoPlayer.addControllerListener(this);
                      } 
    //
        public synchronized void controllerUpdate(ControllerEvent event) 
        {
            if (videoPlayer == null) {
                return;
            }
            if (event instanceof RealizeCompleteEvent) {
                Component visualComponent = videoPlayer.getVisualComponent();
                if (visualComponent != null) {
                 System.out.println("test");
                    contentPane.add(visualComponent);
                }
                Component controlComponent = videoPlayer.getControlPanelComponent();
                if (controlComponent != null) {
                    contentPane.add(controlComponent);
                }
                pack();
            }
        }
    }
    这是一个完整的视频采集程序,如果有两个视频采集源,在数组中可以遍历,如果想同时将两个视频都显示出来,一定要注意要在不同的线程中启动,而且两个视频采集卡应该是不同类型的,不能有相同的标识符,如果相同则一定找不到,比如两个摄像头或两个同一厂家生产的数码相机,则JMF一定找不到另外一个。
      

  3.   

    劝你趁早放弃,jmf操作摄像头时还要在客户机上设置classpath,如果只是在服务器端也就算了,太麻烦了。
      

  4.   

    用java  applet来做就是了
      

  5.   

    to  hapybird(hapybird) :
    说的就是用Java applet做时要做在client上设置classpath,要加一个jmf.jar很麻烦.