Пересмотр WebRTC между Chrome и Firefox

Я могу установить соединение WebRTC между Firefox и Chrome, но пересмотр между Firefox-Chrome не работает должным образом.

Нет проблем при пересмотре пары Chrome-Chrome и Firefox-Firefox.

С паролем Firefox-Chrome, когда я начинаю пересмотр с chrome после удаления или добавления трека, повторное соглашение успешно завершено, а onremovestream или onaddstream срабатывает корректно.

Но когда я начинаю перезаключение Firefox после удаления или добавления трека с помощью pc.removeTrack или pc.addTrack, перезаключение было успешным без каких-либо ошибок. Но в Chrome onremovestream или onaddstream обратные вызовы не запускаются. Когда я получаю MediaStream с помощью pc.getRemoteStreams, я вижу, что идентификаторы треков изменяются после перезаключения, но MediaStream не работает, когда я пытался его воспроизвести.

Одна странная вещь, которую я замечаю, - это то, что локальный идентификатор пути от Firefox не совпадает с идентификатором удаленной дорожки в Chrome (даже до перезаключения).

Поддерживает ли Chrome и Firefox пересмотр между браузерами (в основном, от firefox до chrome)?

Кто-нибудь достиг пересмотра между firefox и Chrome?

Есть ли способ обхода проблемы?

Ответ 1

Это не полное решение, а причина, по которой это происходит. Я рекомендую опубликовать решение, если вы его найдете.

Существует два плана UnifiedPlan и PlanB для нескольких потоков в WebRTC. PlanB был сброшен, и унифицированный план стал стандартом. Firefox реализовал UnifiedPlan, но Chrome все еще имеет реализацию PlanB. Здесь есть Chromium Bug.

Для этого был написан polyfill spd-interop. Но этот polyfill имеет ограничение, он поддерживает только пересмотр с Chrome на Firefox.

Если я найду обходное решение для этого, прежде чем хром исправит проблему, я обновлю ответ.