1

AVAssetWriter で作成した静止画像の 30fps の Quicktime .mov があります。(約 10 フレームの長さです)。ユーザーが UISlider を使用して約 1 fps まで遅くできるようにしたいのですが、AVPlayer .rate プロパティを 1 から 0 に調整すると、1 fps に近くならず、再生が停止するだけです ( 0 レートは効果的に停止/一時停止しているため、理にかなっています)。しかし、プレーヤーの速度を約 1fps に下げるにはどうすればよいでしょうか? 実際のレートを計算するには、いくつかの計算を行う必要があると思いますが、それで行き詰まっています。それは 0.000000000000001 のようなものになるのでしょうか?

ありがとう!

4

1 に答える 1

0

これが私の要件である場合、次のようにアプローチします(コメントでInafzigerによっても提案されています)。AVAssetReader を使用して、画像用に独自のビューアーをロールバックします。これにより、コメントに記載されているように、タイマーを使用して正確に制御できます。事前に割り当てられたイメージのメモリ領域を再利用してください (おそらく、単一のイメージ用のスペースを確保できます)。私はおそらく CoreAudio のようなプル アプローチを取るでしょう。画像が必要な場合は、AVAssetReaders 読み取り関数を呼び出す画像バッファー マネージャー クラスから画像を取得します。このようにして、常に利用可能な N 個のバッファを持つことができます。これは少しやり過ぎかもしれません。AVAssetReader は、初期化時に映画の一部を事前にデコードしていると思います。これが、画像データを読み込むために単一のバッファを使用するだけで済む可能性が高いと私が言う理由です。

あなたからのメモリの問題についてのコメント。AVAssetReader および関連するクラスには、create ルールを使用する関数がいくつかあると思います。

于 2012-08-10T16:41:12.353 に答える