有没有纯java的方法可以将.wav转换成.mp3?

有没有纯java的方法可以将.wav转换成.mp3?,java,audio,mp3,wav,Java,Audio,Mp3,Wav,我在Java方面做了很多工作,但无法结合Java.wav到.mp3转换器的工作示例。这个转换器将在Java小程序中使用,因此它应该只依赖于用纯Java编写的库,而不需要底层的C代码调用 有人能提供一个完全有效的例子吗 谢谢阅读您的wave文件@ 并将其编码为mp3@ 正如所指出的,lameonj不是一个纯java解决方案。为此,选项似乎不多,但请看另一个问题:如果速度对您来说并不重要,请使用MP3的任何c实现(例如lame),并尝试将其编译为Java字节码。它会很慢(就像模拟器中的模拟器),但应

我在Java方面做了很多工作,但无法结合Java.wav到.mp3转换器的工作示例。这个转换器将在Java小程序中使用,因此它应该只依赖于用纯Java编写的库,而不需要底层的C代码调用

有人能提供一个完全有效的例子吗

谢谢

阅读您的wave文件@ 并将其编码为mp3@


正如所指出的,lameonj不是一个纯java解决方案。为此,选项似乎不多,但请看另一个问题:

如果速度对您来说并不重要,请使用MP3的任何c实现(例如lame),并尝试将其编译为Java字节码。它会很慢(就像模拟器中的模拟器),但应该可以工作


与尝试将MP3库移植到纯Java相比,这应该是一项少很多的工作。

另一个可能相关的项目是。这显然是为了让JMF支持使用本机和Java编解码器的多种格式。从“格式”页面判断,他们在纯Java方面取得了重大进展。不幸的是,这个项目已经陷入了沉默


这在短期内对OP没有直接帮助。但是如果他或其他人渴望长期使用纯java编解码器,考虑参与进来。

< P>只需检查下面的源代码。
这项工作仍在进行中,但它是纯基于java的lame库的编码器部分的一个工作示例。

请参阅SourceForge上的此链接

它的JAR是唯一的(没有源代码),但它在PC和Android上都能工作,但不一定像作者在文章中描述的那样

我只是将jump3r-1.0.3.jar文件作为一个库来使用并实例化了它 然后使用名为mp3.run()的mp3.Main e、 g.我的Android代码的一部分

String[] mp3Args = {"--preset","standard",
            "-q","0",
            "-m","s",
            Environment.getExternalStorageDirectory().getPath()+"/myfile.wav",
            Environment.getExternalStorageDirectory().getPath()+"/myfile.mp3"};
    Main m = new mp3.Main();
    try
    {
        m.run(mp3Args);
    }
    catch(Exception e)
    {
        System.out.println("ERROR processing MP3 " + e);// Some bug in Android seems to cause error BufferedOutputSteam is Closed. But it still seems to work OK.
    }   

我怀疑可以直接调用lame编码器传递数据缓冲区等,但由于没有记录此Java版本的确切API,因此需要进行一些研究

我在项目中使用Jump3r将wav转换为mp3,因为IE11的html5播放器无法播放wav文件

Jump3r是在tomcat servlet中运行的最简单的解决方案。我无法集成像jave这样的其他解决方案,当然是因为安全经理。。。Jump3r是一个纯java程序

Jump3r在maven存储库()上可用,源代码在github()上可用

要转换文件,应该调用main方法(在下面的代码中,如果需要,我使用main方法的内联版本来捕获/抛出IOException)


嗯,您需要一个.way解码器和一个用纯Java编写的.mp3编码器。有这样的事吗?我对此表示怀疑。可能是close的重复,虽然这里的答案比需要本地LAME二进制代码的答案有用得多,但我想我会将您的答案与NestedVM答案结合起来谢谢,看起来这是我唯一的选择。Jump3r还处理字节数组。如果您正在寻找纯java,这是一个不错的选择。
private void convertWavFileToMp3File(File source, File target) throws IOException {
    String[] mp3Args = { "--preset","standard",
        "-q","0",
        "-m","s",
        source.getAbsolutePath(),
        target.getAbsolutePath()
    };
    (new Main()).run(mp3Args);
}