我需要在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格式保存音频文件?
答案 0 :(得分:2)
Java Sound API使用服务提供程序接口来识别编码器和编码器。声音格式和序列类型的解码器。这样,添加对新格式或类型的支持就像为它提供解码器和/或编码器一样简单,将SPI文件添加到它所在的Jar的清单中,然后将Jar添加到运行时类 - 应用程序的路径。 ...
从该页面进一步引用:
采样声音API的功能可以使用AudioSystem.getAudioFileTypes()
...
我认为如果迭代该方法返回的数组,您会发现未列出FLAC。解决方案是使用SPI添加FLAC编码器。