本文为您介绍主播PK场景下如何实现静音和取消静音功能的操作方法。
操作步骤
说明
静音或取消静音调用setLiveMixTranscodingConfig接口不宜特别频繁,建议两次调用间隔应大于1秒。
实现静音功能
房间A的主播A和房间B的主播B进行PK , PK过程中 , 主播A想要将主播B的音频静掉,房间A内的主播和观众 , 均听不到主播B的声音。而主播B在B房间的发言不受影响 ,想要完成这样的静音功能,需要分两个操作:
主播A调用AlivcLivePlayer接口pauseAudioPlaying在本地静音掉主播B的声音。
房间A对应的混流时需要将主播B的声音去掉,主播A调用setLiveMixTranscodingConfig接口,在参数AlivcLiveMixStream中将主播B的streamType从AlivcLiveMixStreamTypeAudioVideo修改成AlivcLiveMixStreamTypePureVideo。
Android示例代码:
if (alivcLivePlayer != null) {
alivcLivePlayer.pauseAudioPlaying();
}
AlivcLiveTranscodingConfig transcodingConfig = new AlivcLiveTranscodingConfig();
AlivcLiveMixStream anchorMixStream = new AlivcLiveMixStream();
if (mAlivcLivePushConfig != null) {
anchorMixStream.setUserId(anchorId);
anchorMixStream.setX(0);
anchorMixStream.setY(0);
anchorMixStream.setWidth(mAlivcLivePushConfig.getWidth() / 2);
anchorMixStream.setHeight(mAlivcLivePushConfig.getHeight() / 2);
anchorMixStream.setZOrder(1);
anchorMixStream.setMixStreamType(AlivcLiveMixStreamType.AUDIO_VIDEO);
}
AlivcLiveMixStream pkAnchorMixStream = new AlivcLiveMixStream();
if (mAudienceFrameLayout != null) {
pkAnchorMixStream.setUserId(pkAnchor);
pkAnchorMixStream.setX(mAlivcLivePushConfig.getWidth() / 2);
pkAnchorMixStream.setY(0);
pkAnchorMixStream.setWidth(mAlivcLivePushConfig.getWidth() / 2);
pkAnchorMixStream.setHeight(mAlivcLivePushConfig.getHeight() / 2);
pkAnchorMixStream.setZOrder(2);
pkAnchorMixStream.setMixStreamType(AlivcLiveMixStreamType.PURE_VIDEO);
}
ArrayList<AlivcLiveMixStream> mixStreams = new ArrayList<>();
mixStreams.add(anchorMixStream);
mixStreams.add(pkAnchorMixStream);
transcodingConfig.setMixStreams(mixStreams);
if (mAlivcLivePusher != null) {
mAlivcLivePusher.setLiveMixTranscodingConfig(transcodingConfig);
}
iOS示例代码:
[self.rtcPlayer pauseAudioPlaying];
AlivcLiveTranscodingConfig *liveTranscodingConfig = [[AlivcLiveTranscodingConfig alloc] init];
AlivcLiveMixStream *anchorMixStream = [[AlivcLiveMixStream alloc] init];
anchorMixStream.userId = userA;
anchorMixStream.x = 0;
anchorMixStream.y = 0;
anchorMixStream.width = [self.rtcPushConfig getPushResolution].width;
anchorMixStream.height = [self.rtcPushConfig getPushResolution].height;
anchorMixStream.zOrder = 1;
anchorMixStream.streamType = AlivcLiveMixStreamTypeAudioVideo;
AlivcLiveMixStream *audienceMixStream = [[AlivcLiveMixStream alloc] init];
audienceMixStream.userId = userB;
audienceMixStream.x = 100;
audienceMixStream.y = 200;
audienceMixStream.width = 200;
audienceMixStream.height = 300;
audienceMixStream.zOrder = 2;
audienceMixStream.streamType = AlivcLiveMixStreamTypePureVideo;
liveTranscodingConfig.mixStreams = [NSArray arrayWithObjects:anchorMixStream, audienceMixStream, nil];
[self.rtcPusher setLiveMixTranscodingConfig:liveTranscodingConfig];
取消静音功能
取消静音需求,也需要分两个操作:
主播A调用AlivcLivePlayer的接口resumeAudioPlaying取消静掉本地播放。
主播A调用setLiveMixTranscodingConfig接口,在参数AlivcLiveMixStream中将主播B的streamType从AlivcLiveMixStreamTypePureVideo修改成AlivcLiveMixStreamTypeAudioVideo
Android示例代码:
if (alivcLivePlayer != null) {
alivcLivePlayer.resumeAudioPlaying();
}
AlivcLiveTranscodingConfig transcodingConfig = new AlivcLiveTranscodingConfig();
AlivcLiveMixStream anchorMixStream = new AlivcLiveMixStream();
if (mAlivcLivePushConfig != null) {
anchorMixStream.setUserId(anchorId);
anchorMixStream.setX(0);
anchorMixStream.setY(0);
anchorMixStream.setWidth(mAlivcLivePushConfig.getWidth() / 2);
anchorMixStream.setHeight(mAlivcLivePushConfig.getHeight() / 2);
anchorMixStream.setZOrder(1);
anchorMixStream.setMixStreamType(AlivcLiveMixStreamType.AUDIO_VIDEO);
}
AlivcLiveMixStream pkAnchorMixStream = new AlivcLiveMixStream();
if (mAudienceFrameLayout != null) {
pkAnchorMixStream.setUserId(pkAnchor);
pkAnchorMixStream.setX(mAlivcLivePushConfig.getWidth() / 2);
pkAnchorMixStream.setY(0);
pkAnchorMixStream.setWidth(mAlivcLivePushConfig.getWidth() / 2);
pkAnchorMixStream.setHeight(mAlivcLivePushConfig.getHeight() / 2);
pkAnchorMixStream.setZOrder(2);
pkAnchorMixStream.setMixStreamType(AlivcLiveMixStreamType.AUDIO_VIDEO);
}
ArrayList<AlivcLiveMixStream> mixStreams = new ArrayList<>();
mixStreams.add(anchorMixStream);
mixStreams.add(pkAnchorMixStream);
transcodingConfig.setMixStreams(mixStreams);
if (mAlivcLivePusher != null) {
mAlivcLivePusher.setLiveMixTranscodingConfig(transcodingConfig);
}
iOS示例代码:
[self.rtcPlayer resumeAudioPlaying];
AlivcLiveTranscodingConfig *liveTranscodingConfig = [[AlivcLiveTranscodingConfig alloc] init];
AlivcLiveMixStream *anchorMixStream = [[AlivcLiveMixStream alloc] init];
anchorMixStream.userId = userA;
anchorMixStream.x = 0;
anchorMixStream.y = 0;
anchorMixStream.width = [self.rtcPushConfig getPushResolution].width;
anchorMixStream.height = [self.rtcPushConfig getPushResolution].height;
anchorMixStream.zOrder = 1;
anchorMixStream.streamType = AlivcLiveMixStreamTypeAudioVideo;
AlivcLiveMixStream *audienceMixStream = [[AlivcLiveMixStream alloc] init];
audienceMixStream.userId = userB;
audienceMixStream.x = 100;
audienceMixStream.y = 200;
audienceMixStream.width = 200;
audienceMixStream.height = 300;
audienceMixStream.zOrder = 2;
audienceMixStream.streamType = AlivcLiveMixStreamTypeAudioVideo;
liveTranscodingConfig.mixStreams = [NSArray arrayWithObjects:anchorMixStream, audienceMixStream, nil];
[self.rtcPusher setLiveMixTranscodingConfig:liveTranscodingConfig];
反馈
- 本页导读 (1)
文档反馈