2013-04-28 2 views
2

Я попытался имитировать код, найденный здесь https://stackoverflow.com/tags/javasound/info, но я не могу заставить его играть через loop() или start(). Я искал ответы, но похоже, что мой - это просто случайность или глупая ошибка, которую все остальные достаточно хорошо осознают.Воспроизведение звука в java не работает правильно

import javax.sound.sampled.*; 
import java.net.URL; 

public class AudioTest 
{ 
    public static void main(String[] args) throws Exception 
    { 
     URL url = new URL("http://www.public.asu.edu/~wnjones1/leftright.wav"); 
     Clip clip = AudioSystem.getClip(); 
     AudioInputStream audioIn = AudioSystem.getAudioInputStream(url); 
     clip.open(audioIn); 
     clip.start(); 
    } 
} 

В нем есть все, что на примере не хватает GUI, но это не имеет значения, не так ли? Он все равно должен играть хотя бы один раз?

Любая помощь будет высоко оценена. Спасибо!

--EDIT-- Это простой двухсекундный .wav-файл, который я вытягиваю с моего сайта. Я использую Java7u21.

--EDIT v2.0-- Так что в основном то, что я узнал, это ... Держите графический интерфейс. Или используйте апплет, чтобы не беспокоиться о завершении main().

import javax.swing.*; 

public class Assignment6me extends JApplet 
{ 
    private int APPLET_WIDTH = 400, APPLET_HEIGHT = 160; 

    private AudioPanel ap; 

    //The method init initializes the Applet with a Pane with two tabs 
    public void init() 
    { 
     try 
     { 
      ap = new AudioPanel(); 
     } 
     catch(Exception e) 
     {} 
     getContentPane().add(ap); 
     setSize (APPLET_WIDTH, APPLET_HEIGHT); //set Applet size 
    } 
} 



import java.net.URL; 
import javax.swing.*; 
import javax.sound.sampled.*; 
import java.io.File; 


public class AudioPanel extends JPanel 
{ 
    public AudioPanel() throws Exception 
    { 
     File file = new File("Don't Stop Believin'.wav"); 
     Clip clip = AudioSystem.getClip(); 
     // getAudioInputStream() also accepts a File or InputStream 
     AudioInputStream ais = AudioSystem.getAudioInputStream(file); 
     clip.open(ais); 
     clip.start(); 
    } 
} 
+0

Если вы хотите играть mp3 файл я имею в виду, используя Java, как J2SE сказать мне, что я могу помочь вам объяснить ваш вопрос мне, что вы хотите –

+0

Я обновил этот вопрос. Это WAV-файл, и я использую JavaSE7u21. –

+0

http://stackoverflow.com/a/3821685/2277645 попробуйте это, это полезно для вас? –

ответ

1

Источник (рабочий) источник, отображаемый в информации о звуке Java. страница точно.

import java.net.URL; 
import javax.swing.*; 
import javax.sound.sampled.*; 

public class LoopSound { 

    public static void main(String[] args) throws Exception { 
     URL url = new URL(
      "http://pscode.org/media/leftright.wav"); 
     Clip clip = AudioSystem.getClip(); 
     // getAudioInputStream() also accepts a File or InputStream 
     AudioInputStream ais = AudioSystem. 
      getAudioInputStream(url); 
     clip.open(ais); 
     clip.loop(Clip.LOOP_CONTINUOUSLY); 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       // A GUI element to prevent the Clip's daemon Thread 
       // from terminating at the end of the main() 
       JOptionPane.showMessageDialog(null, "Close to exit!"); 
      } 
     }); 
    } 
} 

Обращаю ваше внимание:

   // A GUI element to prevent the Clip's daemon Thread 
       // from terminating at the end of the main() 
       JOptionPane.showMessageDialog(null, "Close to exit!"); 

Добавить эту часть и она должна быть тонкой.


Так что я не могу играть любые файлы без графического интерфейса?

Я не могу вспомнить приложение на основе командной строки. это действительно звучит, но это возможно.

import java.net.URL; 
import javax.swing.*; 
import javax.sound.sampled.*; 
import java.util.Scanner; 

public class LoopSound { 

    public static void main(String[] args) throws Exception { 
     URL url = new URL(
      "http://pscode.org/media/leftright.wav"); 
     Clip clip = AudioSystem.getClip(); 
     // getAudioInputStream() also accepts a File or InputStream 
     AudioInputStream ais = AudioSystem. 
      getAudioInputStream(url); 
     clip.open(ais); 
     clip.loop(Clip.LOOP_CONTINUOUSLY); 
     Scanner scanner = new Scanner (System.in); 
     scanner.nextInt(); 
    } 
} 
+0

Я специально упустил графический интерфейс. Я предположил, что смогу сделать это без него. Поэтому я не могу играть в файлы без графического интерфейса? –

+0

Нет, я этого не говорил. См. Редактирование. Все, что вам нужно, - это то, что не позволяет прекратить «main (String)». И если вы вернетесь с * «Итак, я не могу играть песни без« Сканера »?» * Будьте предупреждены, что мне придется ударить вас по голове (это правило). –

+0

«Итак ... я не могу играть музыку без сканера?» Я ребенком. Но спасибо. Это делает больше смысла, почему графический интерфейс есть. –