2 つのオーディオ トラックと 1 つのビデオ トラックを持つ AVMutableComposition があります。このコンポジションを使用して、.mov ファイルから約 40 個の異なるビデオ クリップを並べ、各クリップのビデオ コンテンツをコンポジションのビデオ トラックに、オーディオをオーディオ トラックに配置しています。音楽に使用する 2 番目のオーディオ トラック。タイトル グラフィック用の同期レイヤーもあります。
AVPlayer を使用してこのコンポジションを再生すると、オーディオがゆっくりと同期しなくなります。目立ち始めるまでに約4分かかります。ほんの一握りの長いクリップをつなぎ合わせるだけでは、問題はそれほど明白ではないように思えます.短いクリップがたくさんある場合(私のテストでは〜40)、それは本当に悪くなります.
一時停止と再生はオーディオを再同期しませんが、シークは再同期します。言い換えれば、ビデオを最後まで再生すると、一時停止して最後まで再生しても、最後に向かってリップシンクが著しくオフになりますが、最後に向かって時間を探すと、オーディオは同期に戻ります.
今のところ私のハッキーな解決策は、1 分ごとに currentTime + 1 フレームをシークすることです。これにより、シーク操作の遅れによってビデオに不快なジャンプが発生するため、良い解決策ではありません。
ExportSession を使用したエクスポートでは、この問題は発生しません。オーディオは出力ムービーで同期されたままです。
AVPlayer の新しい masterClock プロパティがこれに対する答えであるかどうか疑問に思っています。そうである場合、どのように使用されますか?