0

我正在尝试向用户的流对象添加视频轨道,以便对等方可以看到它。在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]);
}

由于静音按钮仅通过禁用音轨起作用,我想我可以在这里添加视频轨道,对等方会看到视频流,但它不起作用。

视频轨道会显示给按下按钮的用户,但不会显示给同伴。我错过了什么?

4

0 回答 0