Проблема WebRTC с соотношением сторон просмотра видео на iOS - PullRequest
0 голосов
/ 28 июня 2019

Я использую платформу WebRTC для iOS для реализации функции видеовызова в моем приложении.До сих пор я был в состоянии установить видеозвонок другому пользователю, но у меня есть проблема пользовательского интерфейса с объектом RTCEAGLVideoView и его соотношением сторон.

До сих пор я реализовал эту функциючтобы вычислить кадр для аспектного заполнения представления видео рендеринга для его представления контейнера:

extension VideoCallViewController: RTCEAGLVideoViewDelegate {

    func videoView(_ videoView: RTCEAGLVideoView, didChangeVideoSize size: CGSize) {
        if videoView === localVideoRenderer && size.height > 0 && size.width > 0 {
            let videoFrame = aspectFillRect(for: size, containedIn: localVideoView.frame)
            videoView.frame = videoFrame
        }
    }

    func aspectFillRect(for size: CGSize, containedIn rect: CGRect) -> CGRect {
        let maxFloat: CGFloat = max(rect.size.height, rect.size.width)
        let aspectRatio = size.width / size.height
        var frame = CGRect(origin: .zero, size: rect.size)
        if size.width < size.height {
            frame.size.width = maxFloat
            frame.size.height = frame.size.width / aspectRatio
        } else {
            frame.size.height = maxFloat
            frame.size.width = frame.size.height * aspectRatio
        }
        frame.origin.x = (rect.size.width - frame.size.width) / 2
        frame.origin.y = (rect.size.height - frame.size.height) / 2

        return frame
    }
}

До сих пор мне удавалось получить правильное соотношение сторон, но теперь представление рендеринга отображает большое(увеличенный) вывод видеоизображения, поэтому я не уверен, верны ли мои расчеты или что-то еще отсутствует в моем коде, чтобы можно было правильно масштабировать заливку.

Есть ли ошибка вмой код, где я вычисляю правильный CGRect для размера рендеринга видео, содержащегося в представлении контейнера, или что-то еще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...