परिदृश्य: मैं एक ऐप के अंदर एक WebRTC दृश्य बना रहा हूं वीडियो के लिए कंटेनर में हमेशा 160 की ऊंचाई होगी।
कंटेनर के केंद्र में 160 की अधिकतम ऊंचाई के साथ दूरस्थ वीडियो प्रदर्शित किया जाना चाहिए, वीडियो के पहलू अनुपात का सम्मान करने के लिए चौड़ाई को बढ़ाया जाना चाहिए। चौड़ाई भी दृश्य चौड़ाई से बड़ी नहीं हो सकती है, उस स्थिति में चौड़ाई देखने की चौड़ाई के बराबर होगी और ऊंचाई को पहलू अनुपात के अनुकूल बनाया जाना चाहिए।
शीर्ष दाएं कोने में फ्रंट कैमरे से 100 की अधिकतम चौड़ाई के साथ स्थानीय वीडियो प्रदर्शित किया जाना चाहिए और स्थानीय वीडियो के पहलू अनुपात का सम्मान करने के लिए ऊंचाई को अनुकूलित किया जाना चाहिए
मेरा कोड अब तक:
func createPeerConnection () {
// some other code
self.localStream = self.factory.mediaStream(withStreamId: "stream")
let videoSource = self.factory.videoSource()
let devices = RTCCameraVideoCapturer.captureDevices()
if let camera = devices.last,
let format = RTCCameraVideoCapturer.supportedFormats(for: camera).last,
let fps = format.videoSupportedFrameRateRanges.first?.maxFrameRate {
let intFps = Int(fps)
self.capturer = RTCCameraVideoCapturer(delegate: videoSource)
self.capturer?.startCapture(with: camera, format: format, fps: intFps)
videoSource.adaptOutputFormat(toWidth: 100, height: 160, fps: Int32(fps))
}
let videoTrack = self.factory.videoTrack(with: videoSource, trackId: "video")
self.localStream.addVideoTrack(videoTrack)
DispatchQueue.main.async {
if self.localView == nil {
let videoView = RTCEAGLVideoView(frame: CGRect(x: self.view.frame.size.width - 105, y: 5, width: 100, height: 160))
videoView.backgroundColor = UIColor.red
self.view.addSubview(videoView)
self.localView = videoView
}
videoTrack.add(self.localView!)
}
}
func peerConnection(_ peerConnection: RTCPeerConnection, didAdd stream: RTCMediaStream) {
self.remoteStream = stream
if let videoTrack = stream.videoTracks.first {
DispatchQueue.main.async {
if self.remoteView == nil {
let videoView = RTCEAGLVideoView(frame: CGRect(x: self.view.frame.size.width - 50, y: 0, width: 100, height: 160))
videoView.backgroundColor = UIColor.green
if let local = self.localView {
self.view.insertSubview(videoView, belowSubview: local)
} else {
self.view.addSubview(videoView)
}
self.remoteView = videoView
}
videoTrack.add(self.remoteView!)
}
}
}
मुझे नहीं पता कि वीडियो, स्थानीय या रिमोट दोनों में से किस तरह का पहलू अनुपात प्राप्त करना है। अगर मेरे पास ऐसा था, तो मैं उनमें से प्रत्येक के लिए उपयुक्त चौड़ाई और ऊंचाइयों की गणना कर सकता था