Есть ли разумный способ воспроизведения буфера памяти, содержащего AAC (в контейнере MP4) в Android? Я не могу записать этот буфер на диск... он должен быть воспроизведен из памяти.
Похоже, что мой единственный вариант - декодировать в PCM вручную и использовать AudioTrack, поскольку Android не предоставляет API, который воспроизводит буферы памяти, отличные от PCM. OpenSL ES поддерживает источники памяти, но Android не реализует это.
Единственный способ найти, что это (как указано в моем вопросе), вручную декодировать AAC. Есть несколько пакетов для Android, которые делают это, возможно, ffmpeg
является самым проверенным и хорошо известным. ffmpeg
можно отделить до только AAC-декодера, так что потребность в памяти довольно мала (хотя это разочаровывает введение декодера в устройство, которое уже имеет один изначально).
Как только AAC декодируется в PCM, его можно воспроизводить на Java (AudioTrack
) или изначально (OpenSL ES). Задержка воспроизведения заметно ниже для опции native, если это имеет значение для вас.