Вы можете сделать трюк и инициировать вызов с видео, но вместо того, чтобы ставить реальную видео-дорожку, вы добавите фиктивную "тихую" видео-дорожку:
function createSilentVideoTrack() {
const canvas = document.createElement("canvas");
canvas.width = 50;
canvas.height = 30;
canvas.getContext("2d").fillRect(0, 0, canvas.width, canvas.height);
animateCanvas(canvas);
const stream = canvas.captureStream(1);
const tracks = stream.getTracks();
const videoTrack = tracks[0];
return videoTrack;
}
И когда вам нужно включить видео Вы просто заменяете фиктивную видео дорожку на настоящую:
navigator.mediaDevices.getUserMedia(constraints).getVideoTracks()[0].then(track => {
connection.getSenders().filter(sender => sender.track !== null && sender.track.kind === "video").forEach(sender => {
sender.replaceTrack(track);
});