gpt4 book ai didi

iphone - 来自相机的 AVCaptureSession CVImageBufferRef 上的图层 OpenGL 内容

转载 作者:可可西里 更新时间:2023-11-01 04:03:50 24 4
gpt4 key购买 nike

我现在想合并两个成功的概念。我成功地将 CATextLayer 分层到 CVImageBufferRef 相机框架上,然后使用 AVAssetWriterInputPixelBufferAdaptor 通过 AVAssetWriter 保存它.我这样做:

- (void) processNewBuffer:(CVImageBufferRef)cameraFrame {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

//
// //update CALayer on main queue
// //UIKit is not thread safe
dispatch_sync(dispatch_get_main_queue(), ^{
[self updateCALayer];
});

if(recorder.recording) {

CVPixelBufferLockBaseAddress(cameraFrame,0);

// do stuff with buffer here
uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(cameraFrame);
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(cameraFrame);
width = CVPixelBufferGetWidth(cameraFrame);
height = CVPixelBufferGetHeight(cameraFrame);

/*Create a CGImageRef from the CVImageBufferRef*/
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef newContext = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);

[textLayer renderInContext:newContext];

[recorder appendPixelBuffer:cameraFrame withPresentationTime:camera.lastSampleTime];

CVPixelBufferUnlockBaseAddress(cameraFrame,0);

/*We release some components*/
CGContextRelease(newContext);
CGColorSpaceRelease(colorSpace);
}

[pool drain];
}

这就像一个魅力。现在是我的第二个技巧。感谢这个问题的回答:

CMSampleBuffer from OpenGL for video output with AVAssestWritter

我可以修改 WWDC 2010 示例代码中的 OpenGL 茶壶示例,并将呈现的内容保存到 iPhone 上的电影文件中。

现在,我想要的是能够将茶壶放在相机框架的一个角上,并将包保存到电影中。我遇到的问题是基本的 C 语言。当一个缓冲区为 1280x720(相机帧)并且茶壶位于 320x320 的缓冲区中时,如何从一个缓冲区复制到下一个缓冲区。另一个考虑因素是速度。为了处理 30fps,我不能进出 CGImageRef 或 UIImage 类。这必须尽快发生。实现此目标的最佳方法是什么?

最佳答案

您可以尝试使用适用于 OpenGL 的 SpriteKit 框架(来自 iOS7)并且应该保持高帧率,适用于图像/纹理。

开始看苹果介绍: https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013043-CH1-SW1

希望对你有帮助

关于iphone - 来自相机的 AVCaptureSession CVImageBufferRef 上的图层 OpenGL 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com