Exibir video da WebCan com Servlet ou Aplet

Ola amigos do Forum, estou comecando agora a estudar Java para Web, tenho um software que trabalha com reconhecimento de imagem atravez do fluxo de video desenvolvido J2SE, agora estou tentando, disponibilizar alguns funcionalidades dele para web a intencao e enviar o fluxo de video do capturado da webcam do servidor para o cliente, mas primeiro estava tentando so capturar o fluxo de video do cliente mesmo para alguns testes e nem isso estou conseguindo :(.

Montei um JavaAplet que captura o video , mas quando executo o html do aplet no navegador ai ele nao consegue capturar:

public class JAppletTeste extends javax.swing.JApplet {

    /** Initializes the applet JAppletTeste */
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jTextFieldX = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();

        jLabel1.setText("X");
        jLabel1.setName("jLabel1"); // NOI18N

        jTextFieldX.setText("      ");
        jTextFieldX.setName("jTextFieldX"); // NOI18N

        jLabel2.setText("Y");
        jLabel2.setName("jLabel2"); // NOI18N

        jTextField1.setText("      ");
        jTextField1.setName("jTextFieldY"); // NOI18N

        jButton1.setText("jButton1");
        jButton1.setName("jButton1"); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("jButton2");
        jButton2.setName("jButton2"); // NOI18N
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jPanel1.setName("jPanel1"); // NOI18N

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 268, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 238, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 39, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel2)
                            .addComponent(jLabel1))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jTextFieldX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(36, 36, 36)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel1)
                            .addComponent(jTextFieldX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(30, 30, 30)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel2)
                            .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addComponent(jButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButton2))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(51, Short.MAX_VALUE))
        );
    }// </editor-fold>
public javax.media.Player getPlayer(){
		return player;
	}

	public javax.swing.JPanel getJPanelVideo() {
		if (jPanel1 == null) {
			jPanel1 = new javax.swing.JPanel();
			//jPanel1.setLayout(new javax.swing.GridBagLayout());
			//jPanel1.setLocation(new Point(3, 3));
			//jPanelVideo.setSize(new Dimension(800, 480));
			getJPlayer().setVisible(true);
                        jPanel1.add(getJPlayer());}

		return jPanel1;
	}

          public void addVideo(){
        getJPlayer().setVisible(true);
                        jPanel1.add(getJPlayer());
                        //jPanel1.re
        }

public java.awt.Component getJPlayer() {
		if (jPlayer == null) {

			try
			    {
				//AKI que esta meu codigo de captura do Video
Vector deviceList = CaptureDeviceManager.getDeviceList(new YUVFormat());

				device = (CaptureDeviceInfo) deviceList.firstElement();

		   //System.out.println("a::"+device);

				ml = device.getLocator();


				player = Manager.createRealizedPlayer(ml);

				player.start();

				jPlayer = player.getVisualComponent();
				//jPlayer.addMouseListener(new EventosDeMouseNoComponent());
                                jPlayer.setVisible(true);
						      }
			catch (Exception e)
		    {
			      e.printStackTrace();
			    }

			jPlayer.setBounds(0,0,640,480);

		}
		return jPlayer;
	}

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
  FabricaDeTemplate F= FabricaDeTemplate.Getinstance(getPlayer());
                  F.SalvaImagem("d://imagem.jpg");
        // TODO add your handling code here:
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
this.getJPlayer();
this.addVideo();
        // TODO add your handling code here:
    }

    public CaptureDeviceInfo device;
   public javax.media.MediaLocator ml;
    private java.awt.Component jPlayer;
    private javax.media.Player player;
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextFieldX;
    // End of variables declaration

}

Espero que possam me ajudar.