Registrazione audio in chiamata

Provy

Nuovo Utente
6 Mar 2010
13
0
0
Salve a tutti, devo fare un applet che registri l'audio in una chiamata voip... Fino al catturare l'audio dal microfono ci sono, nessun problema.. Ma come si fa con l'audio dalle casse/cuffie?? Sono 3 giorni che mi danno!!:incazz: Qualcuno può darmi una mano??
Grazie in anticipo!!
 

luigi777

Utente Attivo
14 Feb 2008
1.085
1
38
39
Massa, Italy
ciao, che sistema usi ? ubuntu e semplice devi mettere l'ingresso ad Line-in, se non mi ricordo male,

e questo è il mio codice che mi hanno aiutato ad fare su ubuntu-it.

capture.java
Codice:
public class Capture{
  public static void main(String args[]) {
    CaptureFrame frame = new CaptureFrame();
    frame.pack();
    frame.setSize(400,400);
    frame.setVisible(true);
  }
}

CaptureFrame.java
Codice:
import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.sound.sampled.*;
import javax.sound.sampled.spi.AudioFileWriter;
import javax.swing.*;

import com.sun.media.sound.WaveFileWriter;

public class CaptureFrame extends JFrame {

    private static  final long serialVersionUID = 1L;
    protected boolean running;
    ByteArrayOutputStream out;

    public CaptureFrame() {
        super("Capture Sound Demo");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container content = getContentPane();
    
        final JButton capture = new JButton("Capture");
        final JButton stop = new JButton("Stop");
        final JButton play = new JButton("Play");
        final JButton save = new JButton("Save");
    
        capture.setEnabled(true);
        stop.setEnabled(false);
        play.setEnabled(false);
        save.setEnabled(false);
    
        capture.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                capture.setEnabled(false);
                stop.setEnabled(true);
                play.setEnabled(false);
                save.setEnabled(false);
                captureAudio();
            }
        });
        content.add(capture, BorderLayout.NORTH);
    
        stop.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                capture.setEnabled(true);
                stop.setEnabled(false);
                play.setEnabled(true);
                save.setEnabled(true);
                running = false;
            }
        });
        content.add(stop, BorderLayout.CENTER);
    
        play.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                playAudio();
            }
        });
    
        save.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                saveAudio();
            }
        });
        content.add(save, BorderLayout.EAST);
        content.add(play, BorderLayout.SOUTH);
    }

    private void captureAudio() {
        try {
            final AudioFormat format = getFormat();
            DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
            final TargetDataLine line = (TargetDataLine)AudioSystem.getLine(info);
            line.open(format);
            line.start();
            Runnable runner = new Runnable() {
                int bufferSize = (int)format.getSampleRate() * format.getFrameSize();
                byte buffer[] = new byte[bufferSize];
            
                public void run() {
                    out = new ByteArrayOutputStream();
                    running = true;
                    try {
                        while (running) {
                            int count = line.read(buffer, 0, buffer.length);
                            if (count > 0) {
                                out.write(buffer, 0, count);
                            }
                        }
                        out.close();
                    } catch (IOException e) {
                        System.err.println("I/O problems: " + e);
                        System.exit(-1);
                    }
                }
            };
            Thread captureThread = new Thread(runner);
            captureThread.start();
        } catch (LineUnavailableException e) {
            System.err.println("Line unavailable: " + e);
            System.exit(-2);
        }
    }

    private void playAudio() {
        try {
            byte audio[] = out.toByteArray();
            InputStream input = new ByteArrayInputStream(audio);
            final AudioFormat format = getFormat();
            final AudioInputStream ais = new AudioInputStream(input, format, audio.length / format.getFrameSize());
            DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
            final SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
            line.open(format);
            line.start();
        
            Runnable runner = new Runnable() {
                int bufferSize = (int) format.getSampleRate() 
                * format.getFrameSize();
                byte buffer[] = new byte[bufferSize];
            
                public void run() {
                    try {
                        int count;
                        while ((count = ais.read(
                            buffer, 0, buffer.length)) != -1) {
                            if (count > 0) {
                                line.write(buffer, 0, count);
                            }
                        }
                        line.drain();
                        line.close();
                    } catch (IOException e) {
                        System.err.println("I/O problems: " + e);
                        System.exit(-3);
                    }
                }
            };
            Thread playThread = new Thread(runner);
            playThread.start();
        } catch (LineUnavailableException e) {
            System.err.println("Line unavailable: " + e);
            System.exit(-4);
        } 
    }

    private void saveAudio() {
        File file = new File("./test.wav");
        try {
            byte audio[] = out.toByteArray();
            InputStream input = new ByteArrayInputStream(audio);
            final AudioFormat format = getFormat();
            final AudioInputStream ais = new AudioInputStream(input, format, audio.length / format.getFrameSize());
            final AudioFileWriter afw = new WaveFileWriter();
            afw.write(ais, AudioFileFormat.Type.WAVE, file );
            ais.close();
        } catch (IOException e) {
            System.err.println("Impossibile salvare il file '"+file+"': " + e);
            System.exit(-4);
        }
    }

    private AudioFormat getFormat() {
        float sampleRate = 8000;
        int sampleSizeInBits = 8;
        int channels = 1;
        boolean signed = true;
        boolean bigEndian = true;
        return new AudioFormat(sampleRate,sampleSizeInBits, channels, signed, bigEndian);
    }
}

vedi devi fare cosi:
javac *.java
java Capture.

quando fai Salva di fa un file Test.wav nella solita cartella.

vedi se ti è utile,
un po di codice lo trovato nei siti inglesi.

saluti.
luigi.
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Plugin per Registrazione Utente e Pagamento prodotto WordPress 2
T Modificare ruolo utenti in fase di registrazione E-Commerce 0
G Registrazione utente su pagina asp Classic ASP 13
F [PHP]Errore registrazione PHP 8
R Obbligare all'utente un pagamento al momento della registrazione PHP 3
A [PHP] registrazione utente in un database sql con confronto PHP 1
E Problemi in registrazione telecamere Dahua IP Cam e Videosorveglianza 6
A [PHP] Controllo nome utente form di registrazione PHP 4
Tommy03 Generare file PHP dopo registrazione PHP 2
G [PHP] Revisione codice per registrazione PHP 8
B Data Registrazione Dominio Domini 1
B [PHP] Mail di Avvenuta registrazione PHP 4
S registrazione video su dvr in caso di rilevamento di movimento IP Cam e Videosorveglianza 12
Laskot [Javascript] Registrazione e salvataggio utenti in LocalStorage Javascript 8
V Domande: registrazione sito fonti esterne SEO e Posizionamento 0
M registrazione in relazione ai commenti Programmazione 0
damiano.f [PHP] variabili su immagine e registrazione dati su db PHP 0
X__WELBO__X [css] form registrazione utente HTML e CSS 9
marino51 problema con registrazione al forum Supporto Mr.Webmaster 4
L [PHP] Registrazione/Logina la psw deve contenere.. PHP 3
G [WordPress] Redirect dopo registrazione WordPress 0
ANDREA20 [PHP] problema registrazione PHP 50
P [PHP] come criptare una password in un form di registrazione PHP 4
S Vecchio articolo registrazione utenti, errore MySQL PHP 2
M Sito "e-commerce", stampare dati di registrazione e dati dell'acquisto da pagine diverse PHP 7
S appinventor, aggiungere tasto registrazione Sviluppo app per Android 1
M problema registrazione nuovi utenti su pagine asp Classic ASP 1
S email di registrazione e Plugin WP Mail SMTP WordPress 0
F form registrazione PHP 3
F Codic e php visibile su form registrazione utenti PHP 2
matteoraggi Contratto per registrazione domini internet e servizio di hosting Domini 1
L errore mysql per form di registrazione PHP 3
D Form Registrazione con conferma via email - problema PHP 10
M problema mostrare data di registrazione formattata in italiano PHP 8
P Problema con file di registrazione in php, non funziona e dà continui errori PHP 0
M pagina registrazione con mail contenente link di attivazione profilo PHP 1
felino [Wordpress] Plugin iscrizione / registrazione WordPress 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
M Creazione sito con autenticazione utente (registrazione) PHP 3
I Registrazione con Ajax Ajax 1
L Form di registrazione e log in. PHP 2
I Parte di una registrazione con ajax Javascript 1
I sostituzione registrazione PHP 1
I registrazione (SESSION) PHP 5
A Pulsanti login e registrazione PHP 3
I registrazione PHP 1
I problema registrazione PHP 11
I registrazione sicura PHP 13
I Bloccare registrazione Javascript 1
I Registrazione PHP PHP 14

Discussioni simili