gpt4 book ai didi

java - 如何在 Java 应用程序中播放 ALAW 文件?

转载 作者:行者123 更新时间:2023-11-30 11:53:46 26 4
gpt4 key购买 nike

我需要能够在 Java(桌面)应用程序中播放 ALAW 文件。我试图按照以下示例进行操作:

How to play audio in Java Application

我已经从 ALAW 文件(根据检查存在)创建了一个 File 对象,并将该 File 发送到一个方法,其中发生的第一件事是:

AudioInputStream ais = AudioSystem.getAudioInputStream(文件);

但这是执行停止的地方,因为我得到了这个异常:

javax.sound.sampled.UnsupportedAudioFileException: 无法从输入文件获取音频输入流

我发现如果检查 (ais.getFormat().getEncoding() == AudioFormat.Encoding.ALAW)true,则有一种方法可以转换 ALAW 文件>,但是如果连创建 AudioInputStream 都不可能,我怎么才能到达那里呢?

有人使用过 ALAW 文件并且知道我应该做什么吗?

有没有办法在调用 AudioSystem.getAudioInputStream(file) 之前以编程方式转换 ALAW 文件?

我真的需要完成这项工作!

最佳答案

从您的 AudioInputStream 获取现有文件格式:
filepath 是包含文件路径的 String,例如您获取的文件路径:

String filename="x.y";
File file = new File(filename);
String filepath=file.getCanonicalPath();

然后主要转换由:

AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(filepath));
AudioFormat format = inputStream.getFormat();
AudioInputStream convertedInputStream;

在那个 put 条件之后,它会检查你的文件编码是 alaw 还是 ulaw,并将其转换为 SoundCard 可以播放的 PCM:

if ((format.getEncoding() == AudioFormat.Encoding.ULAW) || (format.getEncoding() == AudioFormat.Encoding.ALAW))
AudioFormat tmp = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
format.getSampleSizeInBits() * 2,
format.getChannels(),
format.getFrameSize() * 2,
format.getFrameRate(), true);
convertedInputStream = AudioSystem.getAudioInputStream(tmp,inputStream);
format = tmp;}

此代码会将您的 AudioInputStream 的 ALAW/ULAW 格式转换为 PCM_SIGNED

关于java - 如何在 Java 应用程序中播放 ALAW 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6095426/

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