可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a requirement to write FLAC files in java. Earlier I was writing the audio input into a WAV file and then converting it to FLAC file using a external converter
I was looking into JFlac to find any API through which I can write FLAC files. I found that AudioFileFormat.TYPE in java supports only the following file formats - AIFC, AIFF, SND, AU, WAVE .
I would like to have a method where I can capture the audio from the microphone and, using an API such as Audiosystem.write, write it to a FLAC file instead of WAV file.
Please suggest a method or an API that can solve my problem.
回答1:
You can use this lib. Here is a simple example using version 0.2.3 (javaFlacEncoder-0.2.3-all.tar.gz). Extract the dowloaded file, and then import javaFlacEncoder-0.2.3.jar to your project. For more documentation, see here:
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"); } }
回答2:
You can write audio stream directly to a FLAC file with javaflacencoder:
AudioSystem.write(audioInputStream, FLACFileWriter.FLAC, new File("E:\\temp.flac"));
回答3:
If you want to change sample rates, use ffmpeg like this ffmpeg -i sourcefile.wav -ar 16000 targetfile.flac