Нет звука из потока WebRCT на Chrome без аудио тега - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть веб-приложение для аудиовызовов между клиентами. В качестве сервера я использую FreeSwitch с SIP (используя SIP.js) через безопасный веб-сокет. Когда я звоню между firefox и firefox, все работает нормально, но когда я звоню между firefox и chrome, я ничего не слышу в клиенте Chrome На клиенте Firefox я слышу, что было отправлено из Chrome.

Используя Wireshark, я обнаружил, что поток достигает клиентского компьютера и является правильным. После долгих проб и ошибок я обнаружил, что помогает создать тег audio в js-коде и назначить ему удаленный поток как srcObject (адаптация решения из WebRTC не работает с AudioContext ).

const audioContext = (window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.oAudioContext || window.msAudioContext);

var aaaudio = new Audio();                                           <--- adding those lines helps
aaaudio.srcObject = sipSession.mediaHandler.getRemoteStreams()[0];   <--- adding those lines helps

audioContext.createMediaStreamSource(sipSession.mediaHandler.getRemoteStreams()[0])
var gainNode = ctx.createGain();
gainNode.gain.value = .5; 
source.connect(gainNode);
gainNode.connect(ctx.destination);

Я действительно не знаю, почему это не работает без звукового тега и как я могу исправить это, чтобы работать без него. Я что-то упустил?

Есть ли в Chrome какой-либо механизм, блокирующий вывод звука из потока, подключенного в js, без создания явного нового тега аудио?

Информация: Chrome был запущен как с отключенной, так и с включенной политикой cors

...