Чесно посміхнули повідомлення)
Існує два варіанта реалізації, і обидна насправді дуже прості, перший дуже хороший, другий дуже погонний, тут я бачу розглядають лише другий (запис відео на стороні клієнта))
Якшо вам потрібне якісне професійне рішення, то другий варіант ми не розглядаємо. Але й перший має під варіанти що збільшує важкість реалізації, в залежності від ваших вимог та інтеграції в ваш проект.
Варіант з записом відео на стороні клієнта використовуючи API браузера, це дуже поганий варіант бо:
- Клієнт кожен раз має надавати дозвіл браузеру використовувати захват екрану на запис, що не зручно і може злякати користувача. Якщо це маркетинг/аналітичний модуль, то цей варіант очевидно не має місця на існування принципі)
- Підтримка браузерами цього API все ще на низькому рівні, в старих вона відсутня взагалі
- Ми змушуємо клієнта вести повноцінну трансляцію відео, що може бути для нього не можливо або не бажано, іза використання великого трафіку
- Ми навантажуємо свою систему великим трафіком, як мережеві драйвери так і базу даних де будуть зберігатися фрагменти відео, також використання процесора і оперативної пам'яті на обробку таких запитів. Якщо потрібне якісне та стабільне рішення, то бажано зберігати в потоковому форматі HLS/DASH, бо не можливо гарантувати що у консультанта або клієнта не будуть мережеві затримки, або збоїв, або якщо інший консультант захоче підключитися до потоку в непередбачуваний момент. Це ще більше збільшить трафік, за рахунок ключових кадрів відео та надлишкових мета тегів. Також доведеться на сервері декодувати потоку в HLS/DASH.
Хоча до кожного пунктах існують методи оптимізації, картина в цілому не дуже) за одним винятком. Якщо це наприклад щось типу вебінарну, коли клієнт свідомо вимагає даний функціонал. Тоді ми можемо використати MediaDevices.getDisplayMedia + WebRTC - для передачі відео в реальному часі між пристроями клієнта та консультантів. Такий підхід може бути дуже ефективним та витримувати великі навантаження.
Кращий варіант збирати статичні дані (метрики) дій користувача, положення мишки/тач, кліки, скролл і так далі. І вже на основі цих даних збирати відео на сервері, а краще безпосередньо в браузері консультанта, щоб не навантажувати сервер.
Це ідеальне рішення тому що:
- Можливо реалізувати все те як при прямому запису відео.
- Як для клієнта так і для сервера, це дуже низки навантаження. Треба лише декілька біт в секунду порівняно з відео де мегабайти в секунду, або при максимальної оптимізації кілобайт. Навантаження за годину складе значно менше ніж завантаження самої сторінки.
За детальною консультацією звертайтеся в ЛС. Буду радий бути корисним:)