swift - 即使有公差,AVPlayer Seek 也不准确Before : kCMTimeZero

标签 swift avplayer avaudioplayer seek seektotime

我们有一个可以播放长 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 时没有遇到问题,但是(据我所知)我们必须使用 AVPlayer,因为我们需要更高质量的“频谱:”AVAudioTimePitchAlgorithm。

  • [编辑:] - 错误是一致的 - 对于给定的请求位置,它总是从相同(错误)的位置播放。重启后也是如此。

非常感谢任何帮助!谢谢

[编辑:]

  • 我们已经尝试过preferredTimescale:playerTimescale
  • 还尝试了 kCMTimeIndefinite 而不是 kCMTimeZero

最佳答案

这就是 AVURLAssetAVURLAssetPreferPreciseDurationAndTimingKey 的用途。

Apple's documentation .

请注意,这会增加加载时间。

关于swift - 即使有公差,AVPlayer Seek 也不准确Before : kCMTimeZero,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54589084/

相关文章:

ios - 传递给不同 Controller 时 AVPlayer 持续时间会发生变化

swift - 稍微延迟播放声音

iphone - 如何在 iPhone 应用程序中播放歌曲时显示剩余时间?

java - 尝试播放音频 (.wav) 文件时没有声音

ios - 如何让我的搜索栏标题与我的单元格在同一部分中工作?

ios - 如何使用 PKAddPassButton 为具有本地化的通行证创建 "Add to apple wallet"按钮

swift - Swift:响应中带有应用程序/八位字节流的GET请求

ios - AVPlayer 是否支持在单独的文本文件中提供的隐藏式字幕?

ios - 带有 TableView 和手势识别器问题的 Swift/UIView

ios - NSManaged 核心数据 -