2011-10-21 11 views
4

ビデオストリームにフィードされているUIImagesを取る必要があります。これはすべて、制限されたメモリを持つiPad上にあり、ストリームがまだ供給されている間にすばやくファイルシステムに保存されます「録音」セッションの後にそれらを処理する。私はすぐにiPadに表示されますフィードを中断することを避けるためにすぐに来るUIImagesを保存する必要があります。私は各フレームを別々のファイルに保存し、その後これらのファイルを順番に読み込んで.movファイルに結合することを考えています。iPadで大きなビデオフィードを処理する

トリックは:UIImagesを素早く保存する方法、生データを保存する方法、ムービーを処理するときにUIImageファイルを追加してシームレスなムービーファイルを作成する方法はありますか?追加する前に、スケーリングや変換などの各フレームの処理を行う必要があります。

アドバイスをいただければ幸いです。

答えて

0

イメージの大きさによっては、新しいcoredataの「外部ストレージの使用」属性でこれを行うことができます。 私の別の回答からコピーされた内容は次のとおりです。

私たちはIO5を使用しているので、今度はディスクにイメージを書き込む必要はありません。 coredataバイナリ属性に「外部ストレージを許可する」を設定できるようになりました。りんごリリースによると、それは次のことを意味ノート:画像サムネイルのような

小さなデータ値を効率的 データベースに格納することができるが、大規模な写真やその他のメディアは、最高の ファイルシステムによって直接処理されています。 setAllowsExternalBinaryDataStorage: コアデータ は、 を直接データベースに保存する必要がある場合は、値ごとに経験則的に決定します。これにより、管理対象の オブジェクト属性の値を外部レコードとして保存することができます。または があなたのために管理する別のファイルにURIを格納します。このオプションを使用すると、バイナリ データプロパティの内容に基づいてクエリを実行することはできません。

このアプローチを使用するといくつかの利点があります。 まず、ファイルシステムに書き込むときにできるだけ早くファイルを保存します。しかし、上記の条件に当てはまる小さな画像があれば、それらはcoredata sqliteファイルに直接保存されるため、はるかに高速になります。

さらにiOS 5では、個別の管理コンテキストで作業し、バックグラウンドで子コンテキストの変更を実行することは非常に簡単です。正常に終了した場合は、この子コンテキストをメインの管理オブジェクトコンテキストにマージし、必要な処理を実行できます。

[child performBlock:^{ 
[childsave:&parentError]; //do this in background on child context 
}]; 

NSPrivateQueueConcurrentTypeは「子供-MOC」を作成するためにそこにある - [1]

[リンゴのドキュメント]を参照し、少なくとも、あなたは、あなたがキャッシュに可能にするcoredataオブジェクトを操作制限し、さらに最適化することができますダウンロード完了後の処理

[1]:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdConcurrency.html#//apple_ref/doc/uid/TP40003385詳細については

関連する問題