Tutorial: 动态关闭打开本地音频或视频

动态关闭打开本地音频或视频

本文主要介绍在音视频通话过程中打开或关闭本地音频或视频通话的使用方法。

使用 mute/unmute 方法

在通话过程中使用 muteAudio()unmuteAudio()muteVideo()unmuteVideo() 方法关闭或打开音频或视频通话。

关闭/启用音频

// 关闭音频,远端会收到 ‘mute-audio’ 事件
localStream.muteAudio();
// 启用音频,远端会收到 ‘unmute-audio’ 事件
localStream.unmuteAudio();

关闭/启用视频

// 关闭视频,远端会收到 ‘mute-video’ 事件
localStream.muteVideo();

注意

muteVideo 并不会关闭摄像头,此时摄像头的灯仍然是亮着,若想完全关闭视频通话,请使用 removeTrack() 方法。

// 启用视频,远端会收到 ‘unmute-video’ 事件
localStream.unmuteVideo();

使用 addTrack/removeTrack 方法

addTrack()removeTrack() 使用场景: 进房时默认只打开音频通话,随后打开摄像头进行视频通话。

// 进房默认只开音频通话
const localStream = TRTC.createStream({ audio: true, video: false });
localStream.initialize().then(() => {
  console.log('local stream init success');

  localStream.play('local_stream');

  client.publish(localStream).then(() => {
    console.log('local stream published');
  });
});

// ...

// 打开摄像头,增加视频通话
const videoStream = TRTC.createStream({ audio: false, video: true });
videoStream.initialize().then(() => {
  console.log('camera video stream init success');

  // 增加视频通话
  localStream.addTrack(videoStream.getVideoTrack()).then(() => {
    console.log('add video call success');
  });
});

// 关闭视频通话
const videoTrack = localStream.getVideoTrack();
if (videoTrack) {
  localStream.removeTrack(videoTrack).then(() => {
    console.log('remove video call success');
    // 关闭摄像头
    videoTrack.stop();
  });
}

注意

音频不能通过 removeTrack() 删除,如果您想要禁用音频,建议通过 muteAudio() 方法实现。