У вас в коде wcs/examples/demo/streaming/player/player.js указан:
Code:
preferredMediaProvider: 'WSPlayer'
Инициализация:
Code:
Flashphoner.init({
flashMediaProviderSwfLocation: '../../../../media-provider.swf',
receiverLocation: '../../dependencies/websocket-player/WSReceiver2.js',
decoderLocation: '../../dependencies/websocket-player/video-worker2.js',
preferredMediaProvider: 'WSPlayer'
});
Это значит, что все подключения будут проигрываться WSPlayer.
1. WSPlayer работает по TCP и может растягивать задержку.
Поэтому задержка может плавать в зависимости от состояния сети.
2. Далее, у вас RTSP камеры отдают потоки 1980p около 3Mbps.
Сервер находится в Германии. Т.е. поток 3 Mbps с камеры идет на сервер в Германиию, потом обратно на браузер в Москву (?).
3. Кроме этого, вы передаете плееру целевое разрешение 1280x720, поэтому будет включаться серверный транскодинг 1980p > 720p, что добавит задержки.
Таким образом, чтобы устранить задержку нужно
1. Убрать WSPlayer из приоритета. По умолчанию используется WebRTC.
2. Убрать целевое разрешение 1280x720. По-умолчанию используется то разрешение, которое на камере.
3. Возможно сервер перенести ближе к камерам географически.
4. Проверить, работают ли ваши камеры в UDP-режиме.
Для этого в настройках WCS-сервера нужно добавить настройку rtsp_interleaved_mode=false и перезагрузить WCS командой
Code:
service webcallserver restart
Если non-interleaved (UDP) режим поддерживается, воспроизведение с камеры будет работать.
UDP имеет минимальную задержку, но может терять пакеты. Нужно убедиться, что от камеры до сервера нет значительных потерь, которые портят картинку.
Дополнительно:
Обновить сервер и Web SDK до последней версии, где поддерживается WebRTC в iOS Safari 11
Про поддержку WebRTC в iOS Safari 11 и Mac Safari 11 можно почитать
здесь.