有没有任何纯java方式将.wav转换为.mp3?

我在Java方面遇到了很多困难,但无法将Java .wav的工作示例与.mp3转换器结合起来。 此转换器将在Java applet中使用,因此它应仅依赖于使用纯Java编写的库,而不依赖于底层C代码调用。

有人能提供一个完整的例子吗?

谢谢

阅读您的wave文件@ http://java.sun.com/javase/technologies/desktop/media/jmf/并编码为mp3 @ http://openinnowhere.sourceforge.net/lameonj/

正如所指出的,lameonj不是纯粹的 java解决方案。 为此,选项看起来并不多,但请看另一个问题: Java中的MP3编码

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

并且它应该比尝试将MP3库移植到纯Java更少工作。

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

Jump3r是在tomcat servlet中运行的最简单的解决方案。 由于安全管理器,我无法整合像jave这样的其他解决方案…… Jump3r是一个纯java程序。

Jump3r在maven存储库( https://mvnrepository.com/artifact/de.sciss/jump3r/1.0.4 )上可用,源代码可在github上获得( https://github.com/Sciss/jump3r

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

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); } 

另一个可能相关的项目是jffmpeg 。 这显然是为了使用本机和Java编解码器支持各种格式的JMF。 从“格式”页面来看,他们在纯Java方面取得了重大进展。 不幸的是,该项目已经变得安静。

这不会在短期内直接帮助OP。 但是,如果他或其他人渴望长期拥有纯Java编解码器,请考虑参与其中。

在SourceForge上查看此链接http://sourceforge.net/projects/jump3r/files/

它的JAR是唯一的(没有源代码),但它确实适用于PC和Android,但不一定如作者在http://pure-java-mp3-encoder.blogspot.com.au/上所述。

我通过使用jump3r-1.0.3.jar文件作为库来实现它,并实例化mp3.Main然后使用名为mp3.run()的例子,例如我的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,因此需要进行一些研究