Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace NERTC

Index

Variables

Const BUILD

BUILD: string

Const LIVE_STREAM_AUDIO_CODEC_PROFILE

LIVE_STREAM_AUDIO_CODEC_PROFILE: { HE_AAC: number; LC_AAC: number }

Type declaration

  • HE_AAC: number
  • LC_AAC: number

Const LIVE_STREAM_AUDIO_SAMPLE_RATE

LIVE_STREAM_AUDIO_SAMPLE_RATE: { SAMPLE_RATE_32000: number; SAMPLE_RATE_44100: number; SAMPLE_RATE_48000: number }

互动直播的音频采样率。

Type declaration

  • SAMPLE_RATE_32000: number

    32000 Hz

  • SAMPLE_RATE_44100: number

    44100 Hz

  • SAMPLE_RATE_48000: number

    48000 Hz

Const STREAM_TYPE

STREAM_TYPE: { HIGH: HIGH; LOW: LOW }

Type declaration

Const VERSION

VERSION: string

Const VIDEO_FRAME_RATE

VIDEO_FRAME_RATE: { CHAT_VIDEO_FRAME_RATE_10: number; CHAT_VIDEO_FRAME_RATE_15: number; CHAT_VIDEO_FRAME_RATE_20: number; CHAT_VIDEO_FRAME_RATE_25: number; CHAT_VIDEO_FRAME_RATE_30: number; CHAT_VIDEO_FRAME_RATE_5: number; CHAT_VIDEO_FRAME_RATE_NORMAL: number }

视频帧率设置

Type declaration

  • CHAT_VIDEO_FRAME_RATE_10: number

    视频通话帧率 最大取每秒10帧

  • CHAT_VIDEO_FRAME_RATE_15: number

    视频通话帧率 最大取每秒15帧

  • CHAT_VIDEO_FRAME_RATE_20: number

    视频通话帧率 最大取每秒20帧

  • CHAT_VIDEO_FRAME_RATE_25: number

    视频通话帧率 最大取每秒25帧

  • CHAT_VIDEO_FRAME_RATE_30: number

    视频通话帧率 最大取每秒30帧

  • CHAT_VIDEO_FRAME_RATE_5: number

    视频通话帧率 最大取每秒5帧

  • CHAT_VIDEO_FRAME_RATE_NORMAL: number

    视频通话帧率默认值 最大取每秒15帧

Const VIDEO_QUALITY

VIDEO_QUALITY: { VIDEO_QUALITY_1080p: number; VIDEO_QUALITY_180p: number; VIDEO_QUALITY_480p: number; VIDEO_QUALITY_720p: number }

分辨率设置。

Type declaration

  • VIDEO_QUALITY_1080p: number

    1080P

  • VIDEO_QUALITY_180p: number

    180P

  • VIDEO_QUALITY_480p: number

    480P

  • VIDEO_QUALITY_720p: number

    720P

Functions

checkBrowserCompatibility

  • checkBrowserCompatibility(): Promise<{ isPullStreamSupport: boolean; isPushStreamSupport: boolean; isScreenShareSupport: boolean }>
  • 获取当前浏览器支持 WebRTC 的基本能力。

    note
    • 请在创建音视频对象(createClient)之前调用该方法。

    Returns Promise<{ isPullStreamSupport: boolean; isPushStreamSupport: boolean; isScreenShareSupport: boolean }>

    当前浏览器是否支持 SDK 推流、拉流和屏幕共享。

    调用该方法会返回一个 Promise 对象,在 .then(data(result){}) 回调中,data 包含以下属性:

    • isPullStreamSupport: 当前浏览器是否支持 SDK 进行拉流。返回值包括 true 和 false。
    • isPushStreamSupport: 当前浏览器是否支持 SDK 进行推流。返回值包括 true 和 false。
    • isScreenShareSupport: 当前浏览器是否支持 SDK 进行屏幕共享。返回值包括 true 和 false。
    //接口使用示例
     NERTC.checkBrowserCompatibility().then(data => {
      console.log(`isPullStreamSupport: ${data.isPullStreamSupport}`);
      console.log(`isPushStreamSupport: ${data.isPushStreamSupport}`);
      console.log(`isScreenShareSupport: ${data.isScreenShareSupport}`);
     })
    

checkSystemRequirements

  • checkSystemRequirements(): Boolean
  • 检查 NERTC Web SDK 对正在使用的浏览器的适配情况。

    note
    • 请在创建音视频对象(createClient)之前调用该方法。
    • SDK 和浏览器的适配情况与浏览器类型和版本有关,不同的浏览器版本可能会返回不一样的适配结果。

    Returns Boolean

    • true: SDK 与当前使用的浏览器适配
    • false: SDK 与当前使用的浏览器不适配

createClient

  • createClient(options: { appkey: string; debug?: boolean }): Client
  • 创建客户端。

    该方法用于创建客户端,每次通话前调用一次即可。

    note

    注意 使用Web前端框架时,应该避免对SDK产生的实例进行观察,或将其转为Proxy。 以Vue3为例,如将clientlocalStream等对象设为data的属性,应将其设置为raw。

       import {markRaw} from 'vue'
    
       // rtc.client = NERTC.createClient(...)
       // rtc.localStream = NERTC.createStream(...)
       markRaw(rtc.client)
       markRaw(rtc.localStream)
    
    example
    <!DOCTYPE html>
      <html>
        <body>
          <div id="localDiv" style="height: 500px;"></div>
          <div id="remoteDiv" style="height: 500px;"></div>
          <script src="<SDK地址>"></script>
          <script>
    const main = async ()=>{
    let rtc = {};
    // 1. 创建client
    rtc.client = NERTC.createClient({appkey: "<您的appkey>", debug: true});
    // 2. 绑定订阅事件
    rtc.client.on('stream-added', (evt)=>{
      rtc.client.subscribe(evt.stream);
    })
    rtc.client.on('stream-subscribed', (evt)=>{
      evt.stream.play(document.getElementById('remoteDiv'));
    });
    // 3. 加入频道
    await rtc.client.join({
      channelName: 'channel163',
      uid: 123,
      token: '<您的token>', // 如关闭了安全模式,则不需要该参数。
    });
    // 4. 创建localStream
    rtc.localStream = NERTC.createStream({
      video: true,
      audio: true,
      client: rtc.client,
      uid: 123
    });
    await rtc.localStream.init();
    // 5. 设置本地播放方式
    rtc.localStream.setLocalRenderMode({
      width: 640,
      height: 480
    })
    rtc.localStream.play(document.getElementById('localDiv'))
    // 5. 发布localStream
    rtc.client.publish(rtc.localStream);
    }
    main()
      </script>
      </body>
    </html>
    

    Parameters

    • options: { appkey: string; debug?: boolean }

      配置参数。

      • appkey: string

        应用的 AppKey。可从云信后台获取。

      • Optional debug?: boolean

        是否开启 debug 模式。

        • debug 为true时,浏览器会打印所有日志,即日志级别为DEBUG
        • debug为false时,浏览器会打印警告及错误日志,即日志级别为WARNING
        • 默认的日志级别为INFO。要关闭所有日志,应调用NERTC.Logger.setLogLevel(NERTC.Logger.NONE)。见NERTC.Logger.setLogLevel

    Returns Client

createStream

  • 该方法创建并返回音视频流对象。

    note

    自 V4.1.0 版本起,摄像头与屏幕共享的视频流可以同时发送,其中屏幕共享流会以辅流形式发送。

    example
    // 1. 创建 localStream
    // 从麦克风和摄像头采集本地音视频流
    localStream = NERTC.createStream({
      audio: true,
      video: true,
      uid: 123
    });
    
    // 仅采集屏幕分享流
    localStream = NERTC.createStream({
      audio: false,
      screen: true,
      uid: 123
    });
    // 2. 初始化本地流
    await rtc.localStream.init();
    

    Parameters

    Returns Stream | { code: number; desc: string; name: string }

destroy

  • destroy(client?: Client): void
  • 销毁 Client 对象。

    example
    // 1. 创建client
    client = NERTC.createClient({appkey: "<您的appkey>", debug: true});
    // 2. 加入频道
    await client.join({
      channelName: 'channel163',
      uid: 123,
      token: '<您的token>', // 如关闭了安全模式,则不需要该参数。
    });
    // 3. 通话结束后退出房间
    await client.leave()
    // 4. 若后续再不使用该 client,则可以销毁该 client 实例
    NERTC.destroy()
    

    Parameters

    • Optional client: Client

      指定要销毁的 Client 实例,不传递则销毁最初使用用 createClient 创建的 Client 实例(一般多实例场景使用)。

    Returns void

getCameras

  • 获取可用的视频输入设备。

    该方法不支持 http 协议,请使用 https 协议。

    example
    //接口使用示例
    NERTC.getCameras().then(data => {
      data.forEach(item=>{
        console.log('video label: ', item.label, 'deviceId: ', item.deviceId)
      })
    })
    

    Returns Promise<DeviceInfo[]>

getDevices

  • 该方法枚举可用的媒体输入/输出设备,比如麦克风、摄像头、耳机等。

    该方法不支持 http 协议,请使用 https 协议。

    出于安全性考虑,各平台对枚举设备接口有不同的权限控制策略。例如:

    1. Safari浏览器只有在当前页面执行一次getUserMedia(也就是Stream.init)之后才能够枚举设备。
    2. Chrome浏览器曾经在当前页面执行过getUserMedia即可枚举设备。
    example
    // 接口使用示例
    NERTC.getDevices().then(data => {
      const {audioIn, audioOut, video} = data
      audioIn.forEach(item=>{
        console.log('mic label: ', item.label, 'deviceId: ', item.deviceId)
      })
      video.forEach(item=>{
        console.log('video label: ', item.label, 'deviceId: ', item.deviceId)
      })
      //...
    })
    

    Returns Promise<{ audioIn: DeviceInfo[]; audioOut: DeviceInfo[]; video: DeviceInfo[] }>

    • video:视频

getMicrophones

  • 获取可用的音频输入设备。

    该方法不支持 http 协议,请使用 https 协议。

    example
    //接口使用示例
    NERTC.getMicrophones().then(data => {
      data.forEach(item=>{
        console.log('video label: ', item.label, 'deviceId: ', item.deviceId)
      })
    })
    

    Returns Promise<DeviceInfo[]>

getSpeakers

  • 获取可用的音频输出设备。

    该方法不支持 http 协议,请使用 https 协议。

    example
    //接口使用示例
    NERTC.getSpeakers().then(data => {
      data.forEach(item=>{
        console.log('video label: ', item.label, 'deviceId: ', item.deviceId)
      })
    })
    

    Returns Promise<DeviceInfo[]>

getSupportedCodec

  • getSupportedCodec(): Promise<{ audio: ["OPUS"]; video: ["H264", "VP8"] }>
  • 检查 NERTC Web SDK 和当前浏览器同时支持的编解码格式。

    NERTC Web SDK 2.0 视频编解码支持 VP8、H.264、H.265、NEVC 格式,音频支持 OPUS 格式。 您可以调用此接口检查 NERTC Web SDK 与当前浏览器同时支持的编解码格式,以免因编解码能力不匹配导致通话过程中出现音视频播放问题。

    note
    • 请在初始化之后调用该方法。
    • 该方法支持部分浏览器,列表请查看Web SDK 支持的浏览器类型
    • 返回的音视频编码为浏览器通过 SDP 声明的的编码类型,为参考值。
    • 目前部分安卓手机 H.264 与其他平台 H.264 存在无法互通或单通问题,对于这部分机型推荐使用 VP8 编码格式。

    Returns Promise<{ audio: ["OPUS"]; video: ["H264", "VP8"] }>

    NERTC Web SDK 和当前浏览器同时支持的编解码格式。

    调用该方法会返回一个 Promise 对象,在 .then(data(result){}) 回调中,data 包含以下属性:

    • video: 支持的视频编解码格式,数组类型。返回值包括 "H264"、"VP8"。
    • audio: 支持的音频编解码格式,数组类型。返回值包括 "OPUS"。
    //接口使用示例
    NERTC.getSupportedCodec().then(data => {
      data.forEach(item=>{
        console.log(`Supported video codec: ${data.video.join(",")}`);
        console.log(`Supported audio codec: ${data.audio.join(",")}`);
      })
    })
    

setArea

  • setArea(area: { areaCode: "GLOBAL" | "OVERSEAS" }): void
  • 设置访问区域。

    如果您的业务有海外用户,可以通过该接口设置访问区域,以便 SDK 选择合适的服务器进行接入。

    example
      // 在创建客户端之前,设置访问区域为海外。
      NERTC.setArea({areaCode: 'OVERSEAS'})
      // const client = NERTC.createClient(...)
    

    Parameters

    • area: { areaCode: "GLOBAL" | "OVERSEAS" }
      • areaCode: "GLOBAL" | "OVERSEAS"

    Returns void