2010-09-04 84 views
39

我简化了我的问题并提供了赏金: 有什么选择将原始PCM音频数据压缩到Android设备上的mp3上。如何在Android设备上将WAV编码为MP3

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

所以我的问题是,有没有一个标准的Android API编码音频?如果不是,那么基于Java或NDK的解决方案有哪些?你能推荐他们吗?

失败这我只需要将我生成的音频保存为一个WAV文件,我很容易做到这一点。

+0

找到代码“所以我的问题是,是否有音频编码标准的Android API ?” - 没有。我将使用'java'标记重新标记您的问题,以尝试帮助您获得输入... – CommonsWare 2010-09-04 11:49:29

+0

感谢CommonsWare。 – bramp 2010-09-04 12:44:39

+6

供参考:MP3技术已获得专利,因此将其包含在商业应用程序中会使您遇到潜在的诉讼。对此的最佳防御是对您的产品不成功。 :) – MusiGenesis 2011-02-03 13:17:46

回答

31

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

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

+1

嗨,我用AudioRecorder在Android上录制音频,并生成输出格式为WAV。输出具有非常大的尺寸,前1分钟记录占用2mb大小。我可以减小尺寸,同时使用tritonus罐子转换为mp3吗?如何在android上实现tritonus。请帮帮我。 – 2012-06-27 07:22:55

9

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

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