【问题标题】:Is there a way to re-encode an MP3 or any other audio file in Android?有没有办法在 Android 中重新编码 MP3 或任何其他音频文件?
【发布时间】:2011-02-23 04:04:36
【问题描述】:

我有一个源 MP3 文件,但不知道它有多少个通道或采样率。我需要对其重新编码,以便生成的文件是单声道和 8kHz 采样率。格式不重要,只要 MediaPlayer 可以播放。 SDK 中有什么东西可以让我这样做吗?

【问题讨论】:

    标签: android audio mp3 encode


    【解决方案1】:

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

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

    http://mindtherobot.com/blog/580/android-audio-play-a-wav-file-on-an-audiotrack/

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

    【讨论】:

    • 是的,这正是我想要做的。我会查看您引用的帖子,但实际上我不需要实时转码——我可以下载 MP3(通常很小,不到 1 分钟),然后将其转换为任何其他可以播放的格式英国电信。
    • 在同一个博客上还有一篇文章是用 MP3 做的:mindtherobot.com/blog/624/…
    • 我可能完全错了,因为我已经很久没有尝试过了,但我认为问题是你必须在手机特定的频道上播放它,并且(至少在时间)MediaPlayer 不会让你这样做。我认为这就是我采用 AudioTrack 方法的原因。
    • 我已经玩了一段时间了,我肯定需要它作为一个文件结束——所以 AudioTrack 不起作用。我查看了 JLayer,但这似乎不允许下采样到 8000 Hz。我将发布另一个问题,看看是否可以进行下采样
    【解决方案2】:

    AFAIK 没有。

    似乎没有办法使用 MediaPlayer/MediaRecorder 对 MP3 进行转码(假设...除非您正在寻找低质量的转码,即使用 MediaPlayer 播放 MP3 文件并设置 MediaRecorder 进行录制无论是通过麦克风传来的声音 - 其中一些音频是您正在播放的 MP3)。

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

    【讨论】:

    • 这不需要实时完成,但必须在手机上完成。是否有任何第三方库(如 LAME)可以做到这一点?我在市场上看到了一个LAME编码器,但是不知道代码是从哪里来的。
    • 这只是解决方案的一部分。我怀疑 LAME 会接受大多数 Android 设备用于录音的 AMR-NB 格式。您可以考虑通过 NDK 将一些 C/C++ 音频转码软件移植到 Android 并通过 JNI 连接到 Java 端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多