本文介绍连麦中与他人音频流相关的操作以及相应的回调消息。
说明
接收他人音频流画面之前,不需要主动订阅音频流,默认会自动进行订阅。
通过拉取连麦中的成员列表,可以获得其他人的麦克风开关状态。
连麦中的其他人开关麦克风之后,会有消息通知。本人开关麦克风不会收到对应的消息通知。
正在说话的人回调和音频流音量回调中用户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)
文档反馈