将 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'
当用户没有视频设备时,我使用 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'