iOS 11 API 用于 4k @ 60 FPS 视频录制

iOS 11 API To Use For 4k @ 60 FPS Video Recording

我有一个 iPhone X 运行 11.3。我一直在使用 AVFoundation、AVCaptureSession、AVAssetWriter 等,并获得了 h.265 HEVC 4K @ 30 FPS...但是,经过许多小时的谷歌搜索,我没有找到任何文档或 4k @ 60 FPS 的示例捕获。我试图通过诸如 minFrameDuration 之类的属性来强制执行它,但我总是收到错误消息。

我不是要你为我做所有的工作(尽管如果你想给我写一个 4k@60 视图控制器,是的,请!)但是如果你能给我指明正确的方向,特别是,API 在 iPhone X 上支持这一点。如果我知道只有 AVAssetWriter 会这样做,好吧,我可以 bash 我的头脑反对它几个小时:)

我花了一段时间寻找以 4k 和 60fps 录制视频的答案。 我的设置是 iphone X、Swift 4 和 iOS 12.3

  • 确保捕获设备设置为 AVCaptureDevice.default(对于:.video)! 不要使用 AVCaptureDevice.DiscoverySession 因为它不会 return AVCaptureDevice.Format.
  • 中的 4k 和 60fps 设置
  • 遍历格式数组以查找并设置所需的格式。 4k 和 60fps 所需的格式应该是这样的: AVCaptureDeviceFormat:0x2820d8700 'vide'/'420v'。 3840x2160,{ 3-60 帧/秒}...

最后一件事是使用 AVOutputSettingsAssistant class 在 AVAssetWriter 中配置输出设置字典。输出设置应为 AVOutputSettingsPresetHEVC3840x2160。如果视频设置为 AVOutputSettingsPreset3840x2160,视频输出会出现抖动。