Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

omnirtc-web

tal_live_webrtc206ISC1.3.3-peiyou.0TypeScript support: included

直播中台WebRTC SDK。如需接入,联系兰龙刚(lanlonggang@tal.com

Omni_WebRTC

readme

直播中台WebRTC SDK。如需接入,联系兰龙刚(lanlonggang@tal.com

Omni_WebRTC

引入SDK

  • ES Module引入
    import getRTCEngine from 'omnirtc-web';

加入RTC房间

  /**
   * 获取token,
   * 获取方式参考 https://wiki.zhiyinlou.com/pages/viewpage.action?pageId=30835986
   * 有问题联系周伟伟(zhouweiwei3@tal.com)老师 
   **/
  const token = 'token';
  // 获取引擎实例
  // engine API详细 https://dev-webrtc.weclassroom.com/doc/classes/CoreRTC.CoreRTC-1.html
  const engine = getRTCInstance(token);

  // 加入RTC房间
  // client API详细 https://dev-webrtc.weclassroom.com/doc/classes/Client.Client-1.html
  const client = engine.createClient({
    mode: 'live',
    codec: 'h264'
  });

  // 监听会议相关事件
  client.on('user-joined', (user) => {
    console.log('有用户加入房间。', user.uid)
  })
  client.on('user-left', (user, reason) => {
    console.log('用户离开房间了。', user.uid)
  })

  // 有其他用户开始推流了
  client.on('user-published', async (user, mediaKind) => {
    console.log('用户开始推流了。', user.uid, mediaKind)

    // 在这里就可以拉取该用户的流了,也可以先保存user,延后再拉。
    const track = await client.subscribe(user, mediaKind);

    console.log('媒体流已就绪,可以播放。', user.uid, mediaKind);
    if (mediaKind === 'audio') {
      track.play();
    }

    if (mediaKind === 'video') {
      track.play('video-dom');
    }
  })
  client.on('user-unpublished', (user, mediaKind) => {
    console.log('用户停止推流了。', user.uid, mediaKind)
  })

  client.join().then((uid) => {
    console.log('您已经加入房间了。您的用户ID:', uid)
  });
  ...

推送媒体流

  • 推送媒体流必须在调用client.join之后
    // 打开摄像头和麦克风
    const tracks = await engine.createMicrophoneAndCameraTracks();
    // 推送音视频流
    await client.publish(tracks);

    拉取远端流

  • 必须在收到远端用户user-published之后再调用client.subsribe

    // 拉取远端用户音频流
    const audioTrack = await client.subscribe(user, 'audio');
    audioTrack.play();
    
    // 拉取远端用户视频流
    const videoTrack = await  client.subscribe(user, 'video');
    videoTrack.play('video-dom');

    注意事项

  • 建议开发者捕获播放失败的事件
    engine.onAudioAutoplayFailed = () => {
      console.log('音频播放失败。')
      // 建议用户和页面交互后再调用track.play()
      // 参考https://www.jianshu.com/p/c3c6944eed5a
    }

火山封装层版本更新记录

v1.0.0 - 2024.2.22

首次交付版本

v1.0.1 - 2024.2.29

修复 VolcLocalAudioTrack.setPlaybackDeivce() 问题

v1.1.0 - 2024.3.13

新增屏幕共享能力

v1.1.1 - 2024.3.15

为 encoderConfig 添加检测

v1.1.2 - 2024.3.21

修复第二次共享屏幕报错

v1.1.3 - 2024.3.28

setDevice() 的同时检测发布状态