我正在尝试向用户的流对象添加视频轨道,以便对等方可以看到它。在componentDidMount()
我最初获得使用麦克风的许可,但我有一个按钮,我想用它来添加视频轨道。
我有一个静音/取消静音按钮,可以切换音频,效果很好,但是当我尝试以同样的方式添加视频轨道时,我无法让它到达对等方。
这是我用来访问麦克风的代码:
getAudio(callback, err) {
const options = { video: false, audio: true };
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
return navigator.mediaDevices.getUserMedia(options)
.then(stream => callback(stream))
.catch(e => err(e));
}
return navigator.getUserMedia(options, callback, err);
}
我这样称呼它componentDidMount()
:
this.getAudio(this.onAudio, err => {
this.setState({
mediaErr: 'Could not access webcam'
});
console.log('getMedia error', err);
});
创建对onAudio()
等点,因为它在挂载上运行。我有一个按钮用于静音/取消静音,如下所示:
toggleMicrophone(){
const audioTrack = this.stream.getAudioTracks()[0];
audioTrack.enabled = !audioTrack.enabled;
this.setState({
microphoneEnabled: audioTrack.enabled
});
}
这很好用,所以我尝试以几乎相同的方式添加视频轨道。我有一个调用 的按钮getVideo()
,它与 相同getAudio()
,除了在 中options
,音频和视频都设置为 true。getVideo()
调用onVideo()
,将它从中获取的流传递给它getUserMedia()
。
onAudio()
功能:
onVideo(stream){
this.stream.addTrack(stream.getVideoTracks()[0]);
}
由于静音按钮仅通过禁用音轨起作用,我想我可以在这里添加视频轨道,对等方会看到视频流,但它不起作用。
视频轨道会显示给按下按钮的用户,但不会显示给同伴。我错过了什么?