7

今天我看到一些视频,苹果提供了在控制中心录制屏幕的选项。

我很好奇它是否也可供开发人员使用?

我用谷歌搜索但没有找到任何与此相关的文档。有人可以对这个话题有所了解。

4

1 回答 1

10

应用屏幕共享:

根据 API 文档中的新更新,您只能通过您的应用程序捕获屏幕的视频音频

在此处输入图像描述

RPScreenRecorder共享记录器对象,提供记录应用程序的音频和视频的能力。

通过这个类,您可以录制您的应用程序屏幕,还可以通过 iPhone 麦克风绑定音频。

以下是一些可用于记录具有不同选项的屏幕的方法。

要访问共享记录器:

class func shared()

要控制应用程序录制:

-- Starts recording the app display.
func startRecording(handler: ((Error?) -> Void)? = nil)

-- Stops the current recording.
func stopRecording(handler: ((RPPreviewViewController?, Error?) -> Void)? = nil)

-- Starts screen and audio capture.
func startCapture(handler: ((CMSampleBuffer, RPSampleBufferType, Error?) -> Void)?, completionHandler: ((Error?) -> Void)? = nil)

-- Stops screen capture
func stopCapture(handler: ((Error?) -> Void)? = nil)

希望这将帮助您在应用程序中捕获屏幕。

参考链接:https ://developer.apple.com/documentation/replaykit/rpscreenrecorder

文档参考:https ://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS_11_0.html

后期发布但可能对仍在搜索与此问题相关的人有用。

iPhone屏幕共享:

我在共享屏幕上做了一些研发,并提出了以下更新。

WWDC 2017 会议 606

涵盖我们实际想要分享/广播或捕获我们的 iOS 设备屏幕的所有细节,包括音频和视频。

Apple 推出ReplyKit2用于屏幕捕获和共享。

广播代码:

1.创建RPScreenRecorder的对象:

`let broadCastController = RPBroadcastController()`

`let recorder = RPScreenRecorder.shared()`

2.使用startBroadcasting()方法开始广播:

    func startBroadcasting() {
            RPBroadcastActivityViewController.load { broadcastAVC, error in
                guard error == nil else {
                    print("Cannot load Broadcast Activity View Controller.")
                    return
                }
    
                if let broadcastAVC = broadcastAVC {
                    broadcastAVC.delegate = self
                    self.present(broadcastAVC, animated: true, completion: nil)
                }
            }
      }

3.使用下面的活动控制器方法来选择你的应用程序进行广播。

func broadcastActivityViewController(_ broadcastActivityViewController: RPBroadcastActivityViewController,
                                         didFinishWith broadcastController: RPBroadcastController?,
                                         error: Error?) {
        guard error == nil else {
            print("Broadcast Activity Controller is not available.")
            return
        }
        
        broadcastActivityViewController.dismiss(animated: true) {
            broadcastController?.startBroadcast { error in
                //TODO: Broadcast might take a few seconds to load up. I recommend that you add an activity indicator or something similar to show the user that it is loading.
                if error == nil {
                    print("Broadcast started successfully!")
                    self.broadcastStarted()
                }
            }
        }
    }

4.使用stopBroadcasting()方法停止广播:

func stopBroadcasting() {
        broadCastController.finishBroadcast { error in
            if error == nil {
                print("Broadcast ended")
                self.broadcastEnded()
            }
        }
}

希望这个最新的更新会有所帮助!

会尽快更新更多...

于 2017-06-07T07:37:15.590 回答