gpt4 book ai didi

swift - 使用 ARKIT 拍摄视频

转载 作者:搜寻专家 更新时间:2023-10-31 22:01:30 24 4
gpt4 key购买 nike

你好社区

我尝试使用 Swift 4 和即将推出的出色 ARKit-Framework 构建应用程序,但我被卡住了。我需要使用框架或至少 UIImage 序列拍摄视频,但我不知道怎么做。

这是我尝试过的:

在 ARKit 中,您有一个跟踪您的世界的 session 。此 session 有一个 capturedImage 实例,您可以在其中获取当前图像。所以我创建了一个计时器,它每 0.1 秒将 capturedImage 附加到列表中。这对我有用,但如果我通过单击“开始”按钮启动计时器,相机开始滞后。我猜这与计时器无关,因为如果我通过单击“停止”按钮使计时器无效,相机将再次流畅。

是否有解决滞后的方法或者更好的方法?

谢谢

最佳答案

我能够使用 ReplayKit做到这一点。

看看ReplayKit是什么样的

在您的 iOS 设备上,转到设置 -> 控制中心 -> 自定义控件。将“屏幕录制”移动到“包括”部分,然后向上滑动以调出控制中心。你现在应该看到圆形的屏幕录制图标,你会注意到当你按下它时,iOS 开始录制你的屏幕。点击蓝色条将结束录制并将视频保存到照片。

使用 ReplayKit,您可以让您的应用调用屏幕录像机并捕获您的 ARKit 内容。

操作方法

开始录制:

RPScreenRecorder.shared().startRecording { error in
// Handle error, if any
}

要停止录制:

RPScreenRecorder.shared().stopRecording(handler: { (previewVc, error) in
// Do things
})

完成录制后,.stopRecording 会为您提供可选的 RPPreviewViewController。 , 这是

An object that displays a user interface where users preview and edit a screen recording created with ReplayKit.

因此在我们的示例中,如果它不是 nil,您可以呈现 previewVc

RPScreenRecorder.shared().stopRecording(handler: { (previewVc, error) in
if let previewVc = previewVc {
previewVc.delegate = self
self.present(previewVc, animated: true, completion: nil)
}
})

您可以直接从 previewVc 编辑和保存视频,但您可能想让自己(或某人)成为 RPPreviewViewControllerDelegate , 因此您可以在完成后轻松关闭 previewVc。

extension MyViewController: RPPreviewViewControllerDelegate {
func previewControllerDidFinish(_ previewController: RPPreviewViewController) {
// Called when the preview vc is ready to be dismissed
}
}

注意事项

您会注意到 startRecording将记录“应用程序显示”,因此如果您有任何 View (按钮、标签等)也将被记录。 我发现在录制时隐藏控件并让我的用户知道点击屏幕会停止录制很有用,但我也读到其他人成功地将他们的基本控件放在单独的 UIWindow 上。

从记录中排除 View

单独的 UIWindow 技巧起作用了。我能够制作一个覆盖窗口,其中有一个记录按钮和一个计时器,但这些都没有被记录下来。

let overlayWindow = UIWindow(frame: view.frame)
let recordButton = UIButton( ... )
overlayWindow.backgroundColor = UIColor.clear

UIWindow 默认隐藏。所以当你想显示你的控件时,你必须将isHidden设置为false

祝你好运!

关于swift - 使用 ARKIT 拍摄视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45326277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com