我正在使用WebRTC在兩個用戶之間構建視頻聊天。我想拍一張localView
視圖的快照,其中顯示了其中一個人。拍攝AVCaptureVideoPreviewLayer視圖的快照
這是我的課與configureLocalPreview
方法,視頻流與UIViews連接:
@IBOutlet var remoteView: RTCEAGLVideoView!
@IBOutlet var localView: UIView!
var captureSession: AVCaptureSession?
var videoSource: RTCAVFoundationVideoSource?
var videoTrack: RTCVideoTrack?
func configureLocalPreview() {
self.videoTrack = self.signaling.localMediaStream.self.videoTracks.first as! RTCVideoTrack?
self.videoSource = (self.videoTrack?.source as? RTCAVFoundationVideoSource)
self.captureSession = self.videoSource?.self.captureSession
self.previewLayer = AVCaptureVideoPreviewLayer.init(session: self.captureSession)
self.previewLayer.frame = self.localView.bounds
self.localView.layer.addSublayer(self.previewLayer)
self.localView.isUserInteractionEnabled = true
//self.localView.layer.position = CGPointMake(100, 100);
}
在我要訪問快照的地方,我呼籲:
self.localView.pb_takeSnapshot()
pb_takeSnapshot
來從我在另一篇文章中找到的UIView擴展。它的定義是這樣的:
extension UIView {
func pb_takeSnapshot() -> UIImage {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
drawHierarchy(in: self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return image
}
}
當我一起來看看在Xcode調試的形象,它看起來完全是綠色的人,我可以在iPhone屏幕上看到(這種觀點裏面),是不是有:
那會是什麼人是不可見的原因是什麼?難道只是無法做出一個流的快照?感謝您看一看!
感謝您的回答,我有點困惑如何剪切實際的代碼看起來像,因爲我已經嘗試了這麼多不同的代碼版本。 – Linus
@Linus我已經更新了可以用來啓動攝像頭並查看本地預覽的示例代碼片段。 –