物联网智能视频服务提供语音对讲功能,实现Web端与IPC设备之间端到端的实时对讲能力。本文介绍Web端实现语音对讲的完整流程。
前提条件
设备已接入物联网智能视频服务平台,并实现语音对讲能力。具体内容,请参见设备端开发指南。
设备端支持播放G711A或者G711U语音编码格式,采样率为8000 HZ,采样大小为16 Bit,单声道编码。
如果需要支持其他编码参数音频,目前需用户自行扩展实现。
使用说明
Web语音对讲需要与直播功能配合使用,当直播过程中开启语音对讲功能时,Web端会采集音频数据,并通过网络发送到设备。Web端通过直播链路接收音视频数据,并进行音视频播放。
限制说明
支持的浏览器:Chrome 116版本。
控制台操作
物联网智能视频服务控制台提供Web DEMO运行窗口,您可直接进行语音对讲调试。具体内容,请参见Web DEMO。
目前Web DEMO中默认发送音频格式为G711A,且不可修改。
开发步骤
Web端开启视频直播:可自行集成播放器实现Web视频直播功能。具体内容,请参见播放器开发。
调用云端API获取Web语音通话地址:Scheme参数设置成
ws
。接口详情,请参见QueryVoiceIntercom。Web端开启和关闭语音通话:Web端集成语音对讲能力方法,Web Demo示例开发,请参见下文Web端语音对讲开发。
Web端语音对讲开发
Web Demo
在HTML代码中引入CDN资源。
<script src="//g.alicdn.com/linkplatform/voice-call/1.0.0/index.js"></script>
配置JavaScript/TypeScript文件。
const { Sender } = window.VoiceCall; const sender = new Sender({ // ... 可选参数 }); // 开始采集 sender.start('wss://xxx'); // 停止采集 sender.stop(); // 组件销毁时调用 sender.dispose();
可选参数说明
代码如下:
export interface Config { /** WebSocket 连接地址 */ url?: string | URL | (() => Promise<string | URL>); /** WebSocket 连接协议 */ protocols?: string | string[]; /** 缓冲区大小 */ bufferSize?: number; /** 采样率,默认 8000 */ sampleRate?: number; /** * 音频格式 * * 0 = Linear PCM, platform endian * 1 = ADPCM * 2 = MP3 * 3 = Linear PCM, little endian * 4 = Nellymoser 16-kHz mono * 5 = Nellymoser 8-kHz mono * 6 = Nellymoser * 7 = G.711 A-law logarithmic PCM * 8 = G.711 mu-law logarithmic PCM * 9 = reserved * 10 = AAC * 11 = Speex * 14 = MP3 8-Khz * 15 = Device-specific sound */ formatFlag?: number; /** * 采样位数 * * 0 = snd8Bit * 1 = snd16Bit */ sampleBitsFlag?: number; /** * 用于服务端解析 * * 0=单声道 * 1=立体声,双声道。 */ channelsFlag?: number; }
参数说明:
可选参数
说明
url
备用的WebSocket连接地址。
protocols
备用的WebSocket连接协议。
sampleRate
采样率,默认8000。
formatFlag
设置音频格式,默认为7,表示G711A。
可选:
0:Linear PCM, platform endian。
1:ADPCM。
2:MP3。
3:Linear PCM, little endian。
4:Nellymoser 16-kHz mono。
5:Nellymoser 8-kHz mono。
6:Nellymoser。
7:G.711 A-law logarithmic PCM。
8:G.711 mu-law logarithmic PCM。
9:reserved。
10:AAC。
11:Speex。
14:MP3 8-Khz。
15:Device-specific sound。
sampleBitsFlag
设置采样位,默认为1,表示16 Bit。
可选:
0:snd 8 Bit。
1:snd 16 Bit
channelsFlag
设置声音通道,默认为0,表示单声道。
可选:
0:单声道。
1:立体声,双声道。
Sender实例属性说明
属性 | 说明 |
state | 运行状态,可选值:
|
audioContext |
|
inputSource |
|
Sender实例方法说明
start
:开始语音对讲。可传入新的WebSocket地址。如果不传,会使用创建
Sender
实例时的备用地址。start(url?: string | URL | (() => Promise<string | URL>), protocols?: string | string[]): Promise<void>
stop
:停止语音对讲。stop(): Promise<void>
dispose
:React
或Vue
组件销毁时调用。dispose(): Promise<void>