如何在Android设备上将WAV编码为mp3

我已经简化了我的问题,并提供了一个赏金:有什么select压缩原始PCMaudio数据到Android设备上的MP3。

我原来的post:我在我的Android手机上创build了一个合成器,我一直在生成PCM数据发送给扬声器。 现在我想知道如果我可以将这个PCM数据编码为一个MP3保存到SD卡。 MediaRecorder对象可以将来自麦克风的audio编码为各种格式,但不允许以编程方式生成的audio数据进行编码。

所以我的问题是,是否有一个标准的Android API编码audio? 如果不是,那么纯粹的基于Java或NDK的解决scheme在那里? 你能推荐他们吗?

如果没有这个,我只需要将我生成的audio保存为一个WAV文件,我可以轻松完成。

纯Java
看看Tritonus在这里提供一个MP3编码器插件的洁净室实施javasound: http : //www.tritonus.org/plugins.html
其次,我会build议寻找jzoom的库JLayer或JLayerME: http : //www.javazoom.net/javalayer/javalayer.html (这可能只是解码,不知道)
如果这些不适合你的需要,你可以看看2000年的这篇关于在J2SE中增加MP3function的文章(附源码): http : //www.javaworld.com/javaworld/jw-11-2000/jw-1103-mp3 html的

原生路线
如果你想“本地化”的performance,我会看Android的FFmpeg或Lame端口。 Lame: http : //lame.sourceforge.net/

据我所知,你不能只使用SDK中的工具。 根据官方开发人员指南,平台上没有MP3编码器( Android支持的媒体格式 ),因此您必须使用NDK自行移植编码器,然后编写一些包装代码以通过JNI接收audio样本。

目前,我正在为自己的音乐播放器从Rockbox项目中移植一些audio解码器,并且可以将audio录制到MP3中,所以也许您应该尝试查看源代码并find编码器库。 大多数解码器都具有ARM优化function,可以加快显示速度,所以我猜测一些编码器也有这个附加function。

Mp3编码器是不可用的android.you必须编译libav与MP3 lame lib你可以从http://libavandroid.wordpress.comfind代码;