Android Oboe Library: возможна запись 2 потоков с 2 записывающих устройств? - PullRequest
0 голосов
/ 15 декабря 2018
  • Устройство: HUAWEI P smart
  • Android-версия: 8.0.0
  • Общее применение:RecDev1 -> PlayDev1RecDev2 -> PlayDev2"одновременная трансляция"гдеRecDev может быть встроенным микрофоном, USB-микрофоном или гарнитурой-микрофонома такжеPlayDev может быть встроенным динамиком, USB-динамиком или гарнитурой-динамикомлюбое устройство ввода и вывода должно передаваться «ОДНОВРЕМЕННО» в любой комбинации, как показано выше.
  • Пример приложения (все устройства с каналом «1»):Гитара -> проводной микрофон -> [(обработка)] -> встроенный динамикГолос -> встроенный микрофон -> [(обработка)] -> проводной динамик"одновременная трансляция"
  • Код:это просто расширенная версия образца " LiveEffect ", предоставленного oboe.До сих пор я пробовал:,прямое расширение,LiveEffectEngine больше не синглтон (2 экземпляра с собственным длинным mEngineHandle),использование 2 отдельных потоков,установить обратный вызов для потока записи
  • Примечание:Я получаю предупреждение Stream is NOT low latency для всех 4 потоков, но все параметры совпадают:SharingMode::Exclusive PerformanceMode::LowLatency (not accepted) mSampleRate 48000 (default of PlaybackDevice) AudioFormat::I16

с API-интерфейсом OpenSL-ES: я не могу запустить второй recordStream, stream->requestStart() возвращает «ErrorInternal»

с помощью API AAudio: я не могу открыть второй recordStream, builder.openStream() возвращает «ErrorInvalidState»

В обоих случаях я звоню builder->setCallback(nullptr), поэтому я подумал, что использование отдельных потоков может помочь, но это не решило проблему.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

** в соответствии с ответом Дона Тернера: «Android не позволяет открывать входящие (т.е. записывать) аудиопотоки более чем одному аудиоустройству одновременно. Этот вариант использования не поддерживается».

** Более четко:- Android НЕ поддерживает запись с более чем ОДНОГО устройства ввода одновременно.- Android НЕ поддерживает воспроизведение более чем на ОДИН выходное устройство одновременно.- и наверняка комбинация из 2 пунктов выше НЕ работает.

** Это легко проверить, например, запустив 2 экземпляра этого AAudio Sample параллельно и выбрав другойустройства вывода.Это просто НЕ будет работать!

** ЭТО ОЧЕНЬ ВАЖНОЕ ОГРАНИЧЕНИЕ нигде не упоминается в официальной документации !!!

** Поэтому следующий «пример использования» НЕ поддерживаетсяAndroid (oboe, aaudio, opensl es):

USB-Audio-In ---> Встроенный динамики в то же времяМикрофон ----> USB-Audio-Out

** Я очень разочарован, я потратил время и деньги, чтобы начать что-то на этом основе, предполагая, что это «базовая» функциональность ... теперь я долженсдаться: - (

** Если я найду нужное место, то я введу «запрос» для поддержки этой «функции», например, в AAudio.

** Надеюсь, это поможетдругие люди, прежде чем тратить слишком много времени на что-то помимо текущих возможностей, предлагаемых Android и соответствующими библиотеками.


** Возможный обходной путь, обозначенный Donturner, - вместо этого использовать специальную звуковую карту USB с 2входы и 2 выхода, которые являются просто отдельными каналами в одном устройстве.К сожалению, это не очень подходит для меня, потому что я нацелился на недорогое решение без дополнительного оборудования (с использованием интерфейса гарнитуры).

0 голосов
/ 18 декабря 2018

Android не позволяет открывать входящие (т.е. записывать) аудиопотоки более чем на одно аудиоустройство одновременно.Этот вариант использования не поддерживается.

Возможно, если вы объясните, почему вы хотите записывать с разных встроенных микрофонов одновременно, я мог бы предложить обходной путь.

Обновление: Термин Аудиоустройство относится к устройству, способному либо принимать, либо отправлять аудио.К аудиоустройству может быть подключено несколько микрофонов и / или динамиков, и они представлены как разные каналы.

...