Я нашел решение по-другому. Я использовал аудио график, состоящий из двух аудиоустройств. Цифровой микшер и выходной аудиоблок. Я создал микшер с шестью каналами, чтобы я мог играть на шести инструментах одновременно. Когда пользователь будет сочинять музыку, я сохраню контент, а во время автономной записи я буду чередовать сохраненные инструменты в микшер.
Для повышения производительности я остановлю звуковой график во время загрузки новых аудио или файлов инструментов.
После загрузки файлов запись возобновится.
Во входной функции воспроизведения микшера, согласно номеру входной шины, аудиопакеты будут подаваться в микшер. При воспроизведении на входе выходного аудиоустройства выделяется новый буфер для сохранения выходного сигнала микшера. Выход микшера был создан с использованием функции аудио рендеринга. Поскольку я не изменял входной буфер аудио, за пределами приложения не будет звука. Наконец-то у меня был автономный аудио рекордер.
Steps
- Создание аудиосеанса с использованием режима записи и воспроизведения
- Создание звукового графика с микшером и блоком вывода звука.
- Настройка каналов микшера или номеров шин ввода (количество аудиопотоков).
- Создание метода воспроизведения ввода для микшера и аудиоустройства.
- Конфигурирование аудио формата источника и назначения для шин ввода и вывода аудиоустройства.
- Создание аудиофайла с использованием формата назначения (для проверки кодирования AAC для поддержки кодирования AAC).
- Извлекает аудиофайлы и разрабатывает метод выдачи аудиопакетов для указанного канала.
- При воспроизведении аудиовхода микшера настройте выборку аудиофайла.
- При воспроизведении аудиовхода устройства вывода, используйте функцию рендеринга звука, чтобы извлечь выход микшера в новые аудиобуферы. Сохраните аудио буфер в открытый аудио файл.
- Приостановите запись с помощью звукового графика, остановите и возобновите запись, используя методы запуска звукового графика. В течение этого интервала настройте выборку нового звукового файла.
- Окончательно остановите запись и закройте аудиофайл.