1

AVCaptureOutput からのビデオの 60 フレームの循環バッファーを作成しようとしており、イベントが発生した後にフレームを AVAssetWriter に書き込む必要があります。このアプリhttp://itunes.apple.com/us/app/precorder-video-camera-for/id412558814?mt=8 が録画ボタンの前に一定量を録画する方法と同様の方法で機能する必要があると思います押されます。

私が循環バッファーに使用していた以前の方法は、UIImage に変換することによって、出力から NSArray に sampleBuffer を追加することでした。これは問題なく動作しますが、私が見る限り、配列が圧縮されていないビデオ フレームですぐにいっぱいになり (メモリ警告が表示されてからクラッシュします)、ビデオ品質が高く設定されている場合、フレーム レートが遅すぎます。 UIImage オブジェクトへの変換に。そのため、今私は sampleBuffer を CFMutableArray に追加しようとしています。これは、それを UIImage に変換する必要がないことを意味するため、うまくいけばフレームレートを拾うことができます。ただし、これを実行した例はほとんどありません。Save sampleBuffer in array (AVFoundation)を読み、次のことを理解しました。

初期化するには:

CFMutableArrayRef arrayOne = CFArrayCreateMutable( NULL, 0, &kCFTypeArrayCallBacks );

挿入するには:

CFArrayInsertValueAtIndex(arrayOne, index, sampleBuffer);

sampleBuffer に戻すには、次のようにします。

CMSampleBufferRef newSampleBuffer = (CMSampleBufferRef)CFArrayGetValueAtIndex(arrayOne, cfarrIndex);

しかし、「newSampleBuffer」を使用しようとすると、使用できなくなり、通常はコードが停止するか、不正なアクセス エラーが発生します。

だから私の質問は、私がやろうとしていることが可能かどうか誰か知っていますか?? または、これを行う他の方法があった場合は?

前もって感謝します!

4

0 に答える 0