Не понятен сам смысл происходящего, требования.
Похоже на два кейса:
1. Озвучка.
С IP камеры приходит поток без аудио, который User1 озвучивает в реальном времени.
В результате User2 видит видео, синхронно озвученное User1.
Например, сурдоперевод в обратную сторону из жестов в голос.
В этом случае, User1 должен забрать поток с IP камеры, добавить к нему свой голос и ретранслировать аудио+видео на сервер отдельным потоком.
Только в этом случае поток будет полностью синхронным по аудио и видео.
В бразере это можно сделать если использовать стороннее ПО, например manycam. Она позволяет захватить видео с IP камеры и аудио с микрофона и отдать эти виртуальные устройства в браузер как обычные камеру и микрофон. Далее публиковать на сервер по WebRTC из браузера.
Другой способ - нам доработать Web SDK чтобы была возможность в браузере захватить стрим, который пришел с камеры, добавить к нему микрофон и опубликовать на сервер по WebRTC, т.е. браузером выполнить захват с IP камеры в качестве источника стрима как это делает manycam. Вероятно это можно сделать в Chrome с помощью MediaStream API.
Идея в том, что чтобы полностью синхронизовать аудио и видео потоки, они должны исходить из одного источника - в данном случае из браузера или ПО установленного локально. Источник как правило следит за синхронизацией и отправляет информацию о синхронизации в контрольных RTCP пакетах. Если же потоки идут с разных источников, то синхронизовать их без доступа к коду нельзя (нет доступа к коду браузера или к коду IP камеры). Хотя в теории можно было бы организовать общение между разнородными источниками с целью синхронизации, но это достаточно сложно.
2. Совместный просмотр. Игра.
Если User1 и User2 просто смотрят то, что происходит на экране и должны видеть это одновременно и обсуждать голосом, то синхронизация не требуется.
Они оба будут получать картинку с примерно одинаковой задержкой, менее 0.5 секунды при нормальной связи.
Например, если должны угадать что показывает им видео.