我使用rate属性AVPlayer来更改音频示例的播放速度。它似乎总是应用音高校正,但我不希望音高校正,所以当它加快速度时,它会变得更高,就像一个唱片或旧磁带播放器。有没有办法在AVPLayer中完全关闭音高修正?
我目前正在使用Swift 3,但目标C答案也是受欢迎的。
发布于 2019-08-27 18:51:50
不确定这是否可以使用AVPlayer,但如果您只是使用它播放音频,您可以很容易地使用AVAudioEngine:
var audioPlayer = AVAudioPlayerNode()
var engine = AVAudioEngine()
var speedControl = AVAudioUnitVarispeed()
// engine setup:
do {
let file = try AVAudioFile(forReading: "myFile.mp3")
engine.attach(audioPlayer)
engine.attach(speedControl)
engine.connect(audioPlayer, to: speedControl, format: nil)
engine.connect(speedControl, to: engine.mainMixerNode, format: nil)
audioPlayer.scheduleFile(file, at: nil)
try engine.start()
} catch {
print(error)
}
// changing rate without pitch correction:
speedControl.rate = 0.91发布于 2019-08-29 15:22:36
实际上,这在AVPlayer中是可能的--
let player = AVPlayer(url: fileURL)
// to turn off pitch correction:
player.currentItem?.audioTimePitchAlgorithm = .varispeed发布于 2022-04-28 13:35:13
使用AVAudioUnitTimePitch是您所需要的。改变rate属性(默认为1.0)将改变音频的速度而不改变音高。
https://stackoverflow.com/questions/36223632
复制相似问题