Riproduzione di un suono in java.

di Anonimizzato25038 il
4 risposte
Sto cercando di simulare il funzionamento di un lettore di dischi. Sto programmando la parte iniziale, quella dove riproduco la musica, mi riesce tutto ma solo con il path del file per intero, e vorrei importare il file da riprodurre (.wav) dentro il progetto così da poterlo richiamare senza path, si può fare?
ECCO IL CODICE:
-dichiarazioni


AudioInputStream audio;
Clip clip;

-btnplay


private void btnplayActionPerformed(java.awt.event.ActionEvent evt) {                                        
        
        musica();
        
}  

-musica()


public void musica() {
    try {
        audio = AudioSystem.getAudioInputStream(new File("musica.wav").getAbsoluteFile());
        clip = AudioSystem.getClip();
        clip.open(audio);
        clip.start();
    } catch(IOException | LineUnavailableException | UnsupportedAudioFileException ex) {
        System.out.println("Errore nella riproduzione, controllare il formauto audio o la presenza di esso");
    }
}

4 Risposte

  • Non vedo perchè no.
    Metti il tuo file all'interno di un package e lo recupererai come qualsiasi altra risorsa che sia in class-path:

    Supponiamo che il tuo file audio sia nel package "pippo.pluto.paperino" e che la classe dove è contenuto il metodo musica() si chiami "Musica" (ovunque essa si trovi):
    
    try {
       audio = AudioSystem.getAudioInputStream( Musica.class.getResourceAsStream("/pippo/pluto/paperino/musica.wav") );
       ...
    }
    
  • Grazie per la risposta. Ho risolto.
    Ultima cosa, ho provato a cercare su internet qualcosa ma non trovo niente, esiste un metodo per poter rilevare il tempo al quale la riproduzione si è fermata e nel caso rifarla ripartire dal punto fermato?
    Mi spiego meglio:
    mando la canzone in play. La stoppo. Ora se voglio farlo ripartire dal punto in cui ho fermato come faccio?
    Pensavo esistesse un metodo per poter rilevare il momenti in cui hai fermato il tempo, e un metodo per far ripartire l'audio al minutaggio che decido io.
  • Premetto che non ho mai lavorato con file audio, ma dalla documentazione vedo che la classe Clip possiede i metodi:

    - getFramePosition() / getLongFramePosition() che dovrebbe restituire la posizione attuale della riproduzione audio/video
    - setFramePosition(int frames) che dovrebbe posizionare la Clip a quel determinato frame.

    Immagino ti servano questi metodi.
  • Grazie mille, per avermi dedicato del tempo.
    Da qui me la sbrigo da solo.
Devi accedere o registrarti per scrivere nel forum
4 risposte