Web语音对讲集成说明

物联网智能视频服务提供语音对讲功能,实现Web端与IPC设备之间端到端的实时对讲能力。本文介绍Web端实现语音对讲的完整流程。

前提条件

设备已接入物联网智能视频服务平台,并实现语音对讲能力。具体内容,请参见设备端开发指南

说明

设备端支持播放G711A或者G711U语音编码格式,采样率为8000 HZ,采样大小为16 Bit,单声道编码。

如果需要支持其他编码参数音频,目前需用户自行扩展实现。

使用说明

Web语音对讲需要与直播功能配合使用,当直播过程中开启语音对讲功能时,Web端会采集音频数据,并通过网络发送到设备。Web端通过直播链路接收音视频数据,并进行音视频播放。

限制说明

支持的浏览器:Chrome 116版本。

控制台操作

物联网智能视频服务控制台提供Web DEMO运行窗口,您可直接进行语音对讲调试。具体内容,请参见Web DEMO

说明

目前Web DEMO中默认发送音频格式为G711A,且不可修改。

开发步骤

  1. Web端开启视频直播:可自行集成播放器实现Web视频直播功能。具体内容,请参见播放器开发

  2. 调用云端API获取Web语音通话地址:Scheme参数设置成ws。接口详情,请参见QueryVoiceIntercom

  3. Web端开启和关闭语音通话:Web端集成语音对讲能力方法,Web Demo示例开发,请参见下文Web端语音对讲开发

Web端语音对讲开发

Web Demo

  1. 在HTML代码中引入CDN资源。

    <script src="//g.alicdn.com/linkplatform/voice-call/1.0.0/index.js"></script>
  2. 配置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

运行状态,可选值:

  • 0:初始值。

  • 1:调用了start方法。

  • 2:建立连接并启用麦克风。

  • 3:调用了stop方法。

audioContext

AudioContext实例,启用麦克风后创建。

inputSource

MediaStreamAudioSourceNode实例,启用麦克风后创建。

Sender实例方法说明

  • start:开始语音对讲。

    可传入新的WebSocket地址。如果不传,会使用创建Sender实例时的备用地址。

    start(url?: string | URL | (() => Promise<string | URL>), protocols?: string | string[]): Promise<void>
  • stop:停止语音对讲。

    stop(): Promise<void>
  • disposeReactVue组件销毁时调用。

    dispose(): Promise<void>