在 RosyWriter 中拍摄照片
Capture Photo in RosyWriter
我发现 Apple 创建的 RosyWriter 示例 有很好的用途,它允许您从 this link.
捕获通过 GLSL 层的视频
我想扩展它一点,让我不仅可以拍摄视频,还可以拍摄照片。使用相同的捕获会话、相同的视频设置、相同的分辨率等(本质上只是将单帧视频捕获到图像中)
它应该是直截了当的,但我似乎无法找到我需要从哪里获取缓冲区并保存到 Photolibrary。
据我了解,我可以使用委托:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection "
但是我没有成功。
谁能指出我正确的方向?
我找到了解决方案。
我不得不使用 renderedPixelBuffer
而不是使用包含来自相机的未修改样本的 sampleBuffer
问题在于,虽然 sampleBuffer 是 CMSampleBufferRef,但 renderedPixelBuffer 是CVPixelBufferRef
使用 CMSampleBufferCreateForImageBuffer 我转换得到了一个 Samplebuffer,我可以用它来保存为图像。
我发现 Apple 创建的 RosyWriter 示例 有很好的用途,它允许您从 this link.
捕获通过 GLSL 层的视频我想扩展它一点,让我不仅可以拍摄视频,还可以拍摄照片。使用相同的捕获会话、相同的视频设置、相同的分辨率等(本质上只是将单帧视频捕获到图像中)
它应该是直截了当的,但我似乎无法找到我需要从哪里获取缓冲区并保存到 Photolibrary。
据我了解,我可以使用委托:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection "
但是我没有成功。 谁能指出我正确的方向?
我找到了解决方案。
我不得不使用 renderedPixelBuffer
而不是使用包含来自相机的未修改样本的 sampleBuffer问题在于,虽然 sampleBuffer 是 CMSampleBufferRef,但 renderedPixelBuffer 是CVPixelBufferRef
使用 CMSampleBufferCreateForImageBuffer 我转换得到了一个 Samplebuffer,我可以用它来保存为图像。