【问题标题】:Playing audio from amr on Android在 Android 上播放来自 amr 的音频
【发布时间】:2012-08-13 18:06:03
【问题描述】:

我可以从Socket 接收字节数组。我需要播放这个字节数组中的音频——音频是用 AMR 8000Hz 编码的。

我发现我可以使用MediaPlayer 播放 AMR 音频。但是,MediaPlayer 无法播放字节数组中的音乐,我不想将它们写入文件。

有没有办法在 android 上播放字节数组中的 AMR 声音?

【问题讨论】:

    标签: android audio amr


    【解决方案1】:

    Android 框架允许您使用AudioTrack 类直接从内存中播放音频数据;缺点是音频必须已经解码为 PCM 数据。如果您有幸以 Android 4.1 为目标,则有新的 API 允许您单独解码数据,以便将其传递给AudioTrack(请参阅MediaExtractorMediaCodec)。但是,在此之前,除了 MediaRecorderMediaPlayer 之外,没有公开的编码/解码 API。

    如果针对 4.1 之前的 Android 版本(我想您可能是),您有两种选择:

    • 为 AMR 数据查找第 3 方解码器,以便将其传递给 AudioTrack
    • 将您的数据保存到文件中(即使是临时的),以便将其交给MediaPlayer

    HTH

    【讨论】:

    • 谢谢,我也是这么想的。您知道任何将 AMR 解码为 PCM 的第三方库吗?
    • 谷歌搜索拉出了这个。看起来它可能是本机代码,所以您需要 NDK:sourceforge.net/projects/opencore-amr
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    相关资源
    最近更新 更多