私は、アニメーションと再生曲からなるカラオケアプリを開発しています。ここで最も重要なのは、両方の間の非常に正確な同期です。iOS 11 AVPlayer/mp3 currentTime正確ではない
私は数ヶ月前にそれを実装しました.iOS 9/10ではすべてがうまくいっていました。再生とアニメーションの間に非常に大きな遅延があったため、Androidアプリ(ExoPlayer)に問題がありました。最後に、間違った曲形式(mp3)が原因で問題が発生していることが判明しました。ここで説明されています:https://github.com/google/ExoPlayer/issues/3233。 mp4形式に歌を詰め込むことで修正しました(まだiOS上にmp3が使用されています)。
私はHLS でAVPlayerを使用
self.player = AVPlayer(url: url)
//
var currentTime_: Double {
if let player = self.player {
return player.currentTime().seconds
}
return 0
}
すべてがiOSの11のリリースまでOKでした。 iOS 11では、Android上にあったのと同じ同期解除(player.currentTimeは正確ではありません)があります。 興味深いのは、iOS 10 SDKでビルドされ、AppStoreで利用可能なアプリケーションであっても、iOS 11では正常に動作しませんが、iOS 10でもうまくいきます。
サーバ側の変更がありませんでした。だから、Appleはデコード/バッファリングで何かを変えなければならなかった。現在、私たちはオーディオフォーマット/デコードの変更に取り組んでいますが、まだ私は不思議です - なぜそれが起こったのですか?誰かが似たようなことに遭遇しましたか?あなたは、このオプションを使用しない場合はAVURLAsset
let asset = AVURLAsset(url: url, options: [AVURLAssetPreferPreciseDurationAndTimingKey: true])
を作成する場合は、このオプションを使用する必要がある
よろしく
これです!ありがとう;)それで、currentTimeがちょうどパーセンテージに継続時間を掛けたように見えるので、ここでは非同期化が起こったのです。 –