Изменение высоты звука записанного клипа (m4v)

Я пишу приложение, в котором я пытаюсь изменить высоту звука при записи фильма (.m4v). Или путем изменения звуковой шаг фильма после этого. Я хочу, чтобы конечным результатом был фильм (.m4v), который имеет исходную длину (т.е. тот же визуальный эффект, что и оригинал), но с измененным звуковым шагом, например, «голос бурундука». Преобразование в реальном времени предпочесть, если это возможно.

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

В своем приложении я записываю фильм (.m4v/AVFileTypeQuickTimeMovie) и сохраняю его с помощью стандартного AVAssetWriter. При сохранении фильма у меня есть доступ к следующим элементам, в которых я пытался манипулировать звуком (например, изменять высоту тона):

  • аудиобуфер (CMSampleBufferRef)
  • запись аудиовхода (AVAssetWriterAudioInput)
  • запись аудиовхода параметры (например, AVNumberOfChannelsKey, AVSampleRateKey, AVChannelLayoutKey)
  • средство записи (AVAssetWriter)

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

Я также пытался использовать Dirac, как описано здесь: Изменение высоты звука в реальном времени в iPhone с помощью Dirac
И OpenAL с AL_PITCH, как описано здесь: Передача вывода из OpenAL в буфер
И библиотека "BASS" от un4seen: Изменение высоты тона/темпа в реальном времени

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

По-видимому, существует множество библиотек с аналогичными эффектами, но с упором на воспроизведение или пользовательский код записи. Я хочу манипулировать аудиопотоком, который у меня уже есть (AVAssetWriterAudioInput), или изменить сохраненный видеоклип (.m4v). Я хочу, чтобы видео было немодифицированным визуально, т.е. воспроизводилось с той же скоростью. Но я хочу, чтобы звук шел быстрее (как бурундук) или медленнее (как... монстр?

Есть ли у вас какие-либо предложения, как я могу изменить высоту тона либо в реальном времени (при записи фильма), либо впоследствии с помощью преобразование всего фильма (.файл m4v)? Должен ли я изучить Dirac, OpenAL, SoundTouch, BASS или какую-либо другую библиотеку?

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

9
задан Community 23 May 2017 в 12:14
поделиться