Class: Netcall

Netcall


new Netcall()

请使用 Netcall.getInstance 来初始化音视频.

Members


<static, readonly> CHAT_NET_STATUS_*

网络状态类型

  • Netcall.CHAT_NET_STATUS_VERY_GOOD 网络状态很好
  • Netcall.CHAT_NET_STATUS_GOOD 网络状态较好
  • Netcall.CHAT_NET_STATUS_POOR 网络状态较差
  • Netcall.CHAT_NET_STATUS_BAD 网络状态很差
  • Netcall.CHAT_NET_STATUS_VERY_BAD 网络状态极差,考虑是否关闭视频
  • Netcall.CHAT_NET_STATUS_VERY_BAD_VIDEO_CLOSE 网络状态极差,视频强制关闭

<static, readonly> CHAT_VIDEO_ENCODEMODE_*

视频编码策略

  • Netcall.CHAT_VIDEO_ENCODEMODE_NORMAL 默认值,清晰优先
  • Netcall.CHAT_VIDEO_ENCODEMODE_SMOOTH 流畅优先
  • Netcall.CHAT_VIDEO_ENCODEMODE_QUALITY 清晰优先
  • Netcall.CHAT_VIDEO_ENCODEMODE_SCREEN 高清,不根据网络情况调整分辨率

<static, readonly> CHAT_VIDEO_FRAME_RATE_*

视频通话帧率,实际帧率因画面采集频率和机器性能限制可能达不到期望值

  • Netcall.CHAT_VIDEO_FRAME_RATE_NORMAL 视频通话帧率默认值 最大取每秒15帧
  • Netcall.CHAT_VIDEO_FRAME_RATE_5 视频通话帧率 最大取每秒5帧
  • Netcall.CHAT_VIDEO_FRAME_RATE_10 视频通话帧率 最大取每秒10帧
  • Netcall.CHAT_VIDEO_FRAME_RATE_15 视频通话帧率 最大取每秒15帧
  • Netcall.CHAT_VIDEO_FRAME_RATE_20 视频通话帧率 最大取每秒20帧
  • Netcall.CHAT_VIDEO_FRAME_RATE_25 视频通话帧率 最大取每秒25帧

<static, readonly> CHAT_VIDEO_QUALITY_*

视频通话分辨率

  • Netcall.CHAT_VIDEO_QUALITY_NORMAL 视频默认分辨率 640x480
  • Netcall.CHAT_VIDEO_QUALITY_LOW 视频低分辨率 176x144
  • Netcall.CHAT_VIDEO_QUALITY_MEDIUM 视频中分辨率 352x288
  • Netcall.CHAT_VIDEO_QUALITY_HIGH 视频高分辨率 480x320
  • Netcall.CHAT_VIDEO_QUALITY_480P 视频480p分辨率 640x480
  • Netcall.CHAT_VIDEO_QUALITY_540P 视频540P分辨率 960x540
  • Netcall.CHAT_VIDEO_QUALITY_720P 用于桌面分享级别的分辨率 1280x720 ,需要使用高清摄像头并指定对应的分辨率,或者自定义通道传输

<static, readonly> CHAT_VIDEO_SCALE_*

视频画面按比例裁剪,裁剪时不改变横竖屏,默认不裁剪

  • Netcall.CHAT_VIDEO_SCALE_None 长宽不裁剪,全部显示
  • Netcall.CHAT_VIDEO_SCALE_1x1 裁剪成1:1的形状
  • Netcall.CHAT_VIDEO_SCALE_4x3 裁剪成4:3的形状
  • Netcall.CHAT_VIDEO_SCALE_16x9 裁剪成16:9的形状

<static, readonly> CLIENT_TYPE_*

端类型

  • Netcall.CLIENT_TYPE_AOS Android
  • Netcall.CLIENT_TYPE_IOS iOS
  • Netcall.CLIENT_TYPE_PC pc
  • Netcall.CLIENT_TYPE_WINPHONE WinPhone
  • Netcall.CLIENT_TYPE_WEB web
  • Netcall.CLIENT_TYPE_REST rest

<static, readonly> DEVICE_TYPE_*

设备类型

  • Netcall.DEVICE_TYPE_AUDIO_IN 麦克风
  • Netcall.DEVICE_TYPE_AUDIO_OUT_LOCAL 用于播放自己声音的设备
  • Netcall.DEVICE_TYPE_AUDIO_OUT_CHAT 播放对方声音的扬声器
  • Netcall.DEVICE_TYPE_VIDEO 摄像头

<static, readonly> LAYOUT_*

直播推流布局

  • Netcall.LAYOUT_SPLITBOTTOMHORFLOATING 底部横排浮窗
  • Netcall.LAYOUT_SPLITTOPHORFLOATING 顶部横排浮窗
  • Netcall.LAYOUT_SPLITLATTICETILE 平铺
  • Netcall.LAYOUT_SPLITLATTICECUTTINGTILE 裁剪平铺
  • Netcall.LAYOUT_SPLITCUSTOMLAYOUT 自定义布局
  • Netcall.LAYOUT_SPLITAUDIOLAYOUT 纯音频布局

<static, readonly> NETCALL_CONTROL_COMMAND_*

控制指令

  • Netcall.NETCALL_CONTROL_COMMAND_NOTIFY_AUDIO_ON 通知对方自己打开了音频
  • Netcall.NETCALL_CONTROL_COMMAND_NOTIFY_AUDIO_OFF 通知对方自己关闭了音频
  • Netcall.NETCALL_CONTROL_COMMAND_NOTIFY_VIDEO_ON 通知对方自己打开了视频
  • Netcall.NETCALL_CONTROL_COMMAND_NOTIFY_VIDEO_OFF 通知对方自己关闭了视频
  • Netcall.NETCALL_CONTROL_COMMAND_SWITCH_AUDIO_TO_VIDEO 请求从音频切换到视频
  • Netcall.NETCALL_CONTROL_COMMAND_SWITCH_AUDIO_TO_VIDEO_AGREE 同意从音频切换到视频
  • Netcall.NETCALL_CONTROL_COMMAND_SWITCH_AUDIO_TO_VIDEO_REJECT 拒绝从音频切换到视频
  • Netcall.NETCALL_CONTROL_COMMAND_SWITCH_VIDEO_TO_AUDIO 从视频切换到音频
  • Netcall.NETCALL_CONTROL_COMMAND_BUSY 占线
  • Netcall.NETCALL_CONTROL_COMMAND_SELF_CAMERA_INVALID 自己的摄像头不可用
  • Netcall.NETCALL_CONTROL_COMMAND_SELF_AUDIO_INVALID 自己的麦克风不可用
  • Netcall.NETCALL_CONTROL_COMMAND_SELF_ON_BACKGROUND 自己处于后台
  • Netcall.NETCALL_CONTROL_COMMAND_START_NOTIFY_RECEIVED 告诉发送方自己已经收到请求了(用于通知发送方开始播放提示音)
  • Netcall.NETCALL_CONTROL_COMMAND_NOTIFY_RECORD_START 告诉对方自己开始录制视频了
  • Netcall.NETCALL_CONTROL_COMMAND_NOTIFY_RECORD_STOP 告诉对方自己结束录制视频了

<static, readonly> NETCALL_TYPE_*

音视频通话类型

  • Netcall.NETCALL_TYPE_AUDIO 音频
  • Netcall.NETCALL_TYPE_VIDEO 视频

<static, readonly> NETDETECT_*

网络探测类型选择

  • Netcall.NETDETECT_AUDIO 音频探测
  • Netcall.NETDETECT_VIDEO 视频探测

Methods


<static> getInstance(options)

此接口为单例模式

Parameters:
Name Type Description
options Object

配置参数

Properties
Name Type Argument Default Description
kickLast Boolean <optional>
false

是否踢掉上次的通话, 默认 false

nim NIM

NIM 实例

container Node

播放自己视频画面的dom容器节点

remoteContainer Node

播放对方画面的dom容器节点

mirror Boolean <optional>
false

agent方式: 是否对自己的画面进行镜像处理, 默认 false

mirrorRemote Boolean <optional>
false

agent方式: 是否对对方的画面进行镜像处理, 默认 false

heartbeat Boolean <optional>
true

是否心跳(开发者调试用,为了避免断点调试导致心跳超时,正式版本请勿设置)


call(options)

发起音视频呼叫

Parameters:
Name Type Argument Default Description
options Object

配置参数

Properties
Name Type Argument Description
type Number

通话类型

account String

对方账号

pushConfig Object <optional>

推送配置

Properties
Name Type Argument Default Description
enable Boolean <optional>
true

是否需要推送, 默认 true

needBadge Boolean <optional>
true

是否需要角标计数, 默认 true

needPushNick Boolean <optional>
true

是否需要推送昵称, 默认 true

pushContent String <optional>

推送内容

custom String <optional>

自定义通知数据

pushPayload String <optional>

JSON格式的推送 payload

sound String <optional>

推送声音

sessionConfig Object <optional>

会话配置

option.sessionConfig.videoEncodeMode Number <optional>

视频编码策略,默认清晰优先

options.sessionConfig.videoQuality Number <optional>

视频分辨率,实际帧率因画面采集频率和机器性能限制可能达不到期望值
注:该参数发送给对方的分辨率,如果摄像头的分辨率比这个大会缩小,如果摄像头的分辨率比这个小则直接发送

options.sessionConfig.videoFrameRate Number <optional>

视频帧率

options.sessionConfig.videoBitrate Number <optional>

视频码率, >=100000 <= 5000000 有效

options.sessionConfig.highAudio Boolean <optional>
false

高清语音开关, 默认关闭

options.sessionConfig.recordVideo Boolean <optional>
false

视频录制开关, 默认关闭

options.sessionConfig.recordAudio Boolean <optional>
false

音频录制开关, 默认关闭

Returns:
Type
Promise

control(options)

发送音视频通话控制指令

Parameters:
Name Type Default Description
options Object {}

配置参数

Properties
Name Type Argument Description
channelId String <optional>

要发送指令的通话的 channelId, 如果不填那么默认为当前通话

command Number <optional>

可选控制指令请参考 Netcall.NETCALL_CONTROL_COMMAND_*

Returns:
Type
Void

createChannel(options)

创建频道

Parameters:
Name Type Description
options Object

配置参数

Properties
Name Type Description
channelName Number

频道名称

custom String

扩展字端(用于上层放自定义数据,选填)

Returns:
Type
Promise

getAccount()

获取当前登录的 IM 账号

Returns:
Type
String

getStartedDeviceOfType(type)

获取当前开启的指定类型的设备

Parameters:
Name Type Description
type String

可选设备类型请参考 Netcall.DEVICE_TYPE_*

Returns:
Type
Void

getStoredDevicesOfType(type)

获取已经存储的指定类型的所有设备

Parameters:
Name Type Description
type Number

可选设备类型请参考 Netcall.DEVICE_TYPE_*

Returns:
Type
Void

hangup( [channelId])

挂断音视频通话

Parameters:
Name Type Argument Description
channelId String <optional>

要挂断的通话的 channelId, 如果不填那么挂断当前通话

Returns:
Type
Void

hasDevicesOfType(type)

是否有指定类型的设备
返回对应的设备信息

Parameters:
Name Type Description
type String

可选设备类型请参考 Netcall.DEVICE_TYPE_*

Returns:
Type
Void

hasStartedDeviceOfType(type)

当前是否有开启指定类型的设备

Parameters:
Name Type Description
type String

可选设备类型请参考 Netcall.DEVICE_TYPE_*

Returns:
Type
Boolean

initSignal()

初始化信令

  • 信令通道初始化完毕之后, 开发者可以启用音视频相关的 UI, 比如说展示呼叫别人的按钮
  • 信令通道初始化失败的时候, 请展示错误并禁用所有音视频相关的 UI
  • 初始化过程中会通过 devices 事件回传所有的设备列表
  • 当信令通道断开时, 会触发 signalClosed 事件
  • 设备状态的错误类型约定:
    device_busy: 设备被占用
    agent_update: 插件有更新
    agent_empty: 没有安装插件
Returns:
Type
Promise

isCurrentChannelId()

是当前会话的 channelId

Returns:
Type
Boolean

joinChannel(options)

主动加入频道

Parameters:
Name Type Argument Default Description
options Object

音视频相关配置参数

Properties
Name Type Description
channelName String

频道名称

type Number

通话类型

option.liveEnable Boolean

是否开启旁路直播,可选 true / false(默认不开启)

options.sessionConfig Object

会话配置

option.sessionConfig.videoEncodeMode Number <optional>

视频编码策略,默认流畅优先(暂不支持实时设置)

options.sessionConfig.videoQuality Number

视频分辨率,实际效果因画面采集频率和机器性能限制可能达不到期望值

options.sessionConfig.videoFrameRate Number

视频帧率,实际效果因画面采集频率和机器性能限制可能达不到期望值

options.sessionConfig.videoBitrate Number

视频码率, >=100000 <= 5000000 有效

options.sessionConfig.highAudio Boolean <optional>
false

高清语音开关, 默认关闭

options.sessionConfig.recordVideo Boolean <optional>
false

视频录制开关, 默认关闭

options.sessionConfig.recordAudio Boolean <optional>
false

音频录制开关, 默认关闭

options.sessionConfig.rtmpUrl Boolean

推流地址

options.sessionConfig.rtmpRecord Boolean <optional>
false

推流服务端录制开关, 默认关闭

options.sessionConfig.splitMode Boolean

推流的布局, 布局类型默认平铺

options.sessionConfig.layout String

自定义布局,当主播选择推流布局为: LAYOUT_SPLITCUSTOMLAYOUT 和 LAYOUT_SPLITAUDIOLAYOUT 模式时生效

Returns:
Type
Promise

leaveChannel()

离开频道

Returns:
Type
Promise

netDetect( [type] [, quality])

网络探测

Parameters:
Name Type Argument Default Description
type Number <optional>
Netcall.NETDETECT_AUDIO

探测类型

quality Number <optional>
Netcall.CHAT_VIDEO_QUALITY_NORMAL

探测质量分辨率

Returns:
Type
Void

notCurrentChannelId()

不是当前会话的 channelId

Returns:
Type
Boolean

response( [options])

响应音视频被呼叫

调用此接口前需要先初始化信令

Parameters:
Name Type Argument Default Description
options Object <optional>
{}

配置参数

Properties
Name Type Argument Default Description
accepted Boolean <optional>
true

true 接听, false 拒绝

beCalledInfo Object

被呼叫的信息, 在 beCalling 事件里可以接收到的信息

sessionConfig Object <optional>

会话配置

option.sessionConfig.videoEncodeMode Number <optional>

视频编码策略,默认清晰优先

options.sessionConfig.videoQuality Number <optional>

视频分辨率,实际帧率因画面采集频率和机器性能限制可能达不到期望值
注:该参数发送给对方的分辨率,如果摄像头的分辨率比这个大会缩小,如果摄像头的分辨率比这个小则直接发送

options.sessionConfig.videoFrameRate Number <optional>

视频帧率

options.sessionConfig.videoBitrate Number <optional>

视频码率, >=100000 <= 5000000 有效

options.sessionConfig.highAudio Boolean <optional>
false

高清语音开关, 默认关闭

options.sessionConfig.recordVideo Boolean <optional>
false

视频录制开关, 默认关闭

options.sessionConfig.recordAudio Boolean <optional>
false

音频录制开关, 默认关闭

options.sessionConfig.recordAudio Boolean <optional>
false

录制模式,0:参与混合录制并且录制单人文件 1:只参与混合录制 2:只录制单人文件

options.sessionConfig.recordType Number <optional>
0

音频录制开关, 默认关闭

Returns:
Type
Promise

resumeLocalStream()

继续播放自己的视频画面 #废弃

Returns:
Type
Void

resumeRemoteStream()

继续播放对方的视频画面 #废弃 请使用startRemoteStream

Returns:
Type
Void

setAudioBlack(account)

设置目标静音

Parameters:
Name Type Description
account Number

账号

Returns:
Type
Void

setAudioStart(account)

设置目标非静音

Parameters:
Name Type Description
account Number

账号

Returns:
Type
Void

setCaptureVolume(num)

设置采集音量

Parameters:
Name Type Description
num Number

音量大小, 0-255

Returns:
Type
Void

setPlayVolume(options)

设置播放音量

Parameters:
Name Type Default Description
options Object {}

配置参数

Properties
Name Type Description
volume Number

音量大小, 0-255, 必填

Returns:
Type
Void

setVideoScale(options)

裁剪画面尺寸和比例: 不裁剪 / 1:1 / 4:3 / 16 : 9

Parameters:
Name Type Default Description
options Object {}

配置参数

Properties
Name Type Argument Default Description
account String

对象账号,不填操作全部远程流

type Number <optional>
Netcall.CHAT_VIDEO_SCALE_None

裁剪比例,默认不裁剪,选值类型请参考 Netcall.CHAT_VIDEO_SCALE_*

Returns:
Type
Promise

setVideoViewRemoteSize(options)

设置对方画面的尺寸

最终显示的画面不大于所设置的宽和高
备注:视频画面大小设置完全基于摄像头开启的大小,如果设置的大小超过摄像头开启的大小,结果以摄像头开启尺寸为准!

Parameters:
Name Type Default Description
options Object {}

配置参数

Properties
Name Type Argument Default Description
account String

对象账号,不填操作全部远程流

width Number

宽度

height Number

高度

cut Number <optional>
true

是否需要剪裁, 默认按1:1比例剪裁(画面不变形), cut: true, 画面按照提供的宽高等比例裁剪,返回裁剪后的实际大小, cut: false, 画面不进行裁剪, 返回按原始宽高比例放大缩小后的实际宽高
注: agent为了解决绿屏的问题,宽高需要设置为8的倍数,即使开发者设置的不是8的倍数,agent也会计算出不超过所设置宽高的最接近8的倍数的宽高

Returns:
Type
Promise

setVideoViewSize(options)

设置自己画面的尺寸

最终显示的画面不大于所设置的宽和高
备注:视频画面大小设置完全基于摄像头开启的大小,如果设置的大小超过摄像头开启的大小,结果以摄像头开启尺寸为准!

Parameters:
Name Type Default Description
options Object {}

配置参数

Properties
Name Type Argument Default Description
width Number

宽度

height Number

高度

cut Number <optional>
true

是否需要剪裁, 默认按1:1比例剪裁(画面不变形), cut: true, 画面按照提供的宽高等比例裁剪,返回裁剪后的实际大小, cut: false, 画面不进行裁剪, 返回按原始宽高比例放大缩小后的实际宽高
注: agent为了解决绿屏的问题,宽高需要设置为8的倍数,即使开发者设置的不是8的倍数,agent也会计算出不超过所设置宽高的最接近8的倍数的宽高

Returns:
Type
Promise

startDevice(options)

开启设备

Parameters:
Name Type Description
options Object

配置参数

Properties
Name Type Argument Description
type Number

设备类型

device Object <optional>

设备, 如果没有指定, 那么开启该类型的第一个设备

width Number <optional>

如果启动视频设备, 设置摄像头捕获的视频的最大宽度

height Number <optional>

如果启动视频设备, 设置摄像头捕获的视频的最大高度

Returns:
Type
Promise

startLocalStream(node)

开启本地视频流

Parameters:
Name Type Description
node Node

本地视频流dom节点 可选

Returns:
Type
Void

startRecordAac(options)

混音本地录制(所有流一起录)

Parameters:
Name Type Description
options Object
Properties
Name Type Description
path String

路径地址 如E:\wenjian\abc.aac

Returns:
Type
Promise

startRecordMp4(options)

本地录制(录自己) 请监听recordMp4事件为正式开始录制回调 netcall.on('recordMp4',function(data){})

Parameters:
Name Type Description
options Object
Properties
Name Type Argument Default Description
path String

路径地址 如E:\wenjian\abc.mp4

account String <optional>

需要录制的目标,默认录制自己

aac Boolean <optional>
false

是否需要混音录制,默认关闭

recode Boolean <optional>
true

是否允许视频重新编码,默认开启

width Number <optional>

录制Mp4的宽度,默认为0,小于16无效,无效时取视频默认宽度

height Number <optional>

录制Mp4的高度,默认为0,小于16无效,无效时取视频默认高度

Returns:
Type
Void

startRemoteStream(options)

开启远程视频流

Parameters:
Name Type Default Description
options Object {}

配置参数

Properties
Name Type Description
account String

账号, 不设置则操作所有远程流

node Node

视频画面显示的dom容器节点

Returns:
Type
Void

stopDevice(type)

停止指定类型的设备

Parameters:
Name Type Description
type String

可选设备类型请参考 Netcall.DEVICE_TYPE_*

Returns:
Type
Void

stopLocalStream()

停止本地视频流

Returns:
Type
Void

stopRecordAac()

停止混音本地录制

Returns:
Type
Promise

stopRecordMp4()

停止本地录制(录自己)

Returns:
Type
Promise

stopRemoteStream(account)

关闭远程视频流

Parameters:
Name Type Description
account String

对应的nim账号, 不设置则操作所有远程流

Returns:
Type
Void

stopSignal()

停止信令通道

Returns:
Type
Promise

suspendLocalStream()

暂停播放自己的视频画面 #废弃

Returns:
Type
Void

suspendRemoteStream()

暂停播放对方的视频画面 #废弃 请使用stopRemoteStream

Returns:
Type
Void

switchAudioToVideo()

从音频模式切换为视频模式

Returns:
Type
Void

switchVideoToAudio()

从视频模式切换为音频模式

Returns:
Type
Void

updateRtmpUrl(url)

更新推流地址

Parameters:
Name Type Description
url String

新地址

Returns:
Type
Promise