我有一个AudioInputStream audioInput,对象本身将其编码为ULAW。
System.out.println( audioInput.getFormat().getEncoding() ); 返回控制台中的ULAW编码。
ULAW但是,当我使用AudioSystem.getTargetEncodings( audioInput )时,它返回一组不同的编码
Encoding availableEncoding[] = AudioSystem.getTargetEncodings( audioIn.getFormat() );
for ( Encoding encode : availableEncoding )
{
System.out.println( encode );
}返回:
PCM_SIGNED问题是,我必须处理很多这样的文件,在这些文件中,对象和目标编码的编码不匹配。这些音频文件不能被AudioSystem剪辑打开并引发异常
Clip audioClip = AudioSystem.getClip();
audioClip.open( audioInput );
// this throws error javax.sound.sampled.LineUnavailableException: line with format ULAW 8000.0 Hz, 8 bit, mono, 1 bytes/frame, not supported.但是,如果我将音频转换为目标编码之一
audioInput = AudioSystem.getAudioInputStream( Encoding.PCM_SIGNED , audioInput);
audioClip.open( audioInput ); //it works !!虽然这种方法似乎适用于所有的声音文件工作,但我几乎没有足够的知识,我正在做什么。根据java文档,AudioSystem.getTargetEncodings描述是(万一可能有所帮助):
"Obtains the encodings that the system can obtain from an audio input stream with the specified format using the set of installed format converters."很抱歉有这么长的细节,但以下是我的问题:
发布于 2017-01-26 19:11:23
根据我到目前为止学到的:
但是对于我的音频用途(SF/X用于游戏提示-我遇到不同类型的文件),我倾向于将它们全部转换,外部使用Audacity,然后再将它们打包到游戏中,这样就不必在游戏中进行任何转换了。
https://stackoverflow.com/questions/41866599
复制相似问题