CloudHub 文档中心
下载中心 文档中心

RTC 实时音视频


快速集成 SDK

准备

运行安装命令:

npm install cloudhub-electron-sdk  --save

开始

1. 获取 SDK

// es6:
import RtcEngine from 'cloudhub-electron-sdk';

// commonjs:
const RtcEngine = require('cloudhub-electron-sdk').default

const rtcEngine =  RtcEngine || {};

2. 初始化

rtcEngine.initialize(appId);
// rtcEngine.enableVideo(); 如果加入频道前调用 enableVideo,将会自动启用视频模块

参数详见initialize

3. 加入频道

rtcEngine.joinChannel('', channelId, {}, '');

参数详见joinChannel

4. 加入频道后发布本地音视频

rtcEngine.on('onJoinChannel', data => {
   rtcEngine.enableLocalVideo(true);
   rtcEngine.enableLocalAudio(true);
   rtcEngine.publish();
});

5. 订阅远端用户

const videoContainerEle = document.getElementById('videoContainer');

rtcEngine.on('onRemoteVideoStateChanged', data => {
   const { state, uid, reason, streamId } = data;
   const videoId = `${streamId}-player`;
   let videoEle = document.getElementById(videoId);
   // 远端流移除
   // 如果播放元素存在就移除远端流
   if (state === 0) {
      if (videoEle) {
         rtcEngine.removeRemoteVideo(uid, streamId);
         videoContainerEle.removeChild(videoEle);
      }
   }
   // 远端流添加
   // 如果播放元素不存在就开始创建播放元素并播放远端视频
   if (state === 1) {
      if (!videoEle) {
         videoEle = document.createElement('div')
         videoEle.id = videoId;
         videoContainerEle.appendChild(videoEle);
         rtcEngine.setupRemoteVideo(uid, streamId, videoEle);
      }
   }
});

6. 离开频道

rtcEngine.leaveChannel();

详见leaveChannel

其他说明

如果64位系统打包32位electron

1.在根目录添加配置项cloudhub_electron_arch

如果不配置cloudhub_electron_arch则按照系统版本
如果配置了以后,则会下载对应的addon

{
   "name": "cloudhub-electron-sdk-demo",
   "dependencies": {
      "cloudhub-electron-sdk": "^3.3.9",
   },
   "devDependencies": {
      "electron": "^10.1.3",
   },
   "cloudhub_electron_arch": "ia32"
}

2.安装32位electron

安装的32位的electron版本要和package.json里配置的electron版本一致

npm i electron@10.1.3 --arch=ia32