WebRTC用到的方法

一.创建Client对象
相关参数 (Client对象更多参数):
● mode: 实时音视频通话模式,设置为 ‘rtc’。
● sdkAppId: 您在腾讯云创建的音视频应用的 sdkAppId。
● userId: 用户 ID,由您指定。
● userSig: 用户签名,参考获取临时 userSig,或者部署 userSig 签发服务

this._client = this._trtc.createClient({
        sdkAppId,
        userId,
        userSig,
        mode,
        autoSubscribe: false,  // 不自动订阅
        enableAutoPlayDialog: false,
      });

二.进入音视频通话房间
相关参数(更多参数 client.join() ):
roomId:房间id

try {
  await client.join({ roomId: 8888 });
  console.log('进房成功');
} catch (error) {
  console.error('进房失败 ' + error);
}

三.创建本地音视频流
相关参数(更多参数TRTC.createStream() ):
● userId:用户 ID
● audio:是否开启音频
● video:是否开启视频
从麦克风和摄像头中采集音视频流

const localStream = TRTC.createStream({ userId, audio: true, video: true });

四.采集页面中正在播放的视频源

try {
      const playElement: any = document.getElementById(elementId);
      const stream = playElement.captureStream();
      const audioTrack = stream.getAudioTracks()[0];
      const videoTrack = stream.getVideoTracks()[0];
      this._captureLocalStream = this._trtc.createStream({
        userId: `${this._userId}sub`,
        audioSource: audioTrack,
        videoSource: videoTrack,
      });
      // 请确保视频属性跟外部传进来的视频源一致,否则会影响视频通话体验
      this._captureLocalStream.setVideoProfile('720p');
      //初始化音视频流
      await this._captureLocalStream.initialize();
      // 加入房间
      await this._captureClient.join({ roomId: this._roomId });
      // 发布流
      await this._captureClient.publish(this._captureLocalStream);
      this._info('音视频课件-startCaptureStream-publish');
      return Promise.resolve();
    } catch (error) {
      this._error('音视频课件-startCaptureStream-error', JSON.stringify(error));
      return Promise.reject();
    }

initialize()初始化音视频流
publish() 发布音视频流

五.订阅远端音视频流
远端流通过监听事件 client.on(‘stream-added’) 获得,请在client.join() 进房前注册该事件,确保您不会错过远端用户进房通知。 收到上述事件后要通过client.subscribe() 订阅远端音视频流。

this._client.on('stream-added', (event: any) => {
        const remoteStream = event.stream;
          //订阅远端流
        client.subscribe(remoteStream);
      });
this._client.on('stream-updated', (event: any) => {
        const remoteStream = event.stream;
});
this._client.on('stream-removed', (event: any) => {
        const remoteStream = event.stream;
});
this._client.on('stream-subscribed', (event: any) => {
       const remoteStream = event.stream;
       console.log('远端流订阅成功:' + remoteStream.getId());
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值