Core Audio - записывает данные в начало или середину аудиофайла (где-то кроме конца)

Итак, у меня есть приложение для записи аудио iOS, над которым я работаю. В моем приложении мне нужно записать аудио в любой точке файла (в каталоге документов), которую выберет пользователь, что перезапишет любой звук, который там есть.

Пример: я записываю 3 минуты аудио, возвращаюсь ко второй минуте, снова начинаю запись в течение 10 секунд. Теперь, 2:00 - 2:10 содержит новое аудио, а старое аудио исчезло (в этом примере аудиофайл не становится длиннее).

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

Чего я не хочу: я не хочу записывать в другой файл и добавлять два файла вместе, используя этот метод: /questions/17487617/kak-obedinit-2-ili-3-audiofajla-v-ios/17487633#17487633 С этим связано значительное время загрузки, Приложение iOS Voice Memos мгновенно добавляет файлы вместе.

Можно ExtAudioFileWriteAsync использоваться для добавления аудио в начале? Или в указанном месте образца? Есть ли другой метод, на который я должен обратить внимание?

1 ответ

Решение

Я думаю, что ExtAudioFileSeek не определен при записи. Я использую AudioFile API, на котором построен ExtAudioFile. Единственное, что я должен сделать, - это сделать ваши собственные преобразования формата (я использую AudioConverterRef, если необходимо). Но как только вы получите все эти квадраты, вы можете вызвать AudioFileWritePackets, который принимает аргумент inStartingPacket, чтобы вы могли писать в любом месте файла. Вы также можете обернуть AudioFileRef в ExtAudioFileRef для воспроизведения, пока файл еще открыт для записи, используя ExtAudioFileWrapAudioFileID. Заголовки находятся в AudioFile.h и AudioConverter.h.

Другие вопросы по тегам