操作步骤

本文介绍在iOS应用端实现语音对讲功能的操作步骤。

前提条件

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

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

操作步骤

  1. 创建语音对讲实例,并设置音频参数。

        // 创建语音对讲实例
        LVMediaAudioHeader header;
        header.audioBitPerSample = 16;
        header.audioChannel = 1;
        header.audioSamplesPerSec = 8000;
        header.audioEncType = LV_MEDIA_AUDIO_ENC_G711A;
        self.liveIntercom = [LVLiveIntercom create:header];
  2. 注册监听器,并处理语音对讲回调。

    请在对应的事件回调中处理,包括对讲开始、录音开始和结束、音量回调(用于UI展示)。在语音通道建立和对讲过程中,可能发生的错误,请参见错误列表

    self.liveIntercom.liveIntercomDelegate = self;
    self.liveIntercom.liveIntercomVoiceChangeDelegate = self;
    
    #pragma mark - LiveIntercomDelgate
    - (void) onLiveIntercomTalkReady:(LVLiveIntercom *_Nonnull)liveIntercom{
        [self appendInfoText:@"可以开始说话了\n"];
    }
    
    - (void) onLiveIntercomRecorderStart:(LVLiveIntercom *_Nonnull)liveIntercom{
        [self appendInfoText:@"录音机启动\n"];
    }
    
    - (void) onLiveIntercomRecorderEnd:(LVLiveIntercom *_Nonnull)liveIntercom{
        [self appendInfoText:@"录音机结束\n"];
    }
    
    - (void) onLiveIntercomRecorderVolume:(LVLiveIntercom *_Nonnull)liveIntercom volume:(NSInteger)volume{
        [self appendInfoText:[NSString stringWithFormat:@"音量变化%ld\n", volume]];
    }
    
    - (void) onLiveIntercomError:(LVLiveIntercom *_Nonnull)liveIntercom error:(NSError *_Nonnull)error{
        [self appendInfoText:[NSString stringWithFormat:@"对讲出错%@:\n", error]];
    }
  3. 设置声音采集的增益值。

    可以设置App端声音采集的增益值,提供如下水平供选择(默认值为无),请根据设备效果来调整。

    • -1:None。

    • 0:Mild。

    • 1:Medium。

    • 2:high。

    • 3:Aggressive。

    • 4:very Aggressive。

    • 5:Max。

    [self.liveIntercom setGainLevel:-1];
  4. 设置对讲模式。

    提供如下五种对讲模式。

    对讲模式

    说明

    注意事项

    单向对讲

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

    App端采集音频期间手机保持声音静默。

    全双工对讲(独立)

    App端和设备端都需要同时做采音和放音。

    设备端必须支持AEC(Acoustic Echo Cancellation),否则不建议。使用该方案将会使用设备对讲通道的声音进行播放,可以单独存在不依赖直播通道。

    全双工对讲(伴随直播)

    App端和设备端都需要同时做采音和放音。

    设备端必须支持AEC(Acoustic Echo Cancellation),否则不建议。使用该方案将会使用设备直播通道的声音进行播放,要求必须有已开播的直播通道,可通过LVLivePlayer.audioFocus()方法在对讲开启前选择对应的已存在的直播通道。

    半双工对讲(独立)

    App端和设备端都需要做采音和放音。

    一端上始终不会出现同时采音和放音的情况,因此设备不要求支持AEC(Acoustic Echo Cancellation)。使用上类似对讲机,由App端在一次对讲会话中可多次人为控制录音的开启和结束,将会使用设备对讲通道的声音进行播放,可以单独存在不依赖直播通道。

    说明

    该模式需要设备端SDK使用v2.3.3及以上版本的支持,如果使用较旧的设备SDK,将会降级到全双工对讲。

    半双工对讲(伴随直播)

    App端和设备端都需要做采音和放音。

    任意一端上始终不会出现同时采音和放音的情况,因此设备不要求支持AEC(Acoustic Echo Cancellation)。使用上类似对讲机,由App端在一次对讲会话中可多次人为控制录音的开启和结束,将会使用设备直播通道的声音进行播放,要求必须有已开播的直播通道,可通过LVLivePlayer.audioFocus()方法在对讲开启前选择对应的已存在的直播通道。

    说明

    该模式需要设备端SDK使用v2.3.3及以上版本的支持,如果使用较旧的设备SDK,将会降级到全双工对讲。

    // 设置使用独立双讲
    [self.liveIntercom setLiveIntercomMode:LV_LIVE_INTERCOM_MODE_DOUBLE_TALK];
  5. 开始对讲。

    调用QueryVoiceIntercom接口获取IPC设备的语音对讲地址及解密密钥,并在开始对讲时设置。

    对讲开始后,会启动回声消除,若已连接蓝牙耳机或者线控耳机则路由到耳机上。

    // 开始对讲
    [self.liveIntercom start:@"rtmp://xx.xx.xx.xx/talk/xxx" decryptIvBase64:(@"xxxxxxx") decryptKeyBase64:@"xxxxxxx");
  6. 切换对讲机讲话状态。开启半双工对讲后,您可主动切换对讲状态,按需收放音。

    说明

    仅半双工对讲需要关注。

    // 该状态下APP端停止播放,采集音频发给设备端,同时设备端会停止音频采集,播放APP端采集的声音
    [self.liveIntercom listen:YES];
    ...
    // 该状态下APP端恢复播放,同时设备端会停止播放声音,恢复音频采集
    [self.liveIntercom listen:NO];
  7. 结束对讲。

    对讲结束后释放音频焦点,并设置常规模式,对讲过程中默认开启手机回声消除。

    // 停止对讲
    [self.liveIntercom stop];
  8. 释放对讲资源。

    不再使用对讲实例时,由ARC自动释放。