java - Java 中的音频播放无法正常工作

标签 java audio javasound

我试图模仿此处找到的代码 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/

相关文章:

c++ - 使用哪个 c++ 免费库来捕获麦克风声音并将其保存为 wav

java - 无法在 jarfile 内播放声音

ios - 检测连接的音频设备 iOS

java - 如何获得音频文件播放?

java - 用Java读取24位单声道PCM

java - 添加到列表时出现 NullPointerException

java - J2ME 2D - 碰撞检测

java - while 循环再次开始后不要求输入

java - 使用MyBatis调用oracle函数(基于注解)

android - 如何播放安卓通知声音