захват/рендеринг звука в собственном коде на Android

Я пытаюсь прояснить мою путаницу в том, как захватывать и воспроизводить звук с использованием собственного кода на платформе Android. Я слышал, что существует API для аудио под названием OpenSL. Есть ли какие-либо рекомендуемые руководства и учебные пособия о том, как его использовать?

Кроме того, есть ли хорошие звуковые оболочки для OpenSL, такие как оболочка OpenAL или что-то в этом роде? Я разработал звуковую часть с помощью OpenAL для других платформ, поэтому было бы неплохо повторно использовать код.

Есть ли ограничения для OpenSL, например, что-то, что должно быть сделано в коде Java?

Насколько OpenSL отличается от OpenAL?

Спасибо!


person KaiserJohaan    schedule 26.07.2011    source источник


Ответы (2)


Пример нативного аудио включен в каталог Samples/ последних выпусков ndk.

Он утверждает, что использует OpenSL ES

person Chris Stratton    schedule 26.07.2011
comment
@KaiserJohaan Привет. Я хочу записывать звук внутри Android. На самом деле я хочу перекрыть некоторые mp3-файлы, а также изменить темп. Я могу воспроизводить несколько mp3-файлов вместе с увеличенным или уменьшенным темпом с помощью класса Soundpool. Но не может хранить их как один файл на SD-карте. Чего я хочу добиться, так это того, что я буду воспроизводить их и записывать, а также сохранять записанный файл на SD-карте. Но если я записываю это со встроенным микрофоном, то в записанном файле очень много шума. Поэтому я подумал, может быть, их можно записать внутри. Можете ли вы помочь в этом ... Спасибо - person Harsh; 29.08.2012

OpenSL и OpenAL немного отличаются интерфейсами. Тем не менее, они имеют очень похожий шаблон, и вариант использования тоже похож. Следует помнить, что в текущей реализации OpenSL страдает от тех же проблем с задержкой, что и Java Audio API.

При использовании OpenSL вам не нужно вызывать какой-либо код Java. Последний NDK поддерживает встроенный менеджер активов, поэтому больше не нужно использовать JNI для передачи массивов байтов :)

person Byron    schedule 08.02.2012