2

長い 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)
  • より高品質な "spectral:" AVAudioTimePitchAlgorithm が必要なため、AVPlayer を使用する必要があります。
  • AVAudioPlayer には問題はありませんでしたが、(AFAIK) より高品質の「スペクトル:」AVAudioTimePitchAlgorithm が必要なため、AVPlayer を使用する必要があります。

  • [編集:] - エラーは一貫しています - 指定された要求された位置に対して常に同じ (間違った) 場所から再生されます。これは再起動後も同様です。

どんな助けでも大歓迎です!ありがとう

[編集:]

  • 私たちはすでに試しましたpreferredTimescale: playerTimescale
  • kCMTimeIndefiniteの代わりにも試してみましたkCMTimeZero
4

3 に答える 3