мы можем немного пожертвовать реальным временем ради качества изображения и поэтому мы так же рассматриваем использование HLS для передачи видео на мобильные устройства,
HLS все еще остается более-менее универсальным протоколом, который поддерживается на всех устройствах. Следует, однако, учесть, что задержка может составлять до десятков секунд.
но при тестировании я зметил что качество востроизведения одного и того же потока через webrtc заметно лучше чем через HLS, с чем это может быть связано и как это можно настроить?
По умолчанию, для HLS включен транскодинг к разрешению 640x480. Если для транскодинга не хватает ресурсов сервера, качество может быть снижено. Попробуйте отключить транскодинг настройками
Code:
hls_player_width=0
hls_player_height=0
В этом случае, однако, публикация должна обеспечивать стабильный FPS и регулярную высылку ключевых фреймов, иначе HLS будет играть с фризами. FPS при публикации WebRTC настраивается на стороне клиента
Code:
session.createStream({
name: streamName,
display: localVideo,
cacheLocalResources: true,
constraints: {
video: {
frameRate: 30
}
}
...
}).publish();
Запросы ключевых фреймов настраиваются на стороне сервера
Code:
periodic_fir_request = true
periodic_fir_request_interval = 2000
rtcp_pli_request_interval = 2000
В этом примере сервер будет запрашивать у браузера ключевые фреймы каждые две секунды. Более частые запросы нецелесообразны, т.к. могут перегрузить канал публикации за счет объемов передаваемых данных.