Запись / Воспроизведение с AudioQueue на iPhone - PullRequest
3 голосов
/ 16 апреля 2010

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

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

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

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

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

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

Спасибо

1 Ответ

3 голосов
/ 21 апреля 2010

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

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

...