如何使用 simple-peer 添加和删除视频轨道
How to add Video track and remove it using simple-peer
我在我的视频聊天 Web 应用程序中使用 simple-peer。如果两个用户都在进行音频通话,我该如何添加视频轨道以及如何禁用它。如果我使用 replaceTrack 我又出现了这个问题
error Error: [object RTCErrorEvent]
at makeError (index.js:17)
at RTCDataChannel._channel.onerror (index.js:490)
如果没有为用户启用视频,我将显示个人资料照片。如果启用了视频我想用视频替换这张图片并为通话中的所有人替换它
如果两个用户只启用音频,流只包含音轨,所以这里我们可以添加黑色space(结束视频轨道)。这样我们就可以轻松解决这个问题
有关更多信息,请访问此
https://blog.mozilla.org/webrtc/warm-up-with-replacetrack/
上面的代码link
let silence = () => {
let ctx = new AudioContext(), oscillator = ctx.createOscillator();
let dst = oscillator.connect(ctx.createMediaStreamDestination());
oscillator.start();
return Object.assign(dst.stream.getAudioTracks()[0], {enabled: false});
}
let black = ({width = 640, height = 480} = {}) => {
let canvas = Object.assign(document.createElement("canvas"), {width, height});
canvas.getContext('2d').fillRect(0, 0, width, height);
let stream = canvas.captureStream();
return Object.assign(stream.getVideoTracks()[0], {enabled: false});
}
let blackSilence = (...args) => new MediaStream([black(...args), silence()]);
video.srcObject = blackSilence();
我在我的视频聊天 Web 应用程序中使用 simple-peer。如果两个用户都在进行音频通话,我该如何添加视频轨道以及如何禁用它。如果我使用 replaceTrack 我又出现了这个问题
error Error: [object RTCErrorEvent]
at makeError (index.js:17)
at RTCDataChannel._channel.onerror (index.js:490)
如果没有为用户启用视频,我将显示个人资料照片。如果启用了视频我想用视频替换这张图片并为通话中的所有人替换它
如果两个用户只启用音频,流只包含音轨,所以这里我们可以添加黑色space(结束视频轨道)。这样我们就可以轻松解决这个问题 有关更多信息,请访问此 https://blog.mozilla.org/webrtc/warm-up-with-replacetrack/
上面的代码link
let silence = () => {
let ctx = new AudioContext(), oscillator = ctx.createOscillator();
let dst = oscillator.connect(ctx.createMediaStreamDestination());
oscillator.start();
return Object.assign(dst.stream.getAudioTracks()[0], {enabled: false});
}
let black = ({width = 640, height = 480} = {}) => {
let canvas = Object.assign(document.createElement("canvas"), {width, height});
canvas.getContext('2d').fillRect(0, 0, width, height);
let stream = canvas.captureStream();
return Object.assign(stream.getVideoTracks()[0], {enabled: false});
}
let blackSilence = (...args) => new MediaStream([black(...args), silence()]);
video.srcObject = blackSilence();