我们有一个可以播放长 mp3 文件(1 小时)的应用程序。我们希望能够从文件中的设定点开始播放。但是,当我们这样做时,它最多有 10 秒的误差。
这是代码:
let trackStart = arrTracks![MediaPlayer.shared.currentSongNo].samples
let frameRate : Int32 = (MediaPlayer.shared.player?.currentItem?.asset.duration.timescale)!
MediaPlayer.shared.player?.seek(to: CMTimeMakeWithSeconds(Double(trackStart), frameRate),
toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)
- 我们必须使用 AVPlayer,因为我们需要质量更好的“频谱:”AVAudioTimePitchAlgorithm。
AVAudioPlayer 没有问题,但是(AFAIK)我们必须使用 AVPlayer,因为我们需要质量更好的“频谱:”AVAudioTimePitchAlgorithm。
[编辑:] - 错误是一致的 - 对于给定的请求位置,它总是从相同(错误)的地方播放。重启后也是如此。
非常感谢任何帮助!谢谢
[编辑:]
- 我们已经尝试过
preferredTimescale: playerTimescale
- 也试过
kCMTimeIndefinite
代替kCMTimeZero