Agora Web SDK提供了两种客户端角色:主播(broadcaster)和观众(audience)。它们在音视频通话中有不同的预期行为。
以下是一个使用Agora Web SDK的简单代码示例,演示了主播的预期行为:
// 创建Agora客户端实例
const client = AgoraRTC.createClient({ mode: 'live', codec: 'vp8' });
// 加入频道
client.join('', '', '', null)
.then(uid => {
console.log('加入频道成功,用户ID为:', uid);
// 发布音视频流
const localStream = AgoraRTC.createStream({ audio: true, video: true });
localStream.init(() => {
client.publish(localStream);
});
})
.catch(err => {
console.error('加入频道失败:', err);
});
// 监听其他用户加入频道事件
client.on('user-joined', (uid) => {
console.log('用户加入频道,用户ID为:', uid);
});
// 监听其他用户离开频道事件
client.on('user-left', (uid) => {
console.log('用户离开频道,用户ID为:', uid);
});
// 监听其他用户发布音视频流事件
client.on('stream-added', (evt) => {
const remoteStream = evt.stream;
client.subscribe(remoteStream);
});
// 监听其他用户停止发布音视频流事件
client.on('stream-removed', (evt) => {
const remoteStream = evt.stream;
remoteStream.stop();
});
// 订阅其他用户的音视频流
client.subscribe(remoteStream);
// 选择是否订阅其他用户的音视频流
client.setRemoteVideoStreamType(remoteStream, 1);
// 切换音视频设备
AgoraRTC.getDevices((devices) => {
const audioDevices = devices.filter(device => device.kind === 'audioinput');
const videoDevices = devices.filter(device => device.kind === 'videoinput');
// 切换到第一个音频设备
client.switchDevice('audio', audioDevices[0].deviceId);
// 切换到第一个视频设备
client.switchDevice('video', videoDevices[0].deviceId);
});
// 离开频道
client.leave();
以上是Agora Web SDK中主播和观众的预期行为以及一个包含代码示例的解决方法。请注意,以上示例仅为演示目的,实际使用时需要根据具体需求进行适当调整。