Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在Android中对MP3或任何其他音频文件重新编码?_Android_Audio_Mp3_Encode - Fatal编程技术网

有没有办法在Android中对MP3或任何其他音频文件重新编码?

有没有办法在Android中对MP3或任何其他音频文件重新编码?,android,audio,mp3,encode,Android,Audio,Mp3,Encode,我有一个源MP3文件,不知道它有多少个频道,或者采样率。我需要对其重新编码,以便生成的文件是单声道和8kHz采样率。只要MediaPlayer可以播放,格式就不重要了。SDK中是否有允许我执行此操作的内容。您是否尝试通过蓝牙耳机播放它 不久前我尝试过,但没有使用MediaPlayer。相反,我使用了一种更像这里的方法: 我能够通过蓝牙获得单声道音频,但这真的很痛苦。由于这个应用程序只是个人使用,我最终决定买一个更好的蓝牙耳机,支持新的立体声音频标准。使用立体声耳机,您根本不需要编写任何代码——

我有一个源MP3文件,不知道它有多少个频道,或者采样率。我需要对其重新编码,以便生成的文件是单声道和8kHz采样率。只要MediaPlayer可以播放,格式就不重要了。SDK中是否有允许我执行此操作的内容。

您是否尝试通过蓝牙耳机播放它

不久前我尝试过,但没有使用MediaPlayer。相反,我使用了一种更像这里的方法:

我能够通过蓝牙获得单声道音频,但这真的很痛苦。由于这个应用程序只是个人使用,我最终决定买一个更好的蓝牙耳机,支持新的立体声音频标准。使用立体声耳机,您根本不需要编写任何代码——只需打开蓝牙,与设备同步,就完成了。

AFAIK no

似乎没有一种方法可以使用MediaPlayer/MediaRecorder对MP3进行转码(假设……除非您正在寻找低质量的转码,即使用MediaPlayer播放MP3文件,并设置MediaRecorder以录制通过麦克风输入的任何内容-其中一些音频将是您正在播放的MP3)


在本地桌面计算机上对MP3文件进行转码是最好的选择。

是的,这正是我要做的。我会查看你引用的帖子,但实际上我不需要实时转码——我可以下载一个MP3(通常很小,不到1分钟长),然后将其转换为任何其他格式,通过BT播放。同一个博客上还有一篇帖子是关于MP3的:我可能完全错了,因为我已经很久没有试过了,但我认为问题是你必须在特定于手机的频道上播放,而且(至少在当时)MediaPlayer不允许你这样做。我想这就是为什么我选择了AudioTrack的方法。我已经尝试了一段时间,我确实需要它作为一个文件结束——所以AudioTrack不起作用。我查看了JLayer,但这似乎不允许将采样降低到8000 Hz。我将发布另一个问题,看看下采样是否可行。这不需要实时完成,但必须在手机上完成。是否有任何第三方库(如LAME)可以做到这一点?我在市场上看到了一个蹩脚的编码器,但无法找出代码的来源。这只是解决方案的一部分。我怀疑LAME是否会接受大多数Android设备用于录音的AMR-NB格式。您可以考虑通过NDK将一些C/C++音频转码软件移植到Android,并通过JNI将接口移植到Java端。