Προς το περιεχόμενο

Audio Recording in JAVA


Axelfc

Προτεινόμενες αναρτήσεις

Δημοσ.

Προσπαθω να κανω ενα προγραμμα σε java το οποιο θα μου επιτρεπει να καταγραφω σε αρχειο, wav η au, τον ηχο που ακουω απο τα ηχεια του υπολογιστη μου πχ. mp3 που παιζει με το winamp. Για την ωρα καταφερα να καταγραψω μονο τον ηχο που προερχεται απο το μικροφωνο το οποιο ομως δεν μου κανει. Κοιταξα το java sound api και το JMF αλλα δεν βρηκα κατι σχετικο... Ουτε και το google απεφερε καποιο αποτελεσμα... Εχει κανεις καμια ιδεα πως μπορει να γινει κατι τετοιο?

Δημοσ.

Το εχω σκεφτει αυτο που λες ouraniskos, αλλα δυστυχως μετα δεν θα μπορω να γραψω αν θελω συγχρονως και το μικροφωνο και τα ηχεια. Δεν ξερω και αν υπαρχει "ταυ" με δυο εισοδους και μια εξοδο... Anyway thanks για την ιδεα αλλα δε με βολευει σαν λυση.

 

Εχω φαει αρκετες μερες ψαχνοντας στο web και στα api της java, αλλα δεν εχω βρει ακομα τροπο να γραψω απο τα speakers. Εφτιαξα αυτο το προγραμματκι το οποιο μου δειχνει απο που επιτρεπεται εγγραφη (?) η ποιο στοιχειο μπορει να χρησιμοποιηθει. Αν καποιος εχει καποια ιδεα ας την πει...

>
import java.io.*;
import javax.sound.sampled.*;
import java.util.*;

public class Tester {

   public static void main(String[] args) {
       
       if (AudioSystem.isLineSupported(Port.Info.LINE_IN))
           System.out.println("\nLINE-IN is supported");
       else
           System.out.println("\nLINE-IN is NOT supported");

       if (AudioSystem.isLineSupported(Port.Info.LINE_OUT))
           System.out.println("LINE-OUT is supported");
       else
           System.out.println("LINE-OUT is NOT supported");

       if (AudioSystem.isLineSupported(Port.Info.SPEAKER))
           System.out.println("SPEAKER is supported");
       else
           System.out.println("SPEAKER is NOT supported");

       if (AudioSystem.isLineSupported(Port.Info.MICROPHONE))
           System.out.println("MICROPHONE is supported\n");
       else
           System.out.println("MICROPHONE is NOT supported\n");
       
       Mixer.Info[] mixerInfos;
       Mixer mixer;
       Line[] lines;
       Line.Info lInfo;
       
       mixerInfos = AudioSystem.getMixerInfo();
       for (int index=0; index<mixerInfos.length; index++)
       {
           System.out.println("Mixer: "+ mixerInfos[index].toString() + " " + mixerInfos[index].getDescription());
           mixer = AudioSystem.getMixer(mixerInfos[index]);
           System.out.println("mx: "+mixer);
           
           lines = mixer.getSourceLines();
           System.out.println("Line="+lines.length);
           
           for (int j=0; j<lines.length; j++)
           {
               lInfo = lines[j].getLineInfo();
               System.out.println("LineInfo: "+lInfo.toString());
           }
       }
   }
}

 

Οριστε και το output σε μενα.

>
C:\Projects\Tester>java Tester

LINE-IN is supported
LINE-OUT is NOT supported
SPEAKER is supported
MICROPHONE is supported

Mixer: ?????? ????????? ???????? ????, version Unknown Version Direct Audio Device: DirectSound Playback
mx: com.sun.media.sound.DirectAudioDevice@1389e4
Line=0
Mixer: Vinyl AC'97 Audio (WAVE), version Unknown Version Direct Audio Device: DirectSound Playback
mx: com.sun.media.sound.DirectAudioDevice@2e7263
Line=0
Mixer: ?????? ????????? ???????? ???????????, version Unknown Version Direct Audio Device: DirectSound Capture
mx: com.sun.media.sound.DirectAudioDevice@157f0dc
Line=0
Mixer: Vinyl AC'97 Audio (WAVE), version Unknown Version Direct Audio Device: DirectSound Capture
mx: com.sun.media.sound.DirectAudioDevice@863399
Line=0
Mixer: Java Sound Audio Engine, version 1.0 Software mixer and synthesizer
mx: com.sun.media.sound.HeadspaceMixer@a59698
Line=0
Mixer: Port Vinyl AC'97 Audio (WAVE), version 5.10 Port Mixer
mx: com.sun.media.sound.PortMixer@141d683
Line=0

Δημοσ.

Με ιδιαιτερη εποφυλαξη γι'αυτα που γραφω..νομιζω οτι μαλλον δεν μπορεις να το κανεις αυτο που θες..και μαλλον θα πρεπει να οδηγηθεις σε λυσεις JNI δηλαδη να καλεσεις κωδικα συστηματος (C, C++) ο οποιος θα σου παρεχει την συγκεκριμενη ευκολια1

 

παντα με επιφυλαξη!

Δημοσ.

Η επιφυλαξη σου javanidhs εχει γινει σχεδον πεποιθηση μου... Δε βλεπω να γινεται αυτο που θελω, οποτε ηδη εχω αρχισει να ψαχνω για κωδικα σε c/c++. Thanks σε ολους παντως.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...