問題タブ [avcomposition]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
avfoundation - AVAsset をシーケンスする際に使用する正しい時間範囲は?
AVAsset
私は、短い (1 ~ 5 秒) sを多数 (n = 30 以下で問題が見られる) シーケンスする必要があるプロジェクトに取り組んでいます。CMTimeRange(start: .zero, end: asset.duration)
私が見つけることができるすべての参考資料とサンプルプロジェクトは、コンポジショントラックへの挿入に範囲を使用するポイントを見つけることができるので、次のようになります。
問題は、これによりオーディオとビデオが同期しなくなることです (ビデオがオーディオより遅れているように見えます)。
- 使用するクリップの数を減らすと、問題が解決するか、深刻度が低くなるようです
- クリップを単独で再生すると、この動作は発生しません。
- 一部のアセットには、時間範囲が異なるビデオ トラックとオーディオ トラックがあります。これは、ここで説明したプライミング フレームの問題が原因である可能性があると思います
- トラックの長さが異なるアセットを除外しても問題は解決しません
- 時間範囲はすべてシステムによって 44100 タイムスケールで指定されるため、ここで説明するタイムスケールの不一致 / 丸めは適用されないようです。
時間範囲を計算するためのさまざまな戦略をいくつかテストしましたが、どれも問題を解決していないようです:
(前のスニペットの再生ヘッドの増分は、オーディオとビデオの時間範囲が異なる場合に計算されたものの最大値によって増分されます)
これらの戦略のいずれも問題を解決するものではなく、コード レベルのサポートについて Apple に連絡しようとしていますが、見落としている単純なものがあることを願っています。また、Mac で iMovie を調べてみたところ、これらのクリップを同期の問題なく完全に並べることができましたがAVComposition
、プレビュー プレーヤーをバックアップするために を使用しているようには見えません。助けていただければ幸いです。