Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2010, 15:56
fermdp
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 11 meses
Puntos: 0
Agregar vumetro y control de volumen a este applet

Hola, tengo una consulta algo "atrevida", trabajo generalmente en php y mysql pero de tanto andar en los foros surgen ideas y con ellas ando tratando de ponerlas en práctica, buscado logré dar con lo que mas o menos buscaba, crear un applet que pueda grabar el microfono del usuario en un browser y este pueda mandar el archivo del mismo (en este un .wav) al servidor esto "medianamente" lo logro, pero quiero mejorar dicho applet agregandole un control de volumen y un vumetro para que pueda ver si esta correcto el nivel de grabacion del microfono. Espero se entienda lo que quiero, lo que tengo es un applet con un boton grabar y parar que toma el audio del microfono del usuario y genera un archvo wav en la computadora del mismo usuario luego este adjuntaria ese archivo para enviarlo al server, pero me falta resolver lo del control de volumen y el vumetro!!!
Alguién puede darme un empujoncito, un tutorial una ayuda!!! Les aclaro que java no es lo mio, pero le pongo ganas!!!

Aqui les dejo el fuente de lo que tengo realizado.
Desde ya muchas gracias
Código PHP:
package CapturarMic;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;

public class 
CapturarMic extends JApplet{

  
AudioFormat audioFormat;
  
TargetDataLine targetDataLine;

  final 
JButton captureBtn = new JButton("Capturar");
  final 
JButton stopBtn = new JButton("Parar");

  final 
JPanel btnPanel = new JPanel();
  final 
ButtonGroup btnGroup = new ButtonGroup();
  final 
JRadioButton aiffBtn = new JRadioButton("AIFF");
  final 
JRadioButton waveBtn = new JRadioButton("WAV",true);

  public 
void initString args[]){
    new 
CapturarMic();

  }

  public 
CapturarMic(){
    
captureBtn.setEnabled(true);
    
stopBtn.setEnabled(false);

    
captureBtn.addActionListener(
      new 
ActionListener(){
        public 
void actionPerformed(
                                  
ActionEvent e){
          
captureBtn.setEnabled(false);
          
stopBtn.setEnabled(true);

          
captureAudio();
        }
      }
    );

    
stopBtn.addActionListener(
      new 
ActionListener(){
        public 
void actionPerformed(
                                  
ActionEvent e){
          
captureBtn.setEnabled(true);
          
stopBtn.setEnabled(false);

          
targetDataLine.stop();
          
targetDataLine.close();
        }
      }
    );

    
getContentPane().add(captureBtn);
    
getContentPane().add(stopBtn);

    
btnGroup.add(aiffBtn);
    
btnGroup.add(waveBtn);

    
btnPanel.add(aiffBtn);
    
btnPanel.add(waveBtn);

    
getContentPane().add(btnPanel);

    
getContentPane().setLayout(new FlowLayout());
    
setSize(300,220);
    
setVisible(true);
  }

  private 
void captureAudio(){
    try{
      
audioFormat getAudioFormat();
      
DataLine.Info dataLineInfo =
                          new 
DataLine.Info(
                            
TargetDataLine.class,
                            
audioFormat);
      
targetDataLine = (TargetDataLine)
               
AudioSystem.getLine(dataLineInfo);

      new 
CaptureThread().start();
    }catch (
Exception e) {
      
e.printStackTrace();
      
System.exit(0);
    }
  }

  private 
AudioFormat getAudioFormat(){
    
float sampleRate 44100.0F;
    
int sampleSizeInBits 16;
    
int channels 1;
    
boolean signed true;
    
boolean bigEndian false;
    return new 
AudioFormat(sampleRate,
                           
sampleSizeInBits,
                           
channels,
                           
signed,
                           
bigEndian);
  }

class 
CaptureThread extends Thread{
  public 
void run(){
    
AudioFileFormat.Type fileType null;
    
File audioFile null;

    if(
aiffBtn.isSelected()){
      
fileType AudioFileFormat.Type.AIFF;
      
audioFile = new File("prueba.aif");
    }else if(
waveBtn.isSelected()){
      
fileType AudioFileFormat.Type.WAVE;
      
audioFile = new File("c:/test1/testfermdp.wav");
    }

    try{
      
targetDataLine.open(audioFormat);
      
targetDataLine.start();
      
AudioSystem.write(
            new 
AudioInputStream(targetDataLine),
            
fileType,
            
audioFile);
    }catch (
Exception e){
      
e.printStackTrace();
    }
  }
}

__________________
:) Fernando Dichiera (:
[email protected]