Прямая запись звука iOS в файл .m4a (audio / mpeg-4) с использованием TPAACAudioConverter

Я работаю над приложением для iOS с функцией записи. У меня большая проблема с прямой записью аудио в формате AAC mpeg4 в файл .m4a.

Мое рабочее решение записывает в .caf, а затем конвертирует этот файл в требуемый формат .m4a, но это медленно и неприемлемо.

Я нашел оболочку Майкла Тайсона TPAACAudioConverter, которая, возможно, является правильным решением, но Моя проблема в том, что я не знаю, как исправить инициализацию и использовать эту оболочку для прямой записи AAC в файл .m4a (без дополнительного пост-преобразования после записи).

Если у кого-то есть рабочий пример на Github или я могу помочь с ним, дайте мне знать.

Большое спасибо.


person Ondřej Psylector Štěpán    schedule 20.11.2012    source источник


Ответы (1)


TPAACAudioConverter не очень хорошо подходит для записи вживую, просто из-за того, как он структурирован, извлекая аудио от делегата вместо того, чтобы предлагать возможность отправлять аудио ему напрямую.

Я рекомендую использовать сервисы ExtAudioFile напрямую, так как он уже выполняет всю работу за вас.

Если вам действительно нужно использовать TPAACAudioConverter, вам необходимо использовать кольцевой буфер (например, TPCircularBuffer) для хранения звука, пока TPAACAudioConverter не получит его через метод делегата. Хотя это грязно; используйте ExtAudioFile.

Для записи: The Amazing Audio Engine содержит очень простой механизм для записи прямо в AAC или любой другой поддерживаемый формат. Скоро выйдет.

person Michael Tyson    schedule 21.11.2012
comment
Спасибо, Майкл, так что я буду ждать упомянутого аудиофреймворка. Это будет бесплатно или платно? Спасибо за дополнительную информацию. - person Ondřej Psylector Štěpán; 22.11.2012
comment
Нет проблем - это будет бесплатно и с открытым исходным кодом - person Michael Tyson; 22.11.2012
comment
@MichaelTyson, могу я спросить, как повторно инициализировать аудиосеанс? Я следил за вашим примером кода, и он работал впервые, но я получил предупреждение о том, что не могу инициализировать аудиосеанс !. я пропустил некоторые шаги? - person Desmond; 22.08.2013
comment
На самом деле, вы не можете повторно запустить аудиосеанс, @Desmond; как только он инициализирован, вот и все. Однако вы можете изменить категорию и другие настройки. - person Michael Tyson; 23.08.2013