3

使用例:カメラからの入力をキャプチャし、キャプチャしたフレーム(およびサウンド)の上に描画して、結果を.movファイルとして保存したいと思います。

  • AVCaptureSessionを使用してカメラの入力をキャプチャできることがわかります。
  • AVCaptureMovieFileOutputを使用してこれを.movファイルに保存できます。
  • AVVideoCompositionを使用して、再生用のCoreAnimationを追加できます。どういうわけか録音も想定していますか?

問題:ファイルに保存する前に入力を変更する方法がわかりません。

4

2 に答える 2

5

RosyWriterはほとんどが望んでいたことをしていました。次のコードをcaptureOutput:didOutputSampleBuffer:fromConnectionに追加すると、Quartzを使用してフレームに描画できるようになりました。

    CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);

    CVPixelBufferLockBaseAddress(pixelBuffer, 0);
    void *pxdata = CVPixelBufferGetBaseAddress(pixelBuffer);
    NSParameterAssert(pxdata != NULL);

    CGSize frameSize = CGSizeMake(self.videoDimensions.width, self.videoDimensions.height);

    CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(pxdata, frameSize.width,
                                                 frameSize.height, 8, 4*frameSize.width, rgbColorSpace, 
                                                 kCGImageAlphaNoneSkipFirst);

    CGContextMoveToPoint(context, 100, 100);
    CGContextAddLineToPoint(context, 200, 200);
    CGContextDrawPath(context, kCGPathStroke);

    CGColorSpaceRelease(rgbColorSpace);
    CGContextRelease(context);
于 2012-06-25T19:24:20.390 に答える
0

AVCaptureMovieFileOutputキャプチャされたフレームを処理することはできません。これを行うには、それをに置き換え、。AVCaptureVideoDataOutputを使用して.movファイルへの入力をエンコードしますAVAssetWriter

についてはAVVideoComposition、別のパスで適用する必要があると思いますAVAssetExportSession

于 2012-06-24T01:20:13.980 に答える