iPhone捕获会话:设置自定义帧速率

我已经设置了一个 captureSession,现在正在尝试将帧率设置为 60。我使用的是 iPhone 12 Pro Max。

我已经设置了一个 captureSession,现在正在尝试将帧率设置为 60。我使用的是 iPhone 12 Pro Max。

我试图设置帧速率:

videoDevice?.activeVideoMinFrameDuration = CMTimeMake(value: 1, timescale: 60)

但是,打印我的.activeFormat 告诉我我的 iPhone 只支持 30 fps。

我需要 60 fps 来匹配我的机器学习模型的帧速率。

配置:

建造宽 anglecamera,

视频,

背部位置,

景观正确方向。

我在这个枚举中没有任何相机允许我超过 30 fps。因此,我创建了 videoDevice 对象:

let videoDevice = CaptureDevice.default(.builtInWideAngleCamera,                                           
                                          for: .video,
                                          position: .back)

我做错了什么?

谢谢

0

videoDevice.activeFormat只是当前格式。videoDevice.formats包含所有可能的格式。

矿山报告许多能够 60fps 的格式,例如

<CaptureDeviceFormat: 0x28337d7c0 'vide'/'420f' 1280x 720, { 1- 60 fps}, HRSI:2112x1188, fov:70.291, binned, supports vis, max zoom:24.00 (upscales @1.50), AF System:1, ISO:33.0-3168.0, SS:0.000015-1.000000, supports wide color, supports multicam>
...

所以选择最适合你的格式,然后让你的activeFormat并设置所需的帧持续时间如下:

try! videoDevice.lockForConfiguration()
videoDevice.activeFormat = my60FPSFormat
videoDevice.activeVideoMinFrameDuration = CMTime(value: 1, timescale: 60)
videoDevice.activeVideoMaxFrameDuration = CMTime(value: 1, timescale: 60)
videoDevice.unlockForConfiguration()
0

谢谢,这回答了我的问题!:)

对于任何人仍然想知道下面是我使用的代码:

    // Instantiate the video device: wide angle camera, back position
    let videoDevice = CaptureDevice.default(.builtInWideAngleCamera,
                                              for: .video,
                                              position: .back)
    
    
    // Set the frame rate to 60, as expected by the model
    try! videoDevice?.lockForConfiguration()
    
    videoDevice?.activeFormat = (videoDevice?.formats[30])!
    videoDevice?.activeVideoMinFrameDuration = CMTimeMake(value: 1, timescale: 60)
    videoDevice?.activeVideoMaxFrameDuration = CMTimeMake(value: 1, timescale: 60)
    
    videoDevice?.unlockForConfiguration()
    // Debug only
    // print(videoDevice?.activeFormat)

但是,请确保添加一些错误处理:D

再次感谢。

0

虽然其他答案提供了解决方案的大纲,但当我需要给定帧速率的最佳分辨率时,对我有用的是,如果你想进一步限制某些帧分辨率,你可以添加一个过滤器方法来确保尺寸的阈值。

extension CaptureDevice {
    func set(frameRate: Double) {
        do { try lockForConfiguration()
            activeFormat = formats.sorted(by: { f1, f2 in
                 f1.formatDescription.dimensions.height > f2.formatDescription.dimensions.height && f1.formatDescription.dimensions.width > f2.formatDescription.dimensions.width
            }).first(where: { format in
                format.videoSupportedFrameRateRanges.contains { range in
                    range.maxFrameRate == frameRate
                }
            }) ?? activeFormat
            guard let range = activeFormat.videoSupportedFrameRateRanges.first,
                  range.minFrameRate...range.maxFrameRate ~= frameRate
            else {
                print("Requested FPS is not supported by the device's activeFormat !")
                return
            }
            activeVideoMinFrameDuration = CMTimeMake(value: 1, timescale: Int32(frameRate))
            activeVideoMaxFrameDuration = CMTimeMake(value: 1, timescale: Int32(frameRate))
            unlockForConfiguration()
        } catch {
            print("LockForConfiguration failed with error: \(error.localizedDescription)")
        }
    }
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(551)
将 yyyy-MM-dd'T'HH:mm:ss.mmm'Z'转换为普通的"HH:mma" 格式
上一篇
iOS中的apk是什么
下一篇

相关推荐

  • 编程绘图软件:iPhone蓝图 /素描/绘图软件

    关于编程绘图软件的问题,在iphone blueprint中经常遇到,SO 社区中是否有人知道有任何软件可以让您在 iPhone(甚至 iPad)上拖动不同的 iOS 组件来帮助制作应用程序设计的模型或蓝图?它仅用于视觉目的。它不处理代码或类似的东西。它只是用于定位和规划应用程序的外观。有人看过或使用过这样的软件吗?…

    2022-12-28 12:01:01
    0 58 82
  • 通过默认 iPhone耳机主动消除噪音

    我们想创建一个应用程序,它将使用默认的 iPhone 耳机实现主动噪音消除。也就是说,使用 iPhone 耳机 Mic 接收外部音频并进行 180 度的相移。最后,通过默认耳机扬声器播放反转的声音以消除外部声音 (主动噪音消除)。…

    2022-11-23 05:53:42
    0 50 37
  • 如何将外部相机连接到iPhone并拍摄/下载照片

    我想将外部相机连接到 iPhone(iPhone 内置的相机不足以满足我的需求),然后编写一个 iPhone 应用程序,允许我在想要拍照时向外部相机发送信号,然后立即将拍摄的照片下载到我的 iPhone 上,以便我可以将其无线发送到其他地方的服务器。…

    2022-11-11 15:16:46
    0 81 53
  • iPhone捕获会话:设置自定义帧速率

    我已经设置了一个 captureSession,现在正在尝试将帧率设置为 60。我使用的是 iPhone 12 Pro Max。…

    2022-11-11 15:16:09
    0 59 69
  • iPhone捕获会话:设置自定义帧速率

    我已经设置了一个 captureSession,现在正在尝试将帧率设置为 60。我使用的是 iPhone 12 Pro Max。…

    2022-12-13 13:49:28
    0 17 52
  • 将数据从旧iPhone传输到新iPhone后推送通知不起作用

    我将数据从 iPhone 8 传输到 iPhone 12 mini,使用 iTunes 备份 / 设备到设备迁移。我没有得到推送通知一个应用程序,我已经安装在我的旧 iPhone。我检查了该应用程序的推送通知设置,一切都像以前一样启用。我将设置切换到开 / 关,但它没有帮助。我试图注销并重新登录到该应用程序,但这也没有解决我现在想要的应用程序的推送通知。…

    2022-11-23 08:28:51
    0 73 24
  • iPhone捕获会话:设置自定义帧速率

    我已经设置了一个 captureSession,现在正在尝试将帧率设置为 60。我使用的是 iPhone 12 Pro Max。…

    2022-11-11 15:15:47
    0 94 96
  • 在iPhone应用程序上允许/不允许相机权限时 手表应用程序被杀死

    我与 Watch OS 应用程序一起开发了 iOS 应用程序。我们正在使用 iPhone 相机捕获视频。要捕获视频 iPhone 应用程序需要应用程序用户的权限。当 iPhone 显示权限对话框并且用户允许 / 不允许权限时,相应的 Watch 应用程序会被调试器信号 9 杀死。如果我删除相机权限,则 Watch 应用程序工作正常。…

    2022-11-30 09:18:34
    0 69 81

发表评论

登录 后才能评论

评论列表(10条)