5

これは以前にも質問されましたが、質問されてから Swift で何かが変わったに違いありません。CMSampleBufferから返されたオブジェクトAVCaptureSessionを後で処理するために保存しようとしています。いくつかの実験の後、その参照AVCaptureSessionを再利用しているに違いないことを発見しました。CMSampleBuffer15 を超えて保持しようとすると、セッションがハングします。そこで、サンプル バッファーのコピーを作成しようと考えました。しかし、私はそれを機能させることができないようです。ここに私が書いたものがあります:

var allocator: Unmanaged<CFAllocator>! = CFAllocatorGetDefault()
var bufferCopy: UnsafeMutablePointer<CMSampleBuffer?>
let err = CMSampleBufferCreateCopy(allocator.takeRetainedValue(), sampleBuffer, bufferCopy)
if err == noErr {
    bufferArray.append(bufferCopy.memory!)
} else {
    NSLog("Failed to copy buffer. Error: \(err)")
}

と書かれているため、これはコンパイルされませんVariable 'bufferCopy' used before being initialized。私は多くの例を見てきましたが、それらはコンパイルされて動作しないか、コンパイルされません。

ここで私が間違っていることを誰かが見ていますか?

4

2 に答える 2

2

文字通り、変数 bufferCopy を初期化する前に使用しようとしています。

その型を宣言しましたが、それが指しているメモリを割り当てていません。

代わりに、次の呼び出しを使用して CMSampleBuffers を作成する必要がありますhttps://developer.apple.com/library/tvos/documentation/CoreMedia/Reference/CMSampleBuffer/index.html#//apple_ref/c/func/CMSampleBufferCreate

次に、バッファをこれにコピーできるはずです(バッファのフォーマットがコピー元のフォーマットと一致する限り)。

于 2016-02-17T22:51:00.083 に答える