标签: audioinputstream

使用 Java 增加/减少 AudioInputStream 的音频播放速度

使用 Java 进入复杂的音频世界我正在使用这个库,它基本上是我在 Github 上改进和发布的。

库的主类是StreamPlayer,代码有注释,简单易懂。


问题是它支持除速度增加/降低音频速度之外的许多功能假设当您更改视频速度时,就像 YouTube 所做的那样。

我不知道如何实现这样的功能。我的意思是,将音频写入采样率时我该怎么办targetFormat?我每次都必须一次又一次地重新启动音频....

AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, sourceFormat.getSampleRate()*2, nSampleSizeInBits, sourceFormat.getChannels(),
                nSampleSizeInBits / 8 * sourceFormat.getChannels(), sourceFormat.getSampleRate(), false);
Run Code Online (Sandbox Code Playgroud)

播放音频的代码是:

/**
 * Main loop.
 *
 * Player Status == STOPPED || SEEKING = End of Thread + Freeing Audio Resources.<br>
 * Player Status == PLAYING = Audio stream data sent to Audio line.<br>
 * Player Status == PAUSED = Waiting for another status.
 */ …
Run Code Online (Sandbox Code Playgroud)

java audio audioinputstream

1
推荐指数
1
解决办法
3916
查看次数

为什么,当调用一个方法时,它是否说我需要在我已经捕获它时捕获异常?

我有一个循环一些音频的类:

public class PlayGameMusic {
    public static void main(String[] args) throws Exception {
        try{
            AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("\\Users\\natal\\Desktop\\programs\\APCS\\Fill the Boxes.wav"));
            Clip clip = AudioSystem.getClip();
            clip.open(inputStream);
            clip.loop(Clip.LOOP_CONTINUOUSLY);
            Thread.sleep(10000);
        }
        catch(IOException error){System.out.println("IO Exception Error");}
        catch(InterruptedException error){System.out.println("InterruptedException");}
        catch(Exception error){System.out.print("System.out.println("Exception");");}
     }
}
Run Code Online (Sandbox Code Playgroud)

我可以编译这个方法,并且编译器不会报告任何错误(我已经使用print语句对其进行了测试).但是,当我尝试PlayGameMusic在另一个类中调用上面的class()的main方法时......

public class RunGame
{
    public static void main(String[] args)
    {
       PlayGameMusic.main(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

...我得到这个编译器错误:

unreported exception java.lang.Exception; must be caught or declared to be thrown
Run Code Online (Sandbox Code Playgroud)

我正在捕捉可能的异常,并且PlayGameMusic该类在单独运行时有效.为什么我不能从另一个班级打电话呢?

java exception javasound audioinputstream

0
推荐指数
1
解决办法
53
查看次数

标签 统计

audioinputstream ×2

java ×2

audio ×1

exception ×1

javasound ×1