音频格式转换

我在转换WAV文件的音频格式时遇到麻烦。

我正在从麦克风录制声音,并且声音以以下格式录制:PCM_SIGNED 44100.0 Hz,16位,单声道,2字节/帧

我想将上述格式转换为ULAW 8000.0 Hz,8位,单声道,1字节/帧

我正在使用以下代码,

InputStream is = request.getInputStream(); 

AudioInputStream ais = AudioSystem.getAudioInputStream(is);

AudioFormat oldFormat = ais.getFormat();

AudioFormat newFormat = new AudioFormat(AudioFormat.Encoding.ULAW, 8000, 8, 1, 1, 8000, false) ;

AudioInputStream lowResAIS = AudioSystem.getAudioInputStream(newFormat, ais); //Getting the below Exception on this line

我收到以下错误,

java.lang.IllegalArgumentException:不支持的转换:ULAW 8000.0

Hz,8位,单声道,1字节/帧,来自PCM_SIGNED 44100.0 Hz,16位,单声道,2字节/帧,little-endian

有人可以帮我解决这个问题!!!

万分感谢!!!

回答:

您看过文档了吗?

:IllegalArgumentException-如果不支持该转换#see

getTargetEncodings(AudioFormat)

并非每个系统都会安装足够的编解码器以转换为您要求的特定格式。您已经假设了,但是会引发异常,因为它无法转换为该格式。

您可以通过getTargetEncodings编程方式检查给定格式的适用性,而无需依赖异常,然后如果您不希望使用所需的输出格式,则可以采取适当的措施(例如退回另一种格式,向用户提供有关这是不可能等)。

以上是 音频格式转换 的全部内容, 来源链接: utcz.com/qa/397468.html

回到顶部