Options
All
  • Public
  • Public/Protected
  • All
Menu

@urtc/sdk-web

Index

Type aliases

AudioCodec

AudioCodec: "opus"

音频编解码格式

ConnectionState

ConnectionState: "OPEN" | "CONNECTING" | "CLOSING" | "RECONNECTING" | "CLOSED"

连接状态类型:

  • OPEN - 已连接
  • CONNECTING - 连接中
  • CLOSING - 断开中
  • RECONNECTING - 重连中
  • CLOSED - 已断开

ErrorCode

ErrorCode: typeof RtcError[Exclude<keyof typeof RtcError, "prototype" | "getCode" | "stackTraceLimit" | "prepareStackTrace" | "captureStackTrace">]

RTC 错误代码

通用错误及代码

  • 1000 - 非法参数
  • 1001 - 非法操作
  • 1002 - 不支持
  • 1003 - 不存在
  • 1004 - 请求失败
  • 1999 - 其他错误

房间相关错误及代码

  • 2000 - 网关不可达
  • 2001 - 获取 Access Token 失败
  • 2002 - Access Token 非法
  • 2003 - Websocket 连接失败
  • 2004 - 加入房间失败
  • 2005 - 未加入房间
  • 2006 - 正在加入房间
  • 2007 - 正在离开房间
  • 2008 - 角色类型不匹配
  • 2009 - 信令服务器地址错误

流相关错误及代码

  • 3000 - 流不存在
  • 3001 - 同类型的流已存在
  • 3002 - 音频不存在
  • 3003 - 视频不存在
  • 3004 - [中止错误] 尽管用户和操作系统都授予了访问设备硬件的权利,而且未出现可能抛出NotReadableError异常的硬件问题,但仍然有一些问题的出现导致了设备无法被使用。
  • 3005 - [拒绝错误] 用户拒绝了当前的浏览器实例的访问请求;或者用户拒绝了当前会话的访问;或者用户在全局范围内拒绝了所有媒体访问请求。
  • 3006 - [找不到错误] 找不到满足请求参数的媒体类型。
  • 3007 - [无法读取错误] 尽管用户已经授权使用相应的设备,操作系统上某个硬件、浏览器或者网页层面发生的错误导致设备无法被访问。
  • 3008 - [无法满足要求错误] 指定的要求无法被设备满足。
  • 3009 - 流连接失败
  • 3010 - 流正在重连
  • 3011 - 流尚未发布
  • 3012 - 流正在发布
  • 3013 - 流正在取消发布
  • 3014 - 流已经发布
  • 3015 - 流尚未订阅
  • 3016 - 流正在订阅
  • 3017 - 流正在取消订阅
  • 3018 - 流已经订阅
  • 3019 - 自动播放被禁止错误
  • 3020 - 音视频数据异常,未成功播放(一般为网络原因导致,拉流时音视频数据加载过慢)
  • 3021 - 因未曾调用或调用 play 方法失败,故不可恢复播放
  • 3024 - ICE 建连失败

FacingMode

FacingMode: "user" | "environment"

指定使用前置或后置摄像头,'user'(前置摄像头)或 'environment'(后置摄像头)

MediaType

MediaType: "camera" | "screen"

流的媒体类型, camera - 主视频流,screen - 辅助视频流,通常是一个屏幕分享流

NetworkQuality

NetworkQuality: "0" | "1" | "2" | "3" | "4" | "5" | "6"

流的网络质量评分,有 '0' | '1' | '2' | '3' | '4' | '5' | '6'

  • '0': 网络质量未知
  • '1': 网络质量优秀
  • '2': 网络质量良好
  • '3': 网络质量一般
  • '4': 网络质量较差
  • '5': 网络质量糟糕
  • '6': 网络连接断开

PlayControlsType

PlayControlsType: "show" | "hide" | "auto"

视频播放时 audio / video 的控制面板的显示模式

  • show 模式:一直显示
  • hide 模式:一直隐藏
  • auto 模式:自动判断

PlayerVideoFitType

PlayerVideoFitType: "cover" | "contain"

视频播放时的显示模式

  • cover 模式:优先保证视窗被填满。
  • contain 模式:优先保证视频内容全部显示。 播放摄像头视频流默认使用 cover 模式,屏幕共享视频流默认使用 contain 模式。

RoleType

RoleType: "audience" | "speaker"

用户角色,'audience' | 'speaker' 分别为观众,主讲。

RoomType

RoomType: "conference" | "live"

房间类型:'conference' | 'live',分别对应会议模式 | 直播模式。 注: 会议模式:房间内用户数较少,各用户均会推流,并拉其他用户的流。 直播模式:房间内用户数较多,个别用户会推流,大部分用户只拉流观看。

RtcConnectionStateEvent

Rtc 连接状态事件,事件类型参见 RtcConnectionStateEventType

RtcConnectionStateEventType

RtcConnectionStateEventType: "connection-state-changed"

Rtc 客户端连接状态事件类型:

连接状态事件

  • connection-state-changed - 连接状态改变
example
client.on('connection-state-changed', (event) => {
  console.log(`连接状态:${event.data.previous} => ${event.data.current}`);
});

RtcDeviceChangedEvent

Rtc 设备列表变化事件,事件类型参见 {@link RtcDeviceChangeEventType}

RtcDeviceChangedEventType

RtcDeviceChangedEventType: "device-changed"

设备变化事件

  • device-changed - 设备变化(新增或移除)
example
client.on('device-changed', (event) => {
  console.log(`${event.data.type} 设备已 ${event.data.status}`);
});

RtcErrorEvent

Rtc 错误事件,事件类型参见 RtcErrorEventType

RtcErrorEventType

RtcErrorEventType: "error"

错误事件

  • error - 错误事件,当出现不可恢复错误后,会抛出此事件
example
client.on('error', (event) => {
  console.log(`错误[${event.data.code}] - ${event.data.message}`);
});

RtcEventType

Rtc 事件类型

RtcNetworkQualityEvent

Rtc 网络连接质量事件,事件类型参见 RtcNetworkQualityEventType

RtcNetworkQualityEventType

RtcNetworkQualityEventType: "network-quality"

Rtc 网络连接质量类型:

网络连接质量事件

  • network-quality - 上/下行网络质量
example
client.on('network-quality', (event) => {
  console.log(`上行 / 下行网络质量:${event.data.uplink} / ${event.data.downlink}`);
});

RtcPlayerEvent

Rtc 播放器事件,事件类型参见 RtcPlayerEventType

RtcPlayerEventType

RtcPlayerEventType: "player-status-change"

Rtc 播放器事件类型:

播放器事件

  • player-status-change - 流播放器状态改变

注,此事件需在单条流上进行监听

example
stream.on('player-status-change', (event) => {
  const { data } = event;
  const { type, status } = data;
  console.log(`stream's ${type} status changed to ${status}`);
});

RtcStreamEvent

Rtc 流事件,事件类型参见 RtcStreamEventType

RtcStreamEventType

RtcStreamEventType: "stream-added" | "stream-removed" | "stream-subscribed" | "stream-published" | "stream-reconnecting" | "stream-reconnected" | "mute-audio" | "unmute-audio" | "mute-video" | "unmute-video" | "first-key-frame" | "audio-track-ended" | "screen-sharing-stopped"

Rtc 流事件类型:

流事件

  • stream-added - 有远端流加入,此时事件中的 data 为 RemoteStream 远端流
  • stream-removed - 有远端流移除,此时事件中的 data 为 RemoteStream 远端流
  • stream-subscribed - 远端流订阅完成,此时事件中的 data 为 RemoteStream 远端流
  • stream-published - 本地流发布完成,此时事件中的 data 为 LocalStream 本地流
  • stream-reconnecting - 流正在重连(本地流重新发布/远端流重新订阅),此时事件中的 data 为 LocalStream 本地流或 RemoteStream 远端流
  • stream-reconnected - 流已重连(本地流已重新发布/远端流已重新订阅),此时事件中的 data 为 LocalStream 本地流或 RemoteStream 远端流
  • mute-audio - 流的音频被 mute
  • unmute-audio - 流的音频被取消 mute
  • mute-video - 流的视频被 mute
  • unmute-video - 流的视频被取消 mute
example
client.on('stream-add', (event) => {
  client.subscribe(event.data);
});

特别地,以下事件需在单条流上进行监听

  • screen-sharing-stopped - 屏幕共享流被中止,此时事件中的 data 为 LocalStream 本地流
  • audio-track-ended - 音频被中止,此时事件中的 data 为 LocalStream 本地流
  • first-key-frame - 接收到远端流的首帧
example
localStream.on('screen-sharing-stopped', (event) => {
  // 此事件只针对本地流有效,若本地流已发布,监听到此事件后,可以决定要不要取消发布
  client.unpublish(event.data);
  event.data.destroy();
});
example
stream.on('first-key-frame', (event) => {
  console.log(`stream ${event.data} got first key frame`);
});

RtcUserEvent

Rtc 用户事件,事件类型参见 RtcUserEventType

RtcUserEventType

RtcUserEventType: "user-joined" | "user-left" | "kick-off"

Rtc 用户事件类型:

用户事件

  • user-joined - 有用户加入房间
  • user-left - 有用户离开房间
  • kick-off - 当前用户被踢出房间
example
client.on('user-joined', (event) => {
  console.log(`用户 ${event.data.id} 加入`);
});

ScreenProfile

ScreenProfile: "480p" | "480p_2" | "720p" | "720p_2" | "1080p" | "1080p_2"

预设的屏幕共享视频 Profile

名称 视频宽 视频高 帧率 (fps) 码率 (kbps)
480p 640 480 5 600
480p_2 640 480 30 1000
720p 1280 720 5 1000
720p_2 1280 720 30 2000
1080p 1920 1080 5 1500
1080p_2 1920 1080 30 2500

SwitchDeviceType

SwitchDeviceType: "audio" | "video"

切换设备的类型

VideoCodec

VideoCodec: "vp8" | "h264" | "h265"

视频编解码格式

note

'h265' 目前仅部分浏览器在开启试验性功能时才支持,如 Safari 开启 WebRTC H265 codec

VideoProfile

VideoProfile: "180p" | "180p_2" | "240p" | "360p" | "360p_2" | "480p" | "720p" | "720p_2" | "720p_3" | "1080p" | "1080p_2" | "1080p_3"

预设的视频 Profile

名称 视频宽 视频高 帧率 (fps) 码率 (kbps)
180p 240 180 15 200
180p_2 320 180 15 300
240p 320 240 15 400
360p 480 360 15 400
360p_2 640 360 15 500
480p 640 480 15 600
720p 1280 720 15 1000
720p_2 1280 720 15 1500
720p_3 1280 720 30 2000
1080p 1920 1080 15 1500
1080p_2 1920 1080 15 2000
1080p_3 1920 1080 30 2500

Variables

Const version

version: string = ...

当前 sdk 的版本号

Functions

createClient

  • 创建客户端

    example
    const client = createClient('AppID');
    client
      .join('roomId', 'userId', 'token')
      .then(() => {
        client.publish(localStream);
      })
      .catch((err) => {
        console.log(`加入房间失败 ${err}`);
      });
    
    throws

    RtcError

    Parameters

    • appId: string

      应用 ID,可在控制台查看

    • Optional opts: ClientOptions

      定义客户端的属性

    Returns Client

createStream

  • 创建本地流

    example
    const localStream = createStream({ audio: true, video: true, screen: false });
    localStream
      .init()
      .then(() => {
        localStream
          .play(container)
          .catch((err) => {console.log(`播放失败: ${err}`)});
      })
      .catch((err) => {
        console.log(`本地流初始化失败 ${err}`);
      });
    
    throws

    RtcError

    Parameters

    • opts: LocalStreamOptions

      必传,定义本地音视频流的属性 注:

      1. video, screen 不可同时为 true
      2. audio, video, screen 不可同时为 false
      3. 若指定了 file,则 init 时将优先使用 file 来创建初始化本地流的视频
      4. screenAudio 在不同浏览器上表现不同,参见 LocalStreamOptions

    Returns LocalStream

deviceDetection

  • 设备可用性检测 - 创建包含麦克风音频或摄像头视频的本地流时,有可能因为麦克风或摄像头设备问题(如驱动问题,或未经授权等),导致无法正确创建。此方法可用于设备检测,根据检测结果,再决定创建本地流时启用麦克风或摄像头或麦克风和摄像头

    example
    deviceDetection({audio: true, video: true})
      .then(() => {
        console.log('设备可用');
      })
      .catch(err => {
        console.log(`设备不可用,${err}`);
      });
    
    reject

    RtcError

    Parameters

    Returns Promise<void>

disableUploadLog

  • disableUploadLog(): void
  • 关闭日志(操作/错误/状态)的上报 注:若无特殊原因,不建议关闭日志上报,关闭后,在线上出现错误时,将无法根据日志定位问题

    example
    disableUploadLog();
    

    Returns void

enableUploadLog

  • enableUploadLog(): void
  • 开启日志(操作/错误/状态)的上报,默认开启

    example
    enableUploadLog();
    

    Returns void

generateToken

  • generateToken(appId: string, appKey: string, roomId: string, userId: string): string
  • 根据 AppId,AppKey,RoomId,UserId 生成 token,用于开发阶段临时快速的加入房间并验证功能,由于 AppKey 不可暴露于公网,因此生产环境中不建议使用此方法生成 token。

    example
    const token = generateToken('appId', 'appKey', 'roomId', 'userId');
    client.join('roomId', 'userId', token);
    

    Parameters

    • appId: string

      应用 ID,可在控制台查看

    • appKey: string

      应用密钥,可在控制台查看

    • roomId: string

      房间 ID

    • userId: string

      用户 ID

    Returns string

getCameras

  • getCameras(): Promise<MediaDeviceInfo[]>
  • 获取摄像头设备列表,点击 MediaDeviceInfo 查看详情

    example
    getCameras()
     .then(devices => {
       console.log(`获取设备列表成功:`, devices);
     })
     .catch(err => {
       console.log(`获取设备列表失败:${err}`);
     });
    
    reject

    RtcError

    Returns Promise<MediaDeviceInfo[]>

getDevices

  • 获取音视频输入/输出设备列表,点击 MediaDeviceInfo 查看详情

    example
    getDevices()
     .then(devices => {
       console.log(`获取设备列表成功:`, devices);
     })
     .catch(err => {
       console.log(`获取设备列表失败:${err}`);
     });
    
    reject

    RtcError

    Parameters

    Returns Promise<MediaDeviceInfo[]>

getLoudspeakers

  • getLoudspeakers(): Promise<MediaDeviceInfo[]>
  • 获取扬声器设备列表,点击 MediaDeviceInfo 查看详情

    example
    getLoudspeakers()
     .then(devices => {
       console.log(`获取设备列表成功:`, devices);
     })
     .catch(err => {
       console.log(`获取设备列表失败:${err}`);
     });
    
    reject

    RtcError

    Returns Promise<MediaDeviceInfo[]>

getMicrophones

  • getMicrophones(): Promise<MediaDeviceInfo[]>
  • 获取麦克风设备列表,点击 MediaDeviceInfo 查看详情

    example
    getMicrophones()
     .then(devices => {
       console.log(`获取设备列表成功:`, devices);
     })
     .catch(err => {
       console.log(`获取设备列表失败:${err}`);
     });
    
    reject

    RtcError

    Returns Promise<MediaDeviceInfo[]>

getSupportedCodec

  • getSupportedCodec(): Promise<Codecs>
  • 检测浏览器支持的音视频编解码格式

    example
    getSupportedCodec()
     .then((codecs) => {
       console.log(`浏览器支持的音频编解码格式有 ${codecs.audio},视频编解码格式有 ${codecs.video}`);
     })
     .catch((err) => {
       console.log(`浏览器获取音视频编解码格式失败,${err}`);
     });
    

    Returns Promise<Codecs>

isSupportScreenShare

  • isSupportScreenShare(): boolean
  • 检测浏览器是否支持屏幕共享

    example
    if (!isSupportScreenShare()) {
      console.log(`当前浏览器不支持屏幕共享`);
    }
    

    Returns boolean

isSupportWebRTC

  • isSupportWebRTC(): boolean
  • 检测浏览器是否完全(可访问本地音视频设备)支持 WebRTC。

    example
    if (!isSupportWebRTC()) {
      console.log(`当前浏览器不完全支持 WebRTC,建议使用 Chrome 浏览器,iOS 系统建议使用 Safari 浏览器`);
    }
    

    Returns boolean

setLogLevel

  • setLogLevel(level: LogLevel): void
  • 设置日志打印级别,用于打印出更多日志来调试或定位问题,默认 warn 级别

    example
    setLogLevel('info');
    

    Parameters

    • level: LogLevel

      日志级别,有 'debug', 'info', 'warn', 'error' 级别;

    Returns void

setServers

  • 用于私有化部署时,指定部署的服务器地址

    example
    setServers({
     gateway: 'https://my-rtc.com', // 指定网关
     log: 'https://log.my-rtc.com', // 指定日志服务器
    });
    

    特别地,单信令服务器时,不需要网关进行分配信令服务器,可以直接指定信令服务器

    setServers({
     signal: 'wss://my-rtc.com:5005', // 直接指定信令服务器
     log: 'https://log.my-rtc.com', // 指定日志服务器
    });
    
    throws

    RtcError

    Parameters

    • conf: ServerConfig

      服务器配置,具体描述参见 ServerConfig 的说明

    Returns void

Generated using TypeDoc