2015-07-25 8 views
0

Я пытаюсь использовать «Trail: Sound» от Oracle, и я попал в эту часть. https://docs.oracle.com/javase/tutorial/sound/playing.html#113609 «Использование зажима»В Java воспроизведение аудио с помощью клипа не работает без сообщений об ошибках

Ну, я старался следовать указаниям, которые не совсем конкретны, и я сделал код, который кажется, что он должен работать. Это в основном соответствует примерам, которые я нашел в Интернете, которые работают для других людей. На моей машине ничего не происходит, когда программа заканчивается без воспроизведения звука сразу после его запуска. Он не говорит никаких ошибок.

import javax.sound.sampled.AudioSystem; 
import javax.sound.sampled.Line; 
import javax.sound.sampled.LineUnavailableException; 
import javax.sound.sampled.Clip; 
import javax.sound.sampled.AudioFormat; 
import java.io.File; 
import javax.sound.sampled.AudioFileFormat; 
import javax.sound.sampled.UnsupportedAudioFileException; 
import java.io.IOException; 
import javax.sound.sampled.AudioInputStream; 
class Demo{ 
    public static void main(String[] args) throws LineUnavailableException, UnsupportedAudioFileException, IOException{ 
    File file = new File("song1.wav"); 
    AudioFileFormat audioFileFormat = AudioSystem.getAudioFileFormat(file); 
    AudioFormat audioFormat = audioFileFormat.getFormat(); 
    javax.sound.sampled.DataLine.Info dataLineInfo = new javax.sound.sampled.DataLine.Info(Clip.class,audioFormat); 
    Line theLine = AudioSystem.getLine(dataLineInfo); 
    Clip clip = (Clip)theLine; 
    AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file); 
    clip.open(audioInputStream); 
    clip.start(); 
    } 
} 

EDIT: Я выяснил после clip.start() Мне нужно было держать программу открытой.

ответ

0

Я использую этот класс, чтобы играть MP # звуков и работает для меня

import java.io.BufferedInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStream; 
import javazoom.jl.player.Player; 
import monitorbixao.Main; 

/** 
* 
* @author C007329 
*/ 
public class MusicPlayer extends Thread { 

    private File music; 
    private Player player; 

    public MusicPlayer(File music) { 
     this.music = music; 
    } 


    @Override 
    public void run() { 
     play(); 
    } 

    public void play() { 
     try { 
      FileInputStream stream = new FileInputStream(music); 
      BufferedInputStream buffer = new BufferedInputStream(stream); 
      this.player = new Player(buffer); 
      //System.out.println("Executando..."); 
      this.player.play(); 
      //System.out.println("Terminado"); 
     } catch (Exception e) { 
      //System.out.println("Erro!"); 
      Main.logApp.addMsgLog(MusicPlayer.class.getCanonicalName(), e.getMessage()); 
      e.printStackTrace(); 
     } 
    } 

    public void close() { 
     this.player.close(); 
     //System.out.println("Interrompido..."); 
    } 
} 
+0

Я пытаюсь использовать класс клип, как в учебнике. – user28775

0

Я понял это. Мне нужно было открыть программу так после «clip.start()»; Я добавил этот код

java.io.Console c = System.console(); 
    if (c == null) { 
     System.err.println("No console."); 
     System.exit(1); 
    } 
String nothing = c.readLine("Wait... "); 

: D