我想实现像Skype这样的屏幕共享功能(当应用程序在后台时,它也会共享iPhone的屏幕),为此我使用广播扩展。
这是我在 viewcontroller.swift 中的代码
import UIKit
import ReplayKit
@available(iOS 12.0, *)
class ViewController: UIViewController {
var broadcastPicker: RPSystemBroadcastPickerView?
var broadcastSession : NSObject?
override func viewDidLoad() {
super.viewDidLoad()
let kPickerFrame = CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0)
broadcastPicker = RPSystemBroadcastPickerView(frame: kPickerFrame)
broadcastPicker?.backgroundColor = UIColor.green
broadcastPicker!.preferredExtension = "com.sharescreen.Recoder"
view.addSubview(broadcastPicker!)
extensionContext?.loadBroadcastingApplicationInfo(completion: {
(bundleID, displayName, appIcon) in
})
}
}
Run Code Online (Sandbox Code Playgroud)
当我点击 RPSystemBroadcastPickerView 时,我会弹出开始广播,当我开始广播时,任何扩展方法都没有调用。
这是我的扩展课程
class SampleHandler: RPBroadcastSampleHandler {
var session : VTCompressionSession?
override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
// User …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我正在 AVView 中播放视频,现在我正在该视图中按视图进行一些转换,现在我想将该视图录制为视频,我也需要音频,那么我该怎么做?
我尝试过这个库,但它多次卡住视频
https://github.com/wess/Glimpse
我做了足够的研发,但我没有得到任何可能的解决方案。
这是我的代码:
{
guard let path = Bundle.main.path(forResource: "video2", ofType: "mov") else {
return
}
let videoURL = NSURL(fileURLWithPath: path)
// Create an AVPlayer, passing it the local video url path
let player = AVPlayer(url: videoURL as URL)
let controller = AVPlayerViewController()
controller.player = player
present(controller, animated: true) {
player.play()
self.createImageView()
controller.view.addSubview(self.viewForImage)
self.zoomAnimationCount = 0
self.zoomInAnimation()
DispatchQueue.main.async {
self.glimpse!.startRecording(controller.view, onCompletion: { fileOuputURL in
print("DONE WITH OUTPUT: \(fileOuputURL?.absoluteString ?? "")")
})
DispatchQueue.main.asyncAfter(deadline: .now() + 20.0, execute: …Run Code Online (Sandbox Code Playgroud)