Riproduzione di un suono in java.

di il
4 risposte

Riproduzione di un suono in java.

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

  • Re: Riproduzione di un suono in java.

    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") );
       ...
    }
    
  • Re: Riproduzione di un suono in java.

    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.
  • Re: Riproduzione di un suono in java.

    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.
  • Re: Riproduzione di un suono in java.

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