将 canvas 流与 getUserMedia 的音频流合并是听不见的 (kurento/webrtc)

Merging the canvas stream with getUserMedia's audio stream is not audible (kurento/webrtc)

当用户没有视频设备时,我使用 canvas 视频流并将视频轨道与从 getUserMedia(audio stream) 获得的流合并。对方连接完美,但其他用户听不到音频。

如果我共享我的屏幕并将此视频轨道合并到流中,那么音频将完美无缺。 我注意到 CanvasMediaStream 不工作,但 MediaStream 工作正常。我不知道这是 kurento 的问题还是我做错了什么。

没有 Kurento 可以测试,但问题可能是 CanvasCaptureMediaStreamTrack 在 canvas 的上下文中闲置一段时间后被静音。

要解决此问题,您可以简单地设置一个绘图循环来定期更新 canvas(每半秒一次就足够了,不会造成太多开销)。

此外,您可能想从一个新的 MediaStream 开始,尽管我怀疑这有什么影响:

// assumes there is a 'canvas' and a 'mic_stream'

// make the context active, so the stream is not muted
const ctx = canvas.getContext("2d");
setInterval(() => ctx.clearRect(0,0,1,1), 500);
ctx.clearRect(0,0,1,1);
const canvas_stream = canvas.captureStream();

const canvas_track = canvas_stream.getVideoTracks()[0];
const mic_track = mic_stream.getAudioTracks()[0];
const merged_stream = new MediaStream([ canvas_track, mic_track ]);

// do something with 'merged_stream'