#ios #swift #avaudioengine
#iOS #swift #avaudioengine
Вопрос:
Я могу записывать аудио в аудиофайл, добавляя данные буфера в КОНЕЦ аудиофайла со следующим кодом:
// AVAudioFile uses the Core Audio Format (CAF) to write to disk.
// So we're using the caf file extension.
file = try AVAudioFile(forWriting: FileManagerHelper.recordingLocalURL(), settings: format.settings)
tapNode.installTap(onBus: 0, bufferSize: bufferSize, format: format, block: {
(buffer, _) in
do {
buffer.frameLength = 1024 // Tap is now called every 40ms. By default, tap is called every 0.375s
try self.file?.write(from: buffer)
self.delegate?.recorderDidRecieveAudioBuffer(self, buffer: buffer)
semaphore.signal()
} catch {
log("Error writing mic data to file.", msgType: .error)
}
})
Но есть ли возможность в любом случае записывать данные буфера в файл в определенной позиции, т.Е. Время или индекс в данных буфера?
Спасибо
Ответ №1:
Согласно документам Apple:
var framePosition: AVAudioFramePosition: позиция в файле, в которой будет выполняться следующая операция чтения или записи.
Итак, вам просто нужно установить framePosition в любую позицию в кадре, которую вы хотите, чтобы начать запись новых аудиоданных.
Комментарии:
1. Возможно, я ошибаюсь, но, насколько я помню, это перезапишет существующие данные. Это действительно то, чего вы пытаетесь достичь?
2. Да, похоже на то, как диктофон работает в голосовых заметках
3. Однако установка framePosition, похоже, вызывает «ошибку -66568». Не уверен, что это значит