iPhone SDK:Измените скорость воспроизведения с помощью аудиопроигрывателя Core audio AVAudioPlayer

StackOverflow https://stackoverflow.com/questions/2427821

Вопрос

Я хотел бы иметь возможность воспроизводить аудио, которое я записал, используя AVAudioRecorder со скоростью 1,5 x или 2,0x.Я не вижу в AVAudioPlayer ничего, что поддерживало бы это.Я был бы признателен за несколько предложений, с кодом, если возможно, о том, как выполнить это с помощью iPhone 3.x SDK.Я не слишком озабочен снижением высоты тона, чтобы компенсировать возросшую скорость воспроизведения, но возможность сделать это была бы оптимальной.

Это было полезно?

Решение

Видишь этот вопрос.Другими словами, вам придется использовать другой API, например службы аудио-очереди.Если вы хотите попробовать простой взлом, вы можете попробовать удвоить свойство частоты дискретизации аудиофайла.Хотя, скорее всего, это не сработает.Кроме того, имейте в виду, что настройка скорости воспроизведения при сохранении той же высоты тона требует значительных затрат процессора.Вам нужно будет использовать один из доступных методов, называемых "растягивание времени".Кроме того, на случай, если вы до сих пор этого не поняли, выполнение сложных операций со звуком на iPhone является серьезной проблемой, потому что документация Apple, как правило, либо очень плохая, либо вообще отсутствует.

Другие советы

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

Если вы хотите воспроизводить аудио быстрее или медленнее, в AVAudioPlayer есть встроенный метод.Вы пробовали свойство AudioPlayer Rate ?в Swift это будет примерно так -

    audioP = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: selectedPath), fileTypeHint: "caf")
    audioP.enableRate = true
    audioP.prepareToPlay()
    audioP.rate = 1.5
    audioP.play()
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top