буффер на стороне клиента

KonstantinK

New Member
при воспроизведении потока в VLC видео идет с задержкой, но не замирает
а при воспроизведении потока в HTML5 плеере видео идет без задежки, но замерает.
подскажите есть ли возможность использования буфера на стороне клиента для HTML5 плеера?
 

Max

Administrator
Staff member
Добрый день.
при воспроизведении потока в VLC видео идет с задержкой, но не замирает
а при воспроизведении потока в HTML5 плеере видео идет без задежки, но замерает.
Если это происходит на одном и том же ПК (по RTMP играет, по WebRTC фризит), скорее всего, проблема в канале до сервера и, скорее всего, в канале есть потери. Попробуйте переключиться на TCP на стороне клиента, это можно проверить в примере Media Devices
1597026687631.png

Это может дать небольшую задержку (до 1-3 секунд), но позволит исключить потери.
 

KonstantinK

New Member
Спасибо, попробую,
мы можем немного пожертвовать реальным временем ради качества изображения и поэтому мы так же рассматриваем использование HLS для передачи видео на мобильные устройства,
но при тестировании я зметил что качество востроизведения одного и того же потока через webrtc заметно лучше чем через HLS, с чем это может быть связано и как это можно настроить?
 
Last edited:

Max

Administrator
Staff member
мы можем немного пожертвовать реальным временем ради качества изображения и поэтому мы так же рассматриваем использование 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
В этом примере сервер будет запрашивать у браузера ключевые фреймы каждые две секунды. Более частые запросы нецелесообразны, т.к. могут перегрузить канал публикации за счет объемов передаваемых данных.
 
Top