ios - AVFoundation 在 iPhone 12 上录制 10 位 HDR 视频

标签 ios avfoundation avcapturesession avassetwriter avcapturevideodataoutput

iPhone 12/12 pro 支持以 10 位格式而不是 8 位录制杜比视界 HDR 视频,但从 iOS 14.1 SDK 中尚不清楚 AVCaptureVideoDataOutput 是否支持交付可使用 AVAssetWriter 附加到视频文件的 10 位样本缓冲区。有没有人弄清楚它是否可能在SDK中?
编辑:许多应用程序,如 Apple 的 Clips 应用程序已经开始支持杜比视界 10 位视频录制。但我尝试了所有可用的 API,包括 videoHDREnabled,但它不起作用。因此,明确的问题是如何使用 AVFoundation API 录制 HDR(杜比视界)视频?
EDIT2:我能够找出支持 10 位像素缓冲区格式的设备格式(即“x420”,而不是 420v 或 420f 作为媒体子类型的设备格式)。在 iPhone 12 mini 上,4 种设备格式支持 中的 10 位像素缓冲区传送kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange ,即使 AVFoundation 文档说这不是受支持的像素格式(引用 - “在 iOS 上,唯一支持的键是 kCVPixelBufferPixelFormatTypeKey。支持的像素格式是 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange、kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 和 kCVPixelFormatType_32BGRA。”)。下一步是确定是否可以手动选择用于录制的 HDR 格式为杜比视界、HLG 或 HDR10。

最佳答案

好的,给出的答案都不正确,所以我在拿起 iPhone 12 mini 后进行了研究,这就是我发现的。
AVFoundation 文档是沉默的,有时甚至是不正确的。可以从文档中推断出不可能获得 10 位 HDR 样本缓冲区,特别是如果阅读 AVCaptureVideoDataOutput 的 videoSettings 属性的文档:

   On iOS, the only supported key is kCVPixelBufferPixelFormatTypeKey. 
   Supported pixel formats are kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, 
   kCVPixelFormatType_420YpCbCr8BiPlanarFullRange and kCVPixelFormatType_32BGRA
从文档中可以看出,永远无法获得 10 位帧。但是在探测 -[AVCaptureDevice formats] ,可以找到 4 种不同的格式,并且 mediaSubtype 为 'x420',即 kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange , 10 位格式。瞬间-[AVCaptureDevice activeFormat]设置为这 4 种格式之一,AVCaptureVideoDataOutput 将采样缓冲区格式更改为 kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange! AVCaptureDevice 的 Active Color Space 也更改为 AVCaptureColorSpace_HLG_BT2020。

关于ios - AVFoundation 在 iPhone 12 上录制 10 位 HDR 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64357503/

相关文章:

ios - 如何在ios中为多张照片添加转场效果?

ios - Sinch iOS API 支持 CallKit 框架吗?

ios - 尝试无缝循环 AVPlayer (userCapturedVideo) 时出现问题

ios - 确定核心音频 AudioBuffer 中的帧数

ios - 通过提取框架在avcapture预览层上绘制形状

ios - AVPlayerLayer 中显示的 AVAssetTrack 显示不正确

ios - 为什么应用程序在将 pdf 页面转换为 ios 中的高质量图像时由于内存警告而终止,在真实设备中 swift

ios - 通过 NSBundle 访问声音文件 - pathForResource

ios - AVCaptureSession 的奇怪错误

ios - 如何使用多对等连接将相机从一台 iOS 设备流式传输到另一台