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

Java 如何在Android设备上将WAV编码为mp3,java,android,encoding,mp3,wav,Java,Android,Encoding,Mp3,Wav,我简化了我的问题,并提供了一个悬赏: 在Android设备上将原始PCM音频数据压缩为mp3有哪些选项 我原来的帖子: 我在我的Android手机上创建了一个合成器,我一直在生成PCM数据发送到扬声器。现在,我想知道是否可以将此PCM数据编码为mp3以保存到SD卡。该对象可以将来自麦克风的音频编码为各种格式,但不允许对编程生成的音频数据进行编码 所以我的问题是,有没有标准的Android API来编码音频?如果没有,有哪些基于纯Java或NDK的解决方案?你能推荐其中任何一种吗 如果做不到这一点

我简化了我的问题,并提供了一个悬赏: 在Android设备上将原始PCM音频数据压缩为mp3有哪些选项

我原来的帖子: 我在我的Android手机上创建了一个合成器,我一直在生成PCM数据发送到扬声器。现在,我想知道是否可以将此PCM数据编码为mp3以保存到SD卡。该对象可以将来自麦克风的音频编码为各种格式,但不允许对编程生成的音频数据进行编码


所以我的问题是,有没有标准的Android API来编码音频?如果没有,有哪些基于纯Java或NDK的解决方案?你能推荐其中任何一种吗


如果做不到这一点,我只能将生成的音频保存为WAV文件,我可以很容易地做到。

据我所知,仅使用SDK中的工具无法做到这一点。根据官方的开发者指南,平台()中没有MP3编码器,因此您必须使用NDK自己移植一个编码器,然后编写一些包装代码通过JNI接收音频样本

我目前正在为我自己的音乐播放器移植Rockbox项目中的一些音频解码器,它可以将音频录制到MP3中,所以也许你应该尝试查看它的源代码并找到编码器库。大多数解码器都有ARM优化,这加快了显而易见的速度,所以我猜一些编码器也有这个附加功能。

纯Java
查看Tritonus的洁净室javasound实现,它提供了一个MP3编码器插件:
其次,我建议查看jzoom的库JLayer或JLayerME:(这可能只是解码,不确定)
如果这些不适合您的需要,您可以阅读这篇2000年的文章,内容是关于将MP3功能添加到J2SE(附带源代码):

原生路线
如果你想要“本机”性能,我会考虑Android的FFmpeg或Lame端口。
Lame:

android中没有Mp3编码器。您必须使用Mp3 Lame库编译libav,您可以从中找到代码

“所以我的问题是,有没有标准的Android API用于音频编码?”--没有。我将用
java
标签重新标记您的问题,以帮助您获得输入……仅供参考:MP3技术是专利技术,因此将其包含在商业应用程序中会使您面临潜在的诉讼。针对这一点,您最好的防御措施是不能成功地使用您的产品。:)是否还有另一种比mp3更开放的紧凑、受良好支持的(Android、Mac、Windows)格式?另外,mp3真的会因为使用这种格式而受到追捧吗?@VictorGrazi Ogg Vorbis audio(.Ogg)实际上是一种比mp3更好的格式(同时具有更低的文件大小和更高的音质),但使用较少。嗨,我在android上用录音机录制音频,结果输出格式是WAV。输出具有非常大的大小,例如1分钟的记录占用高达2mb的大小。我可以在使用tritonus罐子转换为mp3时缩小尺寸吗?如何在android上实现tritonus。请帮帮我。