Oha*_*gev 13 frame-rate ios avcapturesession
我是AVCaptureSession的新手,希望更好地了解如何使用它.因此,我将视频流捕获为分离的CIImages并将其转换为UIImages.现在我希望能够获得每秒帧数的捕获量,并且最好能够设置它.
知道怎么做吗?
Mou*_*her 15
AVCaptureConnection's videoMinFrameDuration 已弃用.
您可以使用AVCaptureDevice属性来检测支持的视频帧速率范围,并可以使用属性分配最小和最大帧速率.
device.activeFormat.videoSupportedFrameRateRanges 返回设备支持的所有视频帧速率范围.
device.activeVideoMinFrameDuration和device.activeVideoMaxFrameDuration可用于指定帧持续时间.
您可以使用AVCaptureConnection's videoMinFrameDurationaccessor来设置值.
考虑output是AVCaptureVideoDataOutput对象.
AVCaptureConnection *conn = [output connectionWithMediaType:AVMediaTypeVideo];
if (conn.isVideoMinFrameDurationSupported)
conn.videoMinFrameDuration = CMTimeMake(1, CAPTURE_FRAMES_PER_SECOND);
if (conn.isVideoMaxFrameDurationSupported)
conn.videoMaxFrameDuration = CMTimeMake(1, CAPTURE_FRAMES_PER_SECOND);
Run Code Online (Sandbox Code Playgroud)
更多信息,请参阅此SO问题中的答案
要设置捕获会话帧速率,您必须使用device.activeVideoMinFrameDuration和device.activeVideoMaxFrameDuration(如有必要)在设备上设置它。
在Swift 4 中,您可以执行以下操作:
extension AVCaptureDevice {
func set(frameRate: Double) {
guard let range = activeFormat.videoSupportedFrameRateRanges.first,
range.minFrameRate...range.maxFrameRate ~= frameRate
else {
print("Requested FPS is not supported by the device's activeFormat !")
return
}
do { try lockForConfiguration()
activeVideoMinFrameDuration = CMTimeMake(value: 1, timescale: Int32(frameRate))
activeVideoMaxFrameDuration = CMTimeMake(value: 1, timescale: Int32(frameRate))
unlockForConfiguration()
} catch {
print("LockForConfiguration failed with error: \(error.localizedDescription)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
并称之为
device.set(frameRate: 60)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13595 次 |
| 最近记录: |