微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将画布流与 getUserMedia 的音频流合并是听不见的 (kurento/webrtc)

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

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

解决方法

没有要测试的 Kurento,但问题可能是 CanvasCaptureMediaStreamTrack 在画布上下文中一段时间​​不活动后会被静音。

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

另外,您可能想从一个新的 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,1,1),500);
ctx.clearRect(0,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'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。