语音通讯 API

JessibucaProTalk(options)

options 支持的参数有:

encType

  • 类型string
  • 默认值g711a
  • 用法

语音编码类型,支持g711ag711upcm,默认是g711a

g711a/g711u 格式的 8k采样率,16位精度,单声道

当格式选为g711格式的,如果采样率和,采用精度不是 8k采样率,16位精度 则会抛出警告。

packetType

  • 类型string
  • 默认值rtp
  • 用法

语音包类型,支持rtpemptyjtt 默认是rtp

rtp 默认走的是tcp的封装格式,封装格式是 [2]+[12]+[裸数据],支持配置成udp,封装格式是 [12]+[裸数据]

empty 封装格式是 [裸数据]

rtp 仅支持g711ag711u格式的封装。

empty 支持所有格式的封装。

jtt 是道路运输车辆卫星定位系统音视频通讯协议

packetTcpSendType

  • 类型string
  • 默认值tcp
  • 用法

rtp tcp 封装格式是 [2]+[12]+[裸数据]

[2]: 2字节的rtp头(音频裸数据长度+12个字节的rtp扩展头)

[12]: 12字节的rtp扩展头

[裸数据]: 语音裸数据

rtp udp 封装格式是 [12]+[裸数据]

[12]: 12字节的rtp扩展头

[裸数据]: 语音裸数据

rtpSsrc

  • 类型string

  • 用法

rtp包的ssrc,10位

numberChannels

  • 类型number
  • 默认值1
  • 用法

采样通道

sampleRate

  • 类型number
  • 默认值8000
  • 用法: 采样率

g711a/g711u 格式的 8k采样率,16位精度,单声道

pcm裸流数据,支持任意格式的采样率

sampleBitsWidth

  • 类型number
  • 默认值16
  • 用法: 采样精度,支持81632

g711a/g711u 格式的 8k采样率,16位精度,单声道

pcm裸流数据,支持任意格式的精度

debug

  • 类型boolean
  • 默认值:false
  • 用法: 是否开启debug模式

debugLevel

  • 类型string
  • 默认值warn
  • 用法

debug模式下的日志级别,支持debugwarn,默认是warn

error 的信息默认就是会输出出来的。

testMicrophone

  • 类型boolean
  • 默认值:false
  • 用法: 是否开启测试麦克风,不连接ws

engine

  • 类型string
  • 默认值worklet
  • 用法

语音引擎,支持workletscript,默认是worklet

checkGetUserMediaTimeout

  • 类型boolean
  • 默认值:false
  • 用法: 是否开启检测getUserMedia超时

getUserMediaTimeout

  • 类型number
  • 默认值10 * 1000
  • 用法

getUserMedia超时时间,单位ms

saveRtpToFile

  • 类型boolean
  • 默认值:false
  • 用法: 是否保存成文件

仅供测试下载rtp文件使用,不要在生产环境使用,不然会在客户端内存里面保存大量的文件,导致内存溢出。

audioConstraints

  • 类型object
  • 默认值{}
  • 用法:配置getUserMedia的参数

支持配置的参数有:

{
    deviceId: '', // 音频设备的id
}

jttSimNumber

  • 类型number
  • 默认值:``
  • 用法:道路运输车辆卫星定位系统音视频通讯协议的sim卡号
  • 注意:只有在packetTypejtt的时候才会生效

道路运输车辆卫星定位系统音视频通讯协议的sim卡号 12位长度

jttChannelNumber

  • 类型number
  • 默认值:``
  • 用法:道路运输车辆卫星定位系统音视频通讯协议的通道号
  • 注意:只有在packetTypejtt的时候才会生效

道路运输车辆卫星定位系统音视频通讯协议的通道号, 2位长度

方法

startTalk(wsUrl, options)

  • 参数
    • {string} wsUrl
    • {object} options
  • 用法: 开启语音
  • 返回值Promise

options 参数通初始化 new JessibucaProTalk(options) 时的参数一致

stopTalk()

  • 用法: 关闭语音
  • 返回值Promise

getTalkVolume()

  • 用法: 获取语音音量
  • 返回值Promise(number)

返回值是一个0-100的数字,表示当前语音音量

setTalkVolume(volume)

  • 用法: 设置语音音量
  • 返回值Promise
  • 参数
    • {number} volume 0-100的数字,表示当前语音音量

事件

talkStreamClose (废弃)

推荐使用talkFailedAndStop事件替代

语音通讯websocket的 close 事件

jessibucaProTalk.on('talkStreamClose', (event) => {
    console.log('talkStreamClose', event);
});

//OR
jessibucaProTalk.on(JessibucaProTalk.EVENTS.talkStreamClose, (event) => {
    console.log('talkStreamClose', event);
});

内部会调用stopTalk()方法

talkStreamError (废弃)

推荐使用talkFailedAndStop事件替代

语音通讯websocket的 error 事件

jessibucaProTalk.on('talkStreamError', (event) => {
    console.log('talkStreamError', event);
});
//OR
jessibucaProTalk.on(JessibucaProTalk.EVENTS.talkStreamError, (event) => {
    console.log('talkStreamError', event);
});

内部会调用stopTalk()方法

talkStreamInactive (废弃)

推荐使用talkFailedAndStop事件替代

语音通讯,切换音频输入源。


jessibucaProTalk.on('talkStreamInactive', (event) => {
    console.log('talkStreamInactive', event);
});
// OR
jessibucaProTalk.on(JessibucaProTalk.EVENTS.talkStreamInactive, (event) => {
    console.log('talkStreamInactive', event);
});

内部会调用stopTalk()方法

talkGetUserMediaTimeout (废弃)

推荐使用talkFailedAndStop事件替代

检测到getUserMedia超时时间超过getUserMediaTimeout 之后触发。

jessibucaProTalk.on('talkGetUserMediaTimeout', (event) => {
    console.log('talkGetUserMediaTimeout', event);
});
// OR
jessibucaProTalk.on(JessibucaProTalk.EVENTS.talkGetUserMediaTimeout, (event) => {
    console.log('talkGetUserMediaTimeout', event);
});

内部会调用stopTalk()方法

talkFailedAndStop

语音通讯失败,停止语音通讯。

  • 回调参数
    • {string} errorType 错误类型
    • {string} msg 错误信息

其中 errorType 有

  • talkStreamClose 语音通讯websocket的 close 事件
  • talkStreamError 语音通讯websocket的 error 事件
  • talkStreamInactive 语音通讯,切换音频输入源
  • talkGetUserMediaTimeout 检测到getUserMedia超时时间超过getUserMediaTimeout 之后触发
  • tallWebsocketClosedByError websocket被异常关闭。

jessibucaProTalk.on('talkFailedAndStop', (errorType, msg) => {
    console.log('talkFailedAndStop', errorType, msg);
});
// OR
jessibucaProTalk.on(JessibucaProTalk.EVENTS.talkFailedAndStop, (errorType, msg) => {
    console.log('talkFailedAndStop', errorType, msg);
});

talkStreamMsg

发送的语音数据

  • 回调参数
    • {ArrayBuffer} arraybuffer PCM 语音数据

只有在配置testMicrophonetrue的时候才会触发。


jessibucaProTalk.on('talkStreamMsg', (arraybuffer) => {
    console.log('talkStreamMsg', arraybuffer);
});
// OR
jessibucaProTalk.on(JessibucaProTalk.EVENTS.talkStreamMsg, (arraybuffer) => {
    console.log('talkStreamMsg', arraybuffer);
});