Единый поток аудио / видео в Chrome WebRTC без тегов ssrc

Возможно ли однопотоковое аудио (или видео) через Chrome WebRTC, когда вы удаляете строки a = ssrc из SDP?

Я попытался отфильтровать строки a = ssrc (с помощью кода ниже), но однопотоковое аудио не сработало. Я пробовал также однопотоковое видео и переименование вместо удаления строк с тем же результатом. Я изменяю как предложения, так и ответы на SDP. Интересно, что эта фильтрация работает, когда вы пытаетесь отправить SDP как с аудио, так и с видео - в таком сценарии будет работать только звук. Однако у меня были проблемы с повторным согласованием в таком сценарии в нашем приложении, поэтому, вероятно, это недопустимое решение.

Вы можете увидеть минимальный пример с одним потоком аудио / видео в этом репо: https://github.com/Tev-work/webrtc-audio-demo.

Если возможно, не могли бы вы предоставить минимальный пример кода с работающим звуком? Что должна делать функция modifySdppublic / client.js), предпочтительно с использованием репозитория выше?

В настоящее время он изменяет sdp с помощью этого кода:

sdp = sdp.replace(/a=ssrc/g, 'a=xssrc');
sdp = sdp.replace(/a=msid-semantic/g, 'a=xmsid-semantic');
sdp = sdp.replace(/a=mid/g, 'a=xmid');
sdp = sdp.replace(/a=group:BUNDLE/g, 'a=xgroup:BUNDLE');

Если это невозможно, знаете ли вы, было ли такое ограничение где-то официально заявлено (пожалуйста, укажите ссылку), или оно просто в какой-то момент стало неработоспособным? Похоже, что это работало раньше (около M29, см. Комментарии здесь https://bugs.chromium.org/p/webrtc/issues/detail?id=1941 - не говоря уже о том, что это не должно было работать).

Мотивация: иногда мы отправляем SDP через SIP PBX, которые иногда отфильтровывают линии SSRC. Поддержка нескольких потоков в таких ситуациях, очевидно, исключена (может быть, с некоторыми потоками взлома на стороне сервера?), Но поддержка хотя бы аудио только для таких сценариев была бы полезна для нас.


person Tev    schedule 17.05.2018    source источник


Ответы (1)


это все еще возможно, даже если есть некоторые побочные эффекты, такие как (устаревшие) getStats не распознают поток, см. (эта ошибка) [https://bugs.chromium.org/p/webrtc/issues/detail?id=3342].

Вы пытаетесь удалить строки a = ssrc перед вызовом setLocalDescription. Вероятно, это не сработает. Если вы хотите смоделировать сценарий, попробуйте удалить их перед вызовом setRemoteDescription с SDP.

person Philipp Hancke    schedule 17.05.2018
comment
Это решает мою проблему - я, вероятно, должен сказать Chrome, чтобы он пометил пакеты некоторыми SSRC (не удалял из локального описания), но удалил из удаленного описания строку a = msid чтобы Chrome мог автоматически обнаруживать (?) отмеченные пакеты. Наверное? У меня нет времени возиться с Wireshark. . . Но ваш ответ очень помог, так что спасибо! / пока не могу проголосовать / - person Tev; 18.05.2018