Lire les fichiers .wav

Contenu du snippet

Cette classe permet de lire les fichiers .wav, de les mettre en pause, et de les reprendre en cours de lecture sans bloquer l'OS.

Source / Exemple :


 package util;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import sun.audio.AudioPlayer;
import sun.audio.AudioStream;
import controleur.Parametres;

public class Wav {
	
	/** url : adresse du fichier wav */
	private String url;
	
	/** son : le son correspondant, nécéssairement final car Audio player est un Thread*/
	private final AudioStream son;
	
	/**
	 * Constructeur
	 * @param url : adresse du fichier Wav
	 * @throws IOException 
	 * @throws FileNotFoundException 
	 */
	public Wav(String url) throws FileNotFoundException, IOException{
		this.setUrl(url);
		this.son=new AudioStream(new FileInputStream(this.getUrl()));
	}

	public void play(){
		AudioPlayer.player.start(this.son);
	}

	public void pause(){
		AudioPlayer.player.stop(this.son);
	}
	
	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public AudioStream getSon() {
		return son;
	}
	
	public static void main(String[] args){
		// Modifier ici l'adresse du fichier wav
		String url="fichier.wav";
		
		final Wav wav;
		try {
			wav = new Wav(url);
			
			JFrame f = new JFrame();
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			
			JPanel p=new JPanel(new GridLayout(1,2,1,1));
			JButton boutonPlay = new JButton("Play");
			boutonPlay.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					wav.play();
				}
			});
			JButton boutonPause = new JButton("Pause");
			boutonPause.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e) {
					wav.pause();  
				}

			});
			p.add(boutonPlay);
			p.add(boutonPause);
			f.setContentPane(p);
			f.validate();
			f.setSize(500,500);
			f.setVisible(true);
			
		}
		catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		catch (IOException e) {
			e.printStackTrace();
		}	
	}	
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.