阿里云首页 物联网视频服务

语音对讲

设备端Android版本LinkVisual SDK提供语音对讲功能,本文介绍实现语音对讲功能的过程。

下文简称设备端Android版本LinkVisual SDK为LinkVisual SDK。

前提条件

  • 已创建产品和设备,具体操作,请参见设备接入。

  • 已获取LinkVisual SDK,具体操作,请参见获取SDK

  • 已完成初始化LinkVisual SDK,具体操作,请参见初始化SDK

音频类型

语音对讲支持G711a、G711U以及AAC_LC编码方式,三种音频类型详细信息为:

说明

选择编码方式前,请确认您的设备端IPC设备是否支持。

  • 采样率:支持8 kHz和16 kHz。

  • 支持编码。

  • 支持解码。

对讲类型

语音对讲的类型及其注意事项如下:

类型

说明

注意事项

单向对讲

应用端App采集并发送音频数据到设备端进行播放。

应用端App采集音频期间手机保持静音。

双向对讲

应用端App和设备端同时采集音频和播放音频。

设备端必须支持声学回声消除AEC(Acoustic Echo Cancellation),否则不建议使用该功能。

操作步骤

服务端下发开始推流指令后,执行如下操作:

  • 通过事先注册的语音对讲事件监听器OnLiveIntercomListener通知开始语音对讲、结束语音对讲、接收对端的音频参数和接收对端的语音数据。

  • 通过流错误监听器监听推流中发生的错误,然后通知应用端App。

    注意

    请不要在回调接口中执行阻塞任务。

详细实现过程如下:

  1. 选择对讲模式。

    // 设置双向对讲模式
    IPCDev.getInstance().setLiveIntercomModeBeforeInit(IPCLiveIntercomV2.LiveIntercomMode.DoubleTalk);
  2. 设置监听。

    // 设置语音对讲事件监听
    IPCDev.getInstance().getIpcLiveIntercom().setOnLiveIntercomListener(MainActivity.this);
    // 设置语音对讲错误回调
    IPCDev.getInstance().getIpcLiveIntercom().setOnLiveIntercomErrorListener(MainActivity.this);

示例代码

注册语音对讲事件监听器和错误监听器的完整代码如下。

public interface OnLiveIntercomListener {

    /**
     * 收到应用端App发起的开始语音对讲请求
     *
     * @return 返回当前设备端上行音频参数格式,如采样率、通道数、采样位宽、音频格式, 请确保对应用端App能支持该音频参数配置
     */
    AudioParams onStartVoiceIntercom();

    /**
     * 收到结束语音对讲请求
     */
    void onStopVoiceIntercom();

    /**
     * 收到应用端App音频参数,表示与应用端App的通道已建立,可以开始对讲
     * @param audioParams  应用端App的音频参数
     */
    void onAudioParamsChange(AudioParams audioParams);

    /**
     * 收到应用端App发送的PCM数据,一般用来做UI展示,比如绘制音量大小
     * @param buffer
     * @param size
     */
    void onAudioBufferReceive(byte[] buffer, int size);
}

public interface OnLiveIntercomErrorListener{

    /**
     * 语音对讲发生错误
     * @param error 见{@link LiveIntercomError}
     */
    void onError(LiveIntercomError error);
}

错误码

错误码

错误描述

解决方法

LiveIntercomError.INVALID_AUDIO_PARAMS

无效的设备端音频参数。

请检查设备端和应用端App的以下项目后重试:

  • 支持的音频编码格式为G711a、G711U或ACC_LC。

  • 均支持单通道。

  • 支持的音频采样频率为8 kHz或16 kHz。

LiveIntercomError.CONNECTION_STREAM_FAILED

建立语音对讲流通道失败。

请确保网络连接正常后重试。

LiveIntercomError.SEND_STREAM_DATA_FAILED

发送音频数据失败。

该错误通常由网络故障,或语音对讲对端主动关闭对讲导致,可忽略。

LiveIntercomError.INIT_RECORD_FAILED

初始化录音机错误。

请检查并修复以下异常后重试:

  • 检查是否录音权限未授权。

  • 检查是否有其它应用占用了录音机,终止应用进程并重试。

LiveIntercomError.START_RECORD_FAILED

启动录音机错误。

请检查是否有其它应用占用了录音机,终止应用进程并重试。

LiveIntercomError.READ_RECORD_BUFFER_FAILED

读取录音机数据错误。

录音机异常,请重启设备后重试。

LiveIntercomError.INIT_AUDIO_PLAYER_FAILED

创建音频播放器失败。

音频播放器异常,请重启设备后重试。