文档

他人音频流

更新时间:

本文介绍连麦中与他人音频流相关的操作以及相应的回调消息。

说明

  • 接收他人音频流画面之前,不需要主动订阅音频流,默认会自动进行订阅。

  • 通过拉取连麦中的成员列表,可以获得其他人的麦克风开关状态。

  • 连麦中的其他人开关麦克风之后,会有消息通知。本人开关麦克风不会收到对应的消息通知。

  • 正在说话的人回调和音频流音量回调中用户ID为"0"时表示本人。

订阅他人音频流API使用示例

iOS端(Objective-C):

// 订阅/取消订阅他人
// 默认会自动进行订阅(不需要主动订阅)
id<AIRBRoomChannelProtocol> room = [[AIRBRoomEngine sharedInstance] getRoomChannelWithRoomID:@"xxx"]
[room.rtc subscribeRemoteAudioStream:(BOOL)sub fromUser:(NSString*)userID];

Android端(Java):

// 订阅/取消订阅他人
// 默认会自动进行订阅(不需要主动订阅)
rtcService.subscribeRemoteAudioStream(uid, true);

/**
 * 停止或恢复指定远端用户的音频流拉取
 */
int subscribeRemoteAudioStream(String uid, boolean sub);

Windows端(c++):

// 订阅/取消订阅他人
// 默认会自动进行订阅(不需要主动订阅)

开关麦克风相关消息通知示例

iOS端(Objective-C):

// 开关麦克风的消息,需要通过实现AIRBRoomChannelProtocol的AIRBRoomChannelDelegate中的如下方法和事件来通知
- (void) onAIRBRoomChannelEvent:(AIRBRoomChannelEvent) event info:(NSDictionary*)info{
    switch (event) {
        case AIRBRoomChannelEventMessageReceived:{
            AIRBRoomChannelMessageType messageType = [[info valueForKey:@"type"] integerValue];
            switch (messageType) {
                case AIRBRoomChannelMessageTypeOnMicphoneMuted:{
                    NSData *turnData = [[info valueForKey:@"data"] dataUsingEncoding:NSUTF8StringEncoding];
                    NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:turnData options:NSJSONReadingMutableLeaves error:nil];
                    // 自定义处理
                }
                break;
                .....
            }
        }
        break;
        .....
    }
}

Android端(Java):

// 通过调用RtcService.addEventHandler添加的事件监听器的回调触发来判断操作状态
rtc.addEventHandler(new SampleRtcEventHandler(){
    @Override
    public void onRtcUserAudioMuted(String uid) {
        // 静音
    }
    @Override
    public void onRtcUserAudioEnable(String uid) {
        // 取消静音
    }
});

Windows端(c++):

继承RtcEventListener,并重写OnUserAudioMuted方法
virtual void OnUserAudioMuted(const std::string & uid, bool is_mute) {

}

正在说话的人回调消息API示例

iOS端(Objective-C):

// 正在说话的人回调,需要通过实现AIRBRTCProtocol的AIRBRTCDelegate中的如下方法和事件来通知,
- (void) onAIRBRTCActiveSpeaker:(NSString*)userID{
    // 说话人userID, 为"0"表示本地说话人。其返回的是当前时间段内声音最大的用户ID,而不是瞬时声音最大的用户ID。
}

Windows端(c++):

继承RtcEventListener,并重写OnActiveSpeaker方法
virtual void OnActiveSpeaker(const std::string & uid) {

}

音频流音量回调消息API示例

iOS端(Objective-C):

// 音频流音量回调消息,需要通过实现AIRBRTCProtocol的AIRBRTCDelegate中的如下方法和事件来通知,
// 具体参数请看SDK注释
- (void) onAIRBRTCAudioVolumeCallback:(NSArray <AIRBRTCUserVolumeInfo *> *_Nullable)volumeInfoArray totalVolume:(int)totalVolume{
    
}

Windows端(c++):

继承RtcEventListener,并重写OnRtcAudioVolumeChange方法
virtual void OnRtcAudioVolumeChange(const std::vector<RtcUserVolumeInfo> & event, int32_t total_volume) {

}

  • 本页导读 (1)
文档反馈