Senaryo: Bir uygulamanın içinde WebRTC görünümü oluşturuyorum Videolar için kapsayıcı her zaman 160 yüksekliğe sahip olacak.
Kabın ortasında maksimum 160 yüksekliğe sahip uzak video gösterilmeli, videonun en boy oranına göre genişlik ölçeklendirilmelidir. Genişlik de görünüm genişliğinden daha büyük olamaz, bu durumda genişlik görünüm genişliğine eşit olur ve yükseklik en boy oranına uyarlanmalıdır.
Sağ üst köşede ön kameradan maksimum 100 genişliğe sahip yerel video görüntülenmeli ve yükseklik yerel videonun en boy oranına göre uyarlanmalıdır
şimdiye kadar benim kod:
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!)
}
}
}
Yerel veya uzak videoların en boy oranını nasıl alacağımı bilmiyorum. Eğer olsaydım, her biri için uygun genişlik ve yükseklikleri hesaplayabilirdim