Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Riprodurre file audio in applicazione java?

    Salve. Come posso riprodurre dei file audio in java? Ho questo esempio funzionante ma è valido solo per le applet, ma io vorrei sapere come fare per riprodurre audio in un'applicazione normale con JFrame...

    codice:
    import java.applet.AudioClip;
    import java.awt.event.ItemListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.FlowLayout;
    import javax.swing.JApplet;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    
    public class Sound extends JApplet
    {
    	private AudioClip sound1, sound2, currentSound;
    	private JButton play, loop, stop;
    	private JComboBox sound;
    	
    	public void init()
    	{
    		setLayout (new FlowLayout());
    		
    		String[] choices = {"Suono 1", "Suono 2"};
    		
    		sound = new JComboBox (choices);
    		
    		sound.addItemListener
    		(
    			new ItemListener()
    			{
    				public void itemStateChanged (ItemEvent event)
    				{
    					currentSound.stop();
    					currentSound = sound.getSelectedIndex() == 0 ? sound1 : sound2;
    				}
    			}
    		);
    		add (sound);
    		
    		ButtonHandler handler = new ButtonHandler();
    		
    		play = new JButton ("Play");
    		play.addActionListener (handler);
    		add (play);
    		
    		loop = new JButton ("Loop");
    		loop.addActionListener (handler);
    		add (loop);
    		
    		stop = new JButton ("Stop");
    		stop.addActionListener (handler);
    		add (stop);
    		
    		sound1 = getAudioClip (getDocumentBase(), "bu.wav");
    		sound2 = getAudioClip (getDocumentBase(), "miami69.wav");
    		currentSound = sound1;
    	}
    	
    	public void stop()
    	{
    		currentSound.stop();
    	}
    	
    	private class ButtonHandler implements ActionListener
    	{
    		public void actionPerformed (ActionEvent event)
    		{
    			if (event.getSource() == play)
    				currentSound.play();
    			else if (event.getSource() == loop)
    				currentSound.loop();
    			else if (event.getSource() == stop)
    				currentSound.stop();
    		}
    	}
    }

  2. #2
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  3. #3
    Proprio ora sul libro ho ricopiato un esempio con le Java Media Framework:

    codice:
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.io.IOException;
    import java.net.URL;
    import javax.media.CannotRealizeException;
    import javax.media.NoPlayerException;
    import javax.media.Manager;
    import javax.media.Player;
    import javax.swing.JPanel;
    
    public class MediaPanel extends JPanel
    {
    	public MediaPanel (URL mediaURL)
    	{
    		setLayout (new BorderLayout());
    		
    		Manager.setHint (Manager.LIGHTWEIGHT_RENDERER, true);
    		
    		try
    		{
    			Player mediaPlayer = Manager.createRealizedPlayer (mediaURL);
    			
    			Component video = mediaPlayer.getVisualComponent();
    			Component controls = mediaPlayer.getControlPanelComponent();
    			
    			if (video != null)
    				add (video, BorderLayout.CENTER);
    			
    			if (controls != null)
    				add (controls, BorderLayout.SOUTH);
    			
    			mediaPlayer.start();
    		}
    		catch (NoPlayerException exception)
    		{
    			System.err.println ("Non e' stato trovato un riproduttore multimediale");
    		}
    		catch (CannotRealizeException exception)
    		{
    			System.err.println ("Errore riproduttore multimediale");
    		}
    		catch (IOException exception)
    		{
    			System.err.println ("Errore durante la lettura");
    		}
    	}
    }
    codice:
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    
    public class MediaTest
    {
    	public static void main (String[] args)
    	{
    		JFileChooser fileChooser = new JFileChooser();
    		
    		int result = fileChooser.showOpenDialog (null);
    		
    		if (result == JFileChooser.APPROVE_OPTION)
    		{
    			URL mediaURL = null;
    			
    			try
    			{
    				mediaURL = fileChooser.getSelectedFile().toURL();
    			}
    			catch (MalformedURLException exception)
    			{
    				System.err.println ("L'URL potrebbe non essersi creato per il file");
    			}
    			
    			if (mediaURL != null)
    			{
    				JFrame mediaTest = new JFrame ("Media Tester");
    				mediaTest.setSize (300, 300);
    				mediaTest.setLocationRelativeTo (null);
    				mediaTest.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    				
    				mediaTest.add (new MediaPanel (mediaURL));
    				
    				mediaTest.setVisible (true);
    			}
    		}
    	}
    }
    Mi dice di ricompilare con -Xlint perchè ha trovato qualcosa di deprecato, infatti compilando con -Xlint mi trova questa riga come deprecata: mediaURL = fileChooser.getSelectedFile().toURL();

    Dicendomi che il metodo toURL è deprecato o_O Essendo un warning riesco comunque ad avviare e ad eseguire correttamente il programma. Ma è normale un warning del genere? C'è modo per evitarlo?

  4. #4
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    non ne sono sicuro ma prova con new URL("file://"+fileChooser.getSelectedFile().getPath());
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  5. #5
    Originariamente inviato da Metflar
    non ne sono sicuro ma prova con new URL("file://"+fileChooser.getSelectedFile().getPath());
    Così non mi da nessun warning ma non riesco a caricare gli mp3... invece come prima riesco a leggere anche gli mp3! Ma come si spiega questo? Alla fine comunque c'è un oggetto URL o_O

  6. #6
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da Dreamer89
    Così non mi da nessun warning ma non riesco a caricare gli mp3... invece come prima riesco a leggere anche gli mp3! Ma come si spiega questo? Alla fine comunque c'è un oggetto URL o_O
    prova con 'file:///' :master:
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  7. #7
    Così funziona! :O Ma come è possibile? Cosa cambiava una sbarra in meno? o_O

  8. #8
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da Dreamer89
    Così funziona! :O Ma come è possibile? Cosa cambiava una sbarra in meno? o_O
    http://www.mozilla.org/quality/netwo...filetests.html
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    riprendo una conversazione ormai terminata da anni,sorry
    scusa ma con questo codice cosa riesci a riprodurre?gli mp3?io ho seguito la vostra conversazione e sono riuscito ad avviare il programma,mi si apre il fileChooser e mi fa scegliere il file,scelgo una canzone mp3 si avvia il "riproduttore" MediaTest ma è come se non partisse,in pratica non parte con l'audio della canzone...perchè?
    Ps. non dà alcuna eccezzione,nè errore di compilazione nè nnt,solo non riproduce l'audio...

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    a parte che è praticamente vietato continuare discorsi vecchi (l'autore del post chissà se ricorda pure di averlo scritto), la problematica in questione non tiene conto del fatto che usi la libreria JMF che supporta file audio /video e che QUASI TUTTI sistematicamente non guardano la javadoc in cui ESPLICITAMENTE la oracle indica i formati supportati

    Aspettati a breve la chiusura del post

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.