#browser #webrtc #gstreamer
#браузер #webrtc #gstreamer
Вопрос:
Я разрабатываю приложение на основе GStreamer для получения потока WebRTC из браузера. Я только что начал с примера webrtc-sendrecv.c: https://gitlab.freedesktop.org/gstreamer/gst-examples/-/tree/master/webrtc/sendrecv/gst
Проблема в поврежденном изображении. Источник — общий доступ к экрану (getDisplayMedia) — через некоторое время передачи я получаю квадраты разного цвета — чего-то не хватает даже на одном ПК или локальной сети.
Пробовал браузер на Linux и macOS и приложение GStreamer на двух дистрибутивах Linux (gstreamer 1.16.2 и 1.18.0)
Теперь я не знаю, как это можно обнаружить и как можно отправлять сообщения PLI или FIR в исходный браузер.
Пожалуйста, вы знаете, как смотреть этому в лицо? И если да, то каким образом? Спасибо, d3im
EDIT1: Хорошо, я вижу значительную потерю пакетов после некоторого времени работы в vivaldi://webrtc-internals В приложении example должно быть что-то не так.
Я могу узнать на стороне браузера, сколько пакетов потеряно:
function getStats(pc) {
if (pc) {
pc.getStats(null).then(stats => {
stats.forEach(report => {
if ( (report.type=="remote-inbound-rtp") amp;amp; (report.kind=="video") ) {
console.log(report.packetsLost);
}
})
})
}
}
Каков способ сообщить браузеру PLI? Есть ли какой-нибудь вызов API для этого в JS?
Ответ №1:
Если вы используете Chrome, чтобы получить представление о количестве потерь пакетов, вы можете проверить статистику WebRTC, посетив chrome://webrtc-internals. Он покажет вам множество статистических данных о фактическом соединении RTCPeerConnection, включая потерю пакетов и время прохождения в оба конца.