如何在java中编写FLAC文件

我需要在java中编写FLAC文件。 之前我将音频输入写入WAV文件,然后使用外部转换器将其转换为FLAC文件

我正在研究JFlac以找到可以通过其编写FLAC文件的任何API。 我发现java中的AudioFileFormat.TYPE仅支持以下文件格式 – AIFC,AIFF,SND,AU,WAVE。

我想有一种方法可以从麦克风中捕获音频,并使用Audiosystem.write等API将其写入FLAC文件而不是WAV文件。

请建议可以解决我的问题的方法或API。

你可以使用这个 lib。 这是一个使用0.2.3版本的简单示例(javaFlacEncoder-0.2.3-all.tar.gz)。 解压缩已下载的文件,然后将javaFlacEncoder-0.2.3.jar导入到项目中。 有关更多文档,请参阅此处 :

package fr.telecomParisTech; import java.io.File; import javaFlacEncoder.FLAC_FileEncoder; public class SoundConverter { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub FLAC_FileEncoder flacEncoder = new FLAC_FileEncoder(); File inputFile = new File("hello.wav"); File outputFile = new File("hello.flac"); flacEncoder.encode(inputFile, outputFile); System.out.println("Done"); } } 

可以使用javaflacencoder将音频流直接写入FLAC文件:

 AudioSystem.write(audioInputStream, FLACFileWriter.FLAC, new File("E:\\temp.flac")); 

如果要更改采样率,请使用ffmpeg,ffmpeg -i sourcefile.wav -ar 16000 targetfile.flac