Резюме: как транслировать высококачественное видео с помощью нативного WebRTC?
У меня есть поток h264 1920x1080 со скоростью около 30 кадров в секунду. В настоящее время я могу передавать это с сервера на локальном хосте собственному клиенту на локальном хосте.
Я написал сервер WebRTC, используя собственную библиотеку Google WebRTC. Я написал VideoEncoder и VideoEncoderFactory, которые берут кадры, состоящие из уже закодированных данных, и транслируют их по видеодорожке. Используя это, я могу отправить свой поток h264 на сервер WebRTC по каналу и увидеть видеопоток в браузере.
Однако каждый раз, когда что-то движется, видео портится. Он продолжает играть, но полон артефактов. В конце концов я обнаружил, что WebRTC пропускает некоторые из моих кадров. Когда я прикрепляю последовательно увеличивающийся идентификатор к каждому кадру, прежде чем передать его в rtc::AdaptedVideoTrackSource::OnFrame, и регистрирую этот же идентификатор в webrtc::VideoEncoder::Encode, я вижу, что некоторые из моих кадров просто исчезают.
В этом есть смысл, я пытаюсь транслировать высококачественное видео через что-то, предназначенное для видеочата, и снижение частоты кадров устраняет повреждение. Однако я не прошу многого от библиотеки WebRTC, она просто пересылает уже закодированные данные клиенту на локальном хосте. У меня есть родное приложение, которое отлично справляется с этим, и я видел один браузерный клиент WebRTC, который может это сделать. Есть ли поле в SDP или какое-то изменение конфигурации, которое позволит мне транслировать видео?