我试图模仿此处找到的代码 https://stackoverflow.com/tags/javasound/info但我无法通过 loop() 或 start() 使其播放。我一直在寻找答案,但似乎我的答案只是侥幸或愚蠢的错误,其他人都足够好地认识到。
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 的所有内容,但这无关紧要,不是吗?它应该至少还能播放一次,对吧?
任何帮助将不胜感激。谢谢!
--编辑-- 这是我从我的网站上提取的一个简单的两秒 .wav 文件。我正在使用 Java7u21。
--编辑 v2.0-- 所以基本上我学到的是......保留 GUI。或者使用 Applet,这样您就不必担心 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();
}
}
最佳答案
在 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!");
添加那部分应该没问题。
So I can't play any files without a GUI?
我想不起基于命令行的应用程序。确实会播放声音,但这是可能的。
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();
}
}
关于java - Java 中的音频播放无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16260038/