Запись/воспроизведение с AudioQueue на iPhone

В настоящее время я использую Audio Queues на iPhone для записи и воспроизведения звука.

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

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

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

Проблема в том, что это только вставляет звук поверх ранее записанного звука. Длина файла, очевидно, не меняется, поэтому, если пользователь пойдет назад и запишет меньше звука, чем раньше, старый звук все равно останется после окончания вновь записанного звука.

Есть ли способ заставить AudioFile обрезаться в тот момент, когда пользователь начинает вставлять новый звук, есть ли другой способ удалить старый звук, начиная с позиции вставки, или есть ли лучший способ выполнить эту задачу? ?

Спасибо


person Biranchi    schedule 16.04.2010    source источник


Ответы (1)


У меня такой же вопрос. Мой текущий подход состоит в том, чтобы записать новый звук в отдельный файл, а затем, когда это будет сделано, объединить первую часть первого файла со вторым файлом, записать результат в третий файл, затем переименовать третий файл в первый файл и удаление второго файла. Операция конкатенации требует написания пользовательской, но довольно простой функции с использованием AudioFile API.

Я также хотел бы услышать какие-либо более просвещенные идеи или увидеть функцию AudioFileTruncate().

person Archie    schedule 20.04.2010