EltaudioFIleeeak и EltaudioFileWrite вместе в одном файле
-
08-10-2019 - |
Вопрос
У меня есть ситуация, когда я могу сохранить постобработный проход через аудио, взяв некоторых манипулируемых буферов с конца дорожки и написав их в начало моего выходного файла.
Я изначально думал, что могу сделать это, сбросив указатель записи, используя ExtAudioFileSeek
, и собирался реализовать его, когда я увидел эту линию в документах
Ensure that the file you are seeking in is open for reading only. This function’s behavior with files open for writing is undefined.
Теперь я знаю, что я мог закрыть файл для написания, а затем открыть его, но процесс немного сложнее, чем это. Часть манипулирования я делаю, это читать от буферов, которые находятся в файле, я пишу. Общий процесс выглядит так:
- Читать буферы с конца файла чтения
- Читайте буферы с начала файла записи
- Процесс буферы
- Напишите буферы обратно в начало файла записи, перезаписывая буферы, я прочитал на шаге 2
Логично, это можно сделать в 1 без проблем. Программно, как я могу добиться того же, не повредив свои данные, становясь менее эффективными (противоположными моей целью) или потенциально умоляющей вселенную?
Решение
Да, используя один аудиофайл для чтения, так и записи, может, как вы его помещаете, умоляете вселенную или, по крайней мере, приведу к другому наличию. Я думаю, что ключ к решению этой проблемы находится на шаге 4, где вы должны написать вывод в новый файл вместо того, чтобы попытаться «перерабатывать» начальный файл записи. После завершения вашей обработки вы можете просто ловить промежуточный файл записи.
Или я неправильно понял проблему?
О, а также, вы должны использовать ExtAudioFileWriteAsync
вместо ExtAudioFileWrite
Для ваших пишетов, если вы делаете это в реальном времени. В противном случае нагрузка ввода / вывода приведет к выпуску аудио.