gpt4 book ai didi

java - 无法创建 AudioData 对象?

转载 作者:行者123 更新时间:2023-11-30 04:58:40 25 4
gpt4 key购买 nike

我的代码有问题,每次运行项目时都会抛出此问题。现在我已经将范围缩小到当我调用 play() 方法时声音确实播放,但当我调用 playL() 方法时声音不播放。

package net.chrypthic.Ball;
import sun.audio.*;
import java.io.*;

public class SoundManager {

AudioPlayer ap = AudioPlayer.player;
AudioStream as;
ContinuousAudioDataStream loop = null;
public SoundManager(String music)
{
try
{
InputStream input = new FileInputStream("./"+music);
as = new AudioStream(input);
AudioData ad = as.getData();
loop = new ContinuousAudioDataStream(ad);
}catch(Exception e)
{
System.out.println(e.getMessage());
}
}
public void play()
{
ap.start(as);
}
public void stop()
{
ap.start(as);
}
public void playL()
{
ap.start(loop);
}
public void stopL()
{
ap.start(loop);
}
}
为什么?我将 sound/gsong1b.wav 传递给它,它的大小为 6.2MB,长度为 2 分钟,比特率为 16000Hz。我听说声音必须小于 4mb 大,但它可以播放,并且只有在循环时才会出现错误......任何帮助将不胜感激。

最佳答案

您使用的那些类(AudioPlayer、AudioStream)即使来自官方 Java JDK,实际上也是保留类,这意味着 Oracle(以及之前的 Sun)保留更改它们的权利,恕不另行通知。您应该使用官方声音 API:

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

//...

public static void main(String[] args) throws Throwable {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(SoundManager.class.getResourceAsStream("C://temp/my.mp3"));
clip.open(inputStream);
clip.start();
}

关于java - 无法创建 AudioData 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com