AVCaptureVideoDataOutput P3 色彩空间

Posted

技术标签:

【中文标题】AVCaptureVideoDataOutput P3 色彩空间【英文标题】:AVCaptureVideoDataOutput P3 colorspace 【发布时间】:2018-04-18 12:17:29 【问题描述】:

是否有使用 AVCaptureVideoDataOutput(或其他方式?)以每秒至少 30 帧的速度在 10 位 P3 颜色空间中获取 CMSampleBuffers 的方法?我可以将 AVCaptureSession 配置为使用 P3 色彩空间,但在 AVCaptureVideoDataOutput 委托中无法获得比 BGRA 或 YUV420 更好的东西,它们都是 8 位格式。

【问题讨论】:

你能说明你是如何配置 AVCaptureSession 的吗? 您只需将 sessionPreset 设置为 .photo 即可激活 P3 色彩空间,它可以工作。但问题是 AVCaptureVideoDataOutput 无法接收除 BGRA32 或 YUV420 以外的任何内容,这两者都是 8 位深度。 使用照片预设来配置非照片AVCaptureVideoDataOutput(或完全使用预设)似乎是错误的。将AVCaptureDevice 上的activeColorSpace 设置为P3_D65 怎么样? 如果您设置的 sessionPreset 不是 .photo,那么无论设置如何,activeColorSpace 始终是 sRGB。 【参考方案1】:

您是否将色彩空间与像素格式混合在一起? P3 颜色空间没有指定每个元素的大小。您可以在 P3 色彩空间中每通道输出 8 位。如果您想要不同的像素格式结帐

AVCaptureVideoDataOutput.availableVideoCVPixelFormatTypes. 

这将为您提供可用于视频输出的像素格式列表。然后可以如下设置像素格式

AVCaptureVideoDataOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey: pixelFormat]

上次我检查唯一可用的是 32 位 BGRA、420v 和 420f。

【讨论】:

是的,显然我正在混合两者。但我的问题是,为了让 P3 颜色空间显示的颜色超过 sRGB,它需要更多的位深度。在 8 位格式的 P3 中工作有什么好处吗? 使用 P3 相比 sRGB,您将获得更大的颜色范围,但谨慎颜色的数量不会增加。 好的,知道了。但它仍然不是一组超级 sRGB。这很烦人。 确实,所有谨慎的颜色都在 sRGB 中……P3 的扩展色域为您提供各种大胆、华丽和其他不那么微妙的颜色。 好吧,更严肃一点:色彩空间和像素格式是离散的,独立的概念但密切相关。 P3 是比 sRGB 更广阔的空间,但如果您使用 8 位分量处理 P3 颜色,您仍然会覆盖相同数量的不同颜色(它只是一组不同的颜色)。要真正表达 sRGB 8-8-8 的超集,您的 P3 空间像素缓冲区需要更深的像素格式,例如 10 位或半浮点组件。

以上是关于AVCaptureVideoDataOutput P3 色彩空间的主要内容,如果未能解决你的问题,请参考以下文章

AVCaptureVideoDataOutput P3 色彩空间

可以同时使用 AVCaptureVideoDataOutput 和 AVCaptureMovieFileOutput 吗?

获取 AvCaptureVideoDataOutput 的实际 NSString 可用VideoCVPixelFormatTypes

iOS拍照定制之AVCaptureVideoDataOutput

试图了解CMTime

录音时静音音频 AVAssetWriterInput