【发布时间】:2012-08-13 18:06:03
【问题描述】:
我可以从Socket 接收字节数组。我需要播放这个字节数组中的音频——音频是用 AMR 8000Hz 编码的。
我发现我可以使用MediaPlayer 播放 AMR 音频。但是,MediaPlayer 无法播放字节数组中的音乐,我不想将它们写入文件。
有没有办法在 android 上播放字节数组中的 AMR 声音?
【问题讨论】:
我可以从Socket 接收字节数组。我需要播放这个字节数组中的音频——音频是用 AMR 8000Hz 编码的。
我发现我可以使用MediaPlayer 播放 AMR 音频。但是,MediaPlayer 无法播放字节数组中的音乐,我不想将它们写入文件。
有没有办法在 android 上播放字节数组中的 AMR 声音?
【问题讨论】:
Android 框架允许您使用AudioTrack 类直接从内存中播放音频数据;缺点是音频必须已经解码为 PCM 数据。如果您有幸以 Android 4.1 为目标,则有新的 API 允许您单独解码数据,以便将其传递给AudioTrack(请参阅MediaExtractor 和MediaCodec)。但是,在此之前,除了 MediaRecorder 和 MediaPlayer 之外,没有公开的编码/解码 API。
如果针对 4.1 之前的 Android 版本(我想您可能是),您有两种选择:
AudioTrack
MediaPlayer
HTH
【讨论】: