在 java 中使用 AudioFormat 播放波形文件

Posted

技术标签:

【中文标题】在 java 中使用 AudioFormat 播放波形文件【英文标题】:Play wave file using AudioFormat in java 【发布时间】:2010-06-02 07:10:44 【问题描述】:

在 linux 操作系统上运行我的代码时出现以下异常。此代码在 windows 操作系统上运行良好。以下是异常和使用的代码。

java.lang.IllegalArgumentException: 没有行匹配接口剪辑支持格式 PCM_SIGNED 未知采样率,16 位,立体声,4 字节/帧,支持大端。

AudioFormat format = sourceaudio.getFormat();

format = new AudioFormat(
    AudioFormat.Encoding.PCM_SIGNED,
                format.getSampleRate(),
                format.getSampleSizeInBits() * 2,
                format.getChannels(),
                format.getFrameSize() * 2,
                format.getFrameRate(),
                true);

AudioFileFormat.Type targettype = AudioFileFormat.Type.WAVE;
AudioInputStream targetaudiostream = AudioSystem.getAudioInputStream(format, sourceaudio);

sourceaudio.close();
targetaudiostream.close();
System.out.println("55555555");

URL url = new URL("http://localhost:8084/newvideo/PCMfile.wav");
Clip clip = AudioSystem.getClip();
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
clip.open(ais);

System.out.println("seconds: " + (clip.getMicrosecondLength() / 1000000));

【问题讨论】:

【参考方案1】:

当在“设备管理器”中禁用音频设备时,我在 Windows 上遇到了同样的错误。我认为问题是 - 音频设备驱动程序,请尝试更新或重新安装它。

【讨论】:

以上是关于在 java 中使用 AudioFormat 播放波形文件的主要内容,如果未能解决你的问题,请参考以下文章

Java利用读写的方式实现音频播放

FFPlay播放pcm和yuv帧数据

FFPlay播放pcm和yuv帧数据

在android中播放音轨中的音频

如何使用 AudioTrack 生成和播放 20Hz 方波?

AudioFormat在android.media.AudioFormat中不公开