STR:
- открыть демо-пример "Media Devices"
- публикация потока: снять галочку "Send Video"
- публикация потока: нажать "Connect", затем "Publish"
- потребление потока: нажать "Play"
Сразу же в консоли появится ошибка: "Uncaught (in promise) DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to parse SessionDescription. m=video 0 RTP/SAVPF Invalid value:" (стектрейс обрезан).
Спустя какое-то время возникнет событие сессии "FAILED" с ошибкой "Failed by ICE timeout".
Проблемы тут две:
1. Эту ошибку невозможно перехватить из пользовательного кода. Она возникает в функции "setRemoteSdp", вызов "reject(error)", и будет болтаться в консоли. Это особенно плохо в контексте того, что поверх SDK написана своя обёртка, которая поставляется партнёрам с целью упрощения интеграции, и такие ошибки у них будут вызывать только "WTF".
2. Статус сессии меняется на FAILED спустя какое-то время после возникновения ошибки, хотя проблема с парсингом SDP, по идее, фатальна и должна прерывать дальнейшее выполнение сразу.
В данном случае, проблема вызвана искусственно: при публикации потока в нём отсутсвует видео, но плееру дана команда его потреблять. В нашем случае, не всегда есть возможность на той стороне, где находится плеер, в момент начала проигрывания потока знать, есть ли там аудио и\или видео, что бы правильно его сконфигурировать.
В связи с этим, подскажите, пожалуйста, как быть в ситуации, если требуется на стороне плеера перед проигрыванием потока определить, доступно ли у него аудио, видео, оба варианта, или ничего не доступно, что бы его корректно сконфигурировать: как минимум, правильно задать "constraints.audio" и "constraints.video". Ну или хотя бы перехватить такие ошибки при вызове "stream.play()".
Спасибо.
- открыть демо-пример "Media Devices"
- публикация потока: снять галочку "Send Video"
- публикация потока: нажать "Connect", затем "Publish"
- потребление потока: нажать "Play"
Сразу же в консоли появится ошибка: "Uncaught (in promise) DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to parse SessionDescription. m=video 0 RTP/SAVPF Invalid value:" (стектрейс обрезан).
Спустя какое-то время возникнет событие сессии "FAILED" с ошибкой "Failed by ICE timeout".
Проблемы тут две:
1. Эту ошибку невозможно перехватить из пользовательного кода. Она возникает в функции "setRemoteSdp", вызов "reject(error)", и будет болтаться в консоли. Это особенно плохо в контексте того, что поверх SDK написана своя обёртка, которая поставляется партнёрам с целью упрощения интеграции, и такие ошибки у них будут вызывать только "WTF".
2. Статус сессии меняется на FAILED спустя какое-то время после возникновения ошибки, хотя проблема с парсингом SDP, по идее, фатальна и должна прерывать дальнейшее выполнение сразу.
В данном случае, проблема вызвана искусственно: при публикации потока в нём отсутсвует видео, но плееру дана команда его потреблять. В нашем случае, не всегда есть возможность на той стороне, где находится плеер, в момент начала проигрывания потока знать, есть ли там аудио и\или видео, что бы правильно его сконфигурировать.
В связи с этим, подскажите, пожалуйста, как быть в ситуации, если требуется на стороне плеера перед проигрыванием потока определить, доступно ли у него аудио, видео, оба варианта, или ничего не доступно, что бы его корректно сконфигурировать: как минимум, правильно задать "constraints.audio" и "constraints.video". Ну или хотя бы перехватить такие ошибки при вызове "stream.play()".
Спасибо.
Last edited: