画像をドラッグして同じビデオを作成する必要があるプロジェクトで作業しています。メインビューで使用すると正常に機能します。
ScreencaptureView.h
私はビデオ録画にファイルを使用ScreencaptureView.m
し、メインビューでサブビューを作成し、キャプチャビューで画像オブジェクトをサブビューに追加します。
ここで問題となるのはScreencaptureView
、ドラッグで画像をサブビューするのが遅くなるためです。
この問題を解決するために何ができるでしょうか。
画像をドラッグして同じビデオを作成する必要があるプロジェクトで作業しています。メインビューで使用すると正常に機能します。
ScreencaptureView.h
私はビデオ録画にファイルを使用ScreencaptureView.m
し、メインビューでサブビューを作成し、キャプチャビューで画像オブジェクトをサブビューに追加します。
ここで問題となるのはScreencaptureView
、ドラッグで画像をサブビューするのが遅くなるためです。
この問題を解決するために何ができるでしょうか。
アニメーションが遅くなっても不思議ではありません。キャプチャして画像としてメモリに保存するデータの量は膨大です。ここには奇跡はありません。データをグラフィック メモリから RAM にフラッシュしてからディスクにフラッシュする必要があり、これには長い時間がかかります。私がお勧めするのは、2ステップで行うことです。主なアイデアは、リアルタイムでキャプチャするデータをできるだけ少なくすることです。
- ステップ 1 : リアルタイムでキャプチャ
このステップでは、サブビューを ScreencaptureView に配置しないでください。通常のビューに配置するか、オプションが使用可能な場合はキャプチャを無効にします。たとえば、キーが画像を参照している場合 (画像へのポインターを含む NSValue) など、ディクショナリ内の各画像に対して行った変換値のみをキャプチャします。フレームごとに 1 つの辞書を保存します。次に、辞書の配列があります。ダンプされたデータを保存するための他のソリューションを想像できます。30 fps または 60 fps で簡単に実行できます。そうすれば、キャプチャは非常に軽量になり、アニメーションはユーザーにとって完全にスムーズになります。
-ステップ 2 : リプレイ - 後処理
これで、サブビューを ScreencaptureView に配置できます。または、既にキャプチャ モードを有効にしている場合。記録した値を読み取ってアニメーションを再生し、対応する変換を画像に再適用して (もちろん保持する必要があります)、通常どおりフレームをキャプチャします。今は遅くなる可能性がありますが、問題ではありません。フレームは 1 つずつ処理されます。
これで完了です。これで、アニメーションのスムーズなビデオ スクリーンショットが作成されました。
クリアですか?
これを試して