imageView で指を使って描画できるアプリケーションを作成し、同時に画面を記録することもできます。これまでにこれらの機能を実行しましたが、問題は、ビデオ録画が完了すると、録画したビデオを再生すると、ビデオで指の描画がスムーズにならないことです。
私はopenglを使用していません。描画はUIImageView上にあり、0.01秒ごとにUIImageViewから画像をキャプチャし、ピクセルバッファをAVAssetWriterInputPixelBufferAdaptorオブジェクトに追加します。
UIImageをバッファに変換するために使用したコードは次のとおりです
- (CVPixelBufferRef) pixelBufferFromCGImage:(CGImageRef) image {
CGSize frameSize = CGSizeMake(976, 667);
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey,
[NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey,
nil];
CVPixelBufferRef pxbuffer = NULL;
CVPixelBufferCreate(kCFAllocatorDefault, frameSize.width,
frameSize.height, kCVPixelFormatType_32ARGB, (__bridge CFDictionaryRef) options,
&pxbuffer);
CVPixelBufferLockBaseAddress(pxbuffer, 0);
void *pxdata = CVPixelBufferGetBaseAddress(pxbuffer);
CGColorSpaceRef rgbColorSpace = CGImageGetColorSpace(image);
CGContextRef context = CGBitmapContextCreate(pxdata, frameSize.width,
frameSize.height, 8, 4*frameSize.width, rgbColorSpace,
kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(context, CGRectMake(0, 0, CGImageGetWidth(image),
CGImageGetHeight(image)), image);
CGContextRelease(context);
CVPixelBufferUnlockBaseAddress(pxbuffer, 0);
return pxbuffer;
}
以下のメソッドは 0.01 秒の時間間隔で呼び出しています
CVPixelBufferRef pixelBufferX = (CVPixelBufferRef)[self pixelBufferFromCGImage:theIM];
bValue = [self.avAdaptor appendPixelBuffer:pixelBufferX withPresentationTime:presentTime];
ビデオキャプチャを改善するためのガイドはありますか?
前もって感謝します