如何从麦克风中捕获音频并将其保存为Java中的FLAC文件格式类型?

时间:2012-01-10 13:58:37

标签: java audio javasound

我需要在java中创建一个简单的应用程序,它从麦克风中捕获一些音频,并使用FLAC将其保存在文件中。我找到了教程: http://www.developer.com/java/other/article.php/2105421/Java-Sound-Capturing-Microphone-Data-into-an-Audio-File.htm, 但我需要在flac音频中保存文件,所以我添加了jFLAC库,我只是在做:

AudioSystem.write(new AudioInputStream(targetDataLine), FlacFileFormatType.FLAC, new File("junk.flac"));

但我得到一个例外:

java.lang.IllegalArgumentException: could not write audio file: file type not supported: FLAC
at javax.sound.sampled.AudioSystem.write(AudioSystem.java:1346)
at pl.com.stream.snippet.concurentmap_test.AudioRecorder02$CaptureThread.run(AudioRecorder02.java:211)

是否有任何示例或教程,如何在Java中以flac格式保存音频文件?

1 个答案:

答案 0 :(得分:2)

来自info. page on JavaSound

服务提供商接口

Java Sound API使用服务提供程序接口来识别编码器和编码器。声音格式和序列类型的解码器。这样,添加对新格式或类型的支持就像为它提供解码器和/或编码器一样简单,将SPI文件添加到它所在的Jar的清单中,然后将Jar添加到运行时类 - 应用程序的路径。 ...

从该页面进一步引用:

Java声音功能

采样声音API的功能可以使用AudioSystem.getAudioFileTypes() ...

等方法获得

我认为如果迭代该方法返回的数组,您会发现未列出FLAC。解决方案是使用SPI添加FLAC编码器。