可変フレームレートのAVAssetとそうでないAVAssetsを区別しようとしています。AVAssetTrackに可変フレームレートがあるかどうかを確認するには?
私はすべてのフレームをデコードし、フレームの長さが各フレームを変更しないことを確認できますが、これはコストがかかります。利用可能なメタデータを見て、有用なものを見つけませんでした。
どこから始めたらよいですか?
CMTime duration = [myAsset duration];
CMTime frameDuration = myAssetTrack.minFrameDuration;
if(!(duration.value * frameDuration.timescale) %
(duration.timescale * frameDuration.value))
NSLog(@"asset is constant frame rate");
が、これは偽陰性に最終的に影響を受けやすい:私はこれまで持っている最高のアイデアは、使用することです。より良いアプローチはありますか?
AVAssetsはビデオの最後に黒いフレームを追加して、それを正しく使用するためにタイムスタンプを変えるように見えるため、これは偽陽性になります
これはありがたいことですが、これは生のフレームをデコードするのにどれくらいの時間がかかるかをテストしていませんでした。私は今これをオプションとして見ています。私はいくつかのテストファイルのパフォーマンスを見ています: .mov 1920 * 800,24fps、12m14s、〜580MBはデコードに〜4秒かかります .mov 1920 * 1080,29.97fps 、43m59s、〜45GBはデコードに〜57秒かかります – alwaysmpe
AVFoundationは素晴らしいです。その数に感謝します。 –