当我尝试以 Pro Res 格式录制 60 FPS 的 4k 或 1080p 素材时,遇到以下异常
AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:] 仅在外部存储设备上支持在此设备上使用 ProRes 编解码器捕获 1080p60。'
这应该是可以做到的,因为 Blackmagic cam (https://www.blackmagicdesign.com/ca/products/blackmagiccamera) 等其他应用程序允许这样做。
以下代码片段供参考:
do {
try self.videoDeviceInput.device.lockForConfiguration()
self.videoDeviceInput.device.activeFormat = self.videoDeviceInput.device.findFormat()!
self.videoDeviceInput.device.activeColorSpace = .appleLog
let frameRate = CMTimeMake(value: 1, timescale: 60)
self.videoDeviceInput.device.activeVideoMaxFrameDuration = frameRate
self.videoDeviceInput.device.activeVideoMinFrameDuration = frameRate
self.videoDeviceInput.device.unlockForConfiguration()
} catch {
print("Could not lock device for configuration: \(error)")
}
// Start recording video to a temporary file.
let outputFileName = NSUUID().uuidString
let outputFilePath = (NSTemporaryDirectory() as NSString).appendingPathComponent((outputFileName as NSString).appendingPathExtension("mov")!)
movieFileOutput.startRecording(to: URL(fileURLWithPath: outputFilePath), recordingDelegate: self)
我已经设置了所有正确的 activeFormat 值和 activeColorspace 以允许此操作。
您的代码是正确的,但您的错误是由于您的特定测试设备不支持使用 ProRes 编解码器录制 1080p60,但可以使用外部存储设备。
您必须首先列出所选设备的可用格式,然后搜索 1080p60 是否适用于所选设备,如果不可用,则获取下一个最佳格式