如何在Swift中录制屏幕视频?

4

我正在开发一个猜歌游戏应用,需要在用户猜歌时录制屏幕并捕获设备的音频输出。我希望我的应用支持iOS8,因此“ReplayKit”不可行,那么我应该使用哪个SDK?作为初学者,如果有示例代码将更有帮助,谢谢。

2个回答

4
使用苹果的ReplayKit,您可以让用户记录游戏过程,或者在您的情况下,记录用户正在进行的任何操作。
这里包含了WWDC 2015演示的链接here 使用以下函数开始和停止录制:
func startRecording() {
        let recorder = RPScreenRecorder.shared()

        recorder.startRecordingWithMicrophoneEnabled(true) { [unowned self] (error) in
            if let unwrappedError = error {
                print(unwrappedError.localizedDescription)
            } else {
                self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Stop", style: .Plain, target: self, action: "stopRecording")
            }
        }
    }

    func stopRecording() {
        let recorder = RPScreenRecorder.shared()

        recorder.stopRecordingWithHandler { [unowned self] (preview, error) in
            self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Start", style: .Plain, target: self, action: "startRecording")

            if let unwrappedPreview = preview {
                unwrappedPreview.previewControllerDelegate = self
                self.presentViewController(unwrappedPreview, animated: true, completion: nil)
            }
        }
    }

这是一个不错的解决方案,谢谢。但我的应用程序也支持iOS8,有其他的SDK可以使用吗? - Keater
我认为你只能越狱 :( - Ronak Shah
你可以了解一下这个应用程序的工作原理(http://www.redmondpie.com/how-to-record-iphone-screen-video-on-ios-8.3-8.4-without-jailbreak/)。 - Ronak Shah
但是我需要一个内置的录屏功能。 - Keater
如果你的意思是不需要代码,那就只需使用QuickTime。如果不是,请按照我发送给你的示例操作。 - Ronak Shah
使用ReplayKit有没有办法让录制的视频质量更好? - coding22

0

RPScreenRecorder 很酷,尽管你无法访问视频甚至无法获取它。我想到的唯一方法是制作屏幕截图,将它们存储在图像数组中,然后将其转换为视频。从性能角度来看并不理想,很难实现 30+fps,但对于某些用例可能有效,这里有如何完整手动操作


您提供的博客链接无法访问。我正在尝试通过截屏来捕获NSView的一部分。请告诉我任何解决方案。谢谢。 - Jai Deves

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接