【问题标题】:Play AAC buffer on Android在 Android 上播放 AAC 缓冲区
【发布时间】:2013-11-26 15:28:17
【问题描述】:

在 Android 中播放包含 AAC(在 MP4 容器中)的内存缓冲区是否有合理的方法?我无法将此缓冲区写入磁盘...必须从内存中播放。

似乎我唯一的选择是手动解码为 PCM 并使用 AudioTrack,因为 Android 不公开任何播放非 PCM 内存缓冲区的 API。 OpenSL ES 支持内存源,但 Android 没有实现这一点。

【问题讨论】:

  • Android 的 Java 是否提供了任何一种内存映射文件工具?我对这个平台不太熟悉,我正在四处寻找类似的东西。如果有这样一个类,并且它返回一个 FileDescriptor 对象,那么您应该能够将它传递给 MediaPlayer.setDataSource()。
  • 我不知道。您可以使用管道来获取文件描述符(可能需要在本机代码中完成),但文件描述符将不可搜索,因此无法对播放器正常工作。

标签: android audio aac


【解决方案1】:

我能找到的唯一方法是(如我的问题所示)手动解码 AAC。有一些适用于 Android 的包可以做到这一点,也许ffmpeg 是经过最充分测试和知名的。 ffmpeg 可以简化为一个 AAC 解码器,因此内存需求非常小(尽管将解码器引入本机已有解码器的设备令人沮丧)。

一旦 AAC 被解码为 PCM,就可以在 Java (AudioTrack) 或本机 (OpenSL ES) 中播放。原生选项的播放延迟明显较低,如果这对您很重要的话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多