0

我正在使用 javasound 并有一个 AudioInputStream 格式 PCM_SIGNED 8000.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian

当target_formatAudioSystem.getAudioInputStream(target_format, original_stream)PCM_SIGNED 8000.0 Hz, 16 bit, mono, 2 bytes/frame, little-endian

是否可以在每次 read() 调用后手动转换此流?如果是,如何?
一般来说,您如何比较两种格式并判断是否可以进行转换?

4

1 回答 1

0

是否可以在每次 read() 调用后手动转换此流?如果是,如何?

我不确定你想做什么,但这似乎没有必要。实际创建音频输入流后,缓冲数据并进行格式转换会更有意义。

在我看来,您正在从立体声切换到单声道以尝试保存数据传输大小。您可以通过适当的编码(到 GSM、mu-law 或 A-law)来实现相同的目的。请注意,您可能需要一个插件来实现此转换。更多信息: Java 声音资源

可以在每次 read() 调用后转换流,但如果您的流无法转换,则它无法转换。

一般来说,您如何比较两种格式并判断是否可以进行转换? 您定义了两种格式并使用 AudioSystem 检查是否可以进行转换。

boolean bConversionSupported = AudioSystem.isConversionSupported(targetFormat, sourceFormat);
于 2010-05-21T12:25:16.553 回答