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

2022-09-01 02:09:05

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

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

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

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


答案 1

纯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

Native route
如果您想要“原生”性能,我会查看Android的FFmpeg或Lame端口。瘸腿: http://lame.sourceforge.net/


答案 2

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

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


推荐