【问题标题】:How to write FLAC files in java如何在java中编写FLAC文件
【发布时间】:2011-11-19 23:16:08
【问题描述】:

我需要用 java 编写 FLAC 文件。早些时候我将音频输入写入 WAV 文件,然后使用外部转换器将其转换为 FLAC 文件

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

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

请提出可以解决我的问题的方法或 API。

【问题讨论】:

  • 不知道JFlac是否支持编码为FLAC。在news page,他们说“当前不支持编码器”。也许javaflacencoder 可以工作?
  • 下载它并检查它.. 但我查看了 javadocs,它说编码函数将对给定的输入 wav 文件进行编码。有没有办法将麦克风发出的原始数据直接写入 flac 格式。提前致谢。 :)
  • 我自己从未使用过 javaflacencoder,但猜测你会使用 FlacEncoder 类作为初学者,看起来你可以给它提供样本。如果您不希望输出进入文件,您可能还必须编写自己的 FLACOutputStream 实现。
  • (顺便说一下,这是一个猜测,基于我使用编码器 FLAC 的经验)我认为您不能将恒定的音频流编码为 FLAC。我很确定您必须从源文件进行转换。我的假设是基于这样的想法,即 FLAC 首先需要一个文件来压缩,然后在解压缩原始文件时重新创建(很像 zip、rar、7z 或 tar 作品)

标签: java audio wav audio-streaming


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您想更改采样率, 使用 ffmpeg 像这样 ffmpeg -i sourcefile.wav -ar 16000 targetfile.flac

    【讨论】:

    • 这不是问题的答案。 OP 正在询问如何在 Java 中创建 FLAC 文件。
    【解决方案3】:

    您可以使用this 库。这是一个使用版本 0.2.3 (javaFlacEncoder-0.2.3-all.tar.gz) 的简单示例。提取下载的文件,然后将 javaFlacEncoder-0.2.3.jar 导入到您的项目中。如需更多文档,请参阅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");
        }
    }
    

    【讨论】:

    • 希望您不时关注 Stackoverflow。你知道 javaFlacEncoder 是否也适用于 Android 环境。
    • 不,我只知道以上。
    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 2010-11-03
    相关资源
    最近更新 更多