Видео тормозит

kontroller8

New Member
Браузер Chrome, видео транслируется нормально, но при движении превращается в большие пиксели. При трансляции с iPad картинка отличная, но идет рывками. Подскажите, с чего начинать? Надо какие-то настройки сервера менять? В какую сторону смотреть?
 

Max

Administrator
Staff member
Добрый день.
Для повышения качества картинки, настройте ограничения битрейта на стороне сервера
Code:
webrtc_cc2_twcc=false
webrtc_cc_min_bitrate=500000
webrtc_cc_max_bitrate=1000000
и на стороне браузера при помощи замены параметров в SDP, как описано здесь. Также через SDP можно управлять допустимой пропускной способностью канала, см здесь.
Все значения даны только для примера, Вам необходимо подбирать их под свои каналы между публикатором и сервером. Обратите внимание, что битрейт на сервере задается в битах в секунду, в то время как в SDP - в килобитах в секунду.
Некоторым клиентам помогало также изменение приоритета кодека на сервере с H264 (по умолчанию) на VP8:
Code:
codecs=opus,...,vp8,h264,flv,mpv
 

kontroller8

New Member
Качество стало лучше. Теперь другая проблема - в Opera не хочет работать
 

Max

Administrator
Staff member
Некоторые версии Opera могут не поддерживать H264, но VP8 должен работать. Попробуйте переключиться на VP8 на стороне сервера.
Также Вы можете исключить H264 на стороне клиента при помощи stripCodecs (пример для публикации потока, то же самое можно сделать и для воспроизведения):
Code:
publishStream = session.createStream({
    ...
    stripCodecs: "h264,H264"
}).on(STREAM_STATUS.PUBLISHING, function (publishStream) {
    ...
});
publishStream.publish();
это можно делать в зависимости от браузера
 

kontroller8

New Member
Когда прописываю в указанном месте stripCodecs: "h264,H264", то трансляция вообще пропадает во всех браузерах...
Версия Opera 57.0.3098.116
 
Last edited:

Max

Administrator
Staff member
Уточните, пожалуйста, какую OS используете.
 

kontroller8

New Member
Также есть проблема с Safari. Отдаваемое видео на других устройствах воспроизводится хорошо. А в Safari идет с тормозами. Картинка отличная, но при движении в кадре картинка идет сильно заметными рывками
 

Max

Administrator
Staff member
Добрый день.
Когда прописываю в указанном месте stripCodecs: "h264,H264", то трансляция вообще пропадает во всех браузерах
Если проблемы с воспроизведением, то и убирать неподдерживаемый кодек нужно не на публикующей стороне, а на стороне подписчика. Параметр stripCodecs рпботает одинаково для обеих сторон.
Также есть проблема с Safari. Отдаваемое видео на других устройствах воспроизводится хорошо. А в Safari идет с тормозами
Safari на обоих платформах не любит резкие изменения битрейта. Для трансляций из Chrome можно через SDP задать x-google-min-bitrate раным x-google-max-bitrate. Для остальных случае поможет включение транскодинга, например, на стороне подписчика задать явным образом размеры картинки, в этом случае включится транскодинг для этого подписчика.
Кроме того, Safari хорошо отображает RTMP-трансляции из OBS, Wirecat или ffmpeg, т.к. в этом случае также обеспечивается стабильный битрейт.
 

kontroller8

New Member
Убираю кодек на стороне подписчика (добавляю stripCodecs: "h264,H264") - не воспроизводится вовсе. Опера пока остается не доступна...
 

pride

Member
Убираю кодек на стороне подписчика (добавляю stripCodecs: "h264,H264") - не воспроизводится вовсе. Опера пока остается не доступна...
Проблемы с оперой решили только выдвиганием vp8 в приоритет. Неделю потратил на попытки обойти этот глюк. Причем зависит от билда ОС и версии браузера (в некоторых работает).

 

Max

Administrator
Staff member
В сборке 3753 была исправлена регрессия, при которой сломалось управление битрейтом: настройки webrtc_cc_min_bitrate webrtc_cc_max_bitrate
Обновление и уствновка настроек битрейта должна помочь справиться с рывками в видео:
flashphoner.properties
Code:
webrtc_cc_min_bitrate=1000000
webrtc_cc_max_bitrate=1200000
В данном случае мы зажимаем битрейт на 1 - 1.2 Mbps чтобы предотвратить нежелательные всплески и рывки
 

kontroller8

New Member
Задал
webrtc_cc_min_bitrate=1000000
webrtc_cc_max_bitrate=1200000
Рывки в Safari пропали, стало лучше
Но проблема с оперой осталась.
Убираю кодек на стороне подписчика (добавляю stripCodecs: "h264,H264") - не воспроизводится вовсе. Ни в каких браузерах.
Прикрепляю скриншот файла настроек сервера
 

Attachments

kontroller8

New Member
Когда в браузере в настройках (Опера) где WebRTC устанавливаю "Использовать любой подходящий сетевой интерфейс (рекомендовано)", то работает нормально
 
Top