Подтвердить что ты не робот

Android (Java) Аудиовход в реальном времени (микрофон и USB) и выход

Я хотел бы создать приложение для Android, чтобы принимать аудиоданные из двух микрофонов, смешивать звук с некоторыми из памяти и воспроизводить звук через наушники. Это необходимо сделать в режиме реального времени. Не могли бы вы сослаться на некоторые учебники или любые ссылки, для ввода, микширования и вывода в реальном времени с помощью Java eclipse?

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

Примечание. Один микрофон подключается к 3,5-миллиметровому разъему для наушников Android через сплиттер, а другой подключается через порт USB.

Спасибо!

4b9b3361

Ответ 1

Есть два вопроса, которые я вижу здесь:

1) Аудиовход через USB.
Аудиовход может быть выполнен с использованием android 3.2+ и libusb, но это непросто (вам нужно будет получить дескрипторы USB из libusb, проанализировать их самостоятельно и отправить правильные передачи управления на устройство и т.д.). Вы можете получить задержку ввода через USB в порядке 5-10 мс с некоторыми телефонами.

2) Аудиовыход в режиме реального времени. Это постоянная проблема в Android, и вы в значительной степени ограничены Galaxy Nexus на данный момент, если вы хотите приблизиться к реальному времени (используя выход Native Audio). Однако, если вы освоите USB, вы также сможете выводить с меньшей задержкой.

Я полагаю, что если вы столкнулись с трудностями в работе USB-накопителя, вы можете получить аудиоустройство USB со стереофоническим подключением. Если вы подключили один микрофон к каждому из входных каналов, то вы можете получить через USB-порт очень близко к вашей заявленной цели. Возможно, вам захочется попробовать приложения "USB Audio Tester" или "usbEffects", чтобы увидеть, что в настоящее время возможно.

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

Следующая ссылка http://code.google.com/p/loopmixer/ имеет вкус для работы с самим звуком.