我用Java挣扎了很多,但无法将Java .wav的工作示例与.mp3转换器结合在一起。该转换器将用于Java小应用程序,因此它应该仅依赖于使用纯Java编写的库,而不需要基础的C代码调用。有没有任何纯java的方式将.wav转换为.mp3?
任何人都可以提供一个完整的工作示例吗?
谢谢
我用Java挣扎了很多,但无法将Java .wav的工作示例与.mp3转换器结合在一起。该转换器将用于Java小应用程序,因此它应该仅依赖于使用纯Java编写的库,而不需要基础的C代码调用。有没有任何纯java的方式将.wav转换为.mp3?
任何人都可以提供一个完整的工作示例吗?
谢谢
看了你的波形文件@http://java.sun.com/javase/technologies/desktop/media/jmf/ 和编码为MP3格式@http://openinnowhere.sourceforge.net/lameonj/
正如指出的那样,lameonj不是纯 Java解决方案。对于这个选项似乎并不多,但看到另一个SO问题:MP3 Encoding in Java
如果速度对你来说不重要,可以采取任何c实现MP3(例如lame)并尝试使用NestedVM编译为Java字节码。它会很慢(就像模拟器中的模拟器),但它应该工作。
而且它应该比尝试将MP3库移植到纯Java上的工作少。
另一个潜在的相关项目是jffmpeg。这显然是针对使用本机和Java编解码器的各种格式的JMF支持。从'格式'页面看,他们在纯Java方面取得了重大进展。不幸的是,这个项目已经过去了。
这不会在短期内直接帮助OP。但是如果他或其他人长期热衷于使用纯Java编解码器,请考虑参与其中。
只要看看下面的源代码。 http://jsidplay2.cvs.sourceforge.net/jsidplay2/jump3r 它仍在继续工作,但是一个基于纯java的lame库的编码器部分的工作示例。
见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未记录,这将需要一些研究
我使用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)
要转换的文件,你应该调用的主要方法(在下面的代码,我使用内嵌版本如果有必要赶上的主要方法/抛出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);
}
那么,你需要一个.way解码器,并用纯Java编写的MP3播放编码器。有这样的事吗?我对此表示怀疑。 – delnan 2011-02-14 22:19:40
[Java中的MP3编码]的可能重复(http://stackoverflow.com/questions/316612/mp3-encoding-in-java) – 2011-02-14 23:00:33
关闭,虽然这里的答案更有用 – 2011-02-15 08:26:32