getstream没有发布视频的权限
我在Expo React Native应用中启用摄像头 call?.camera.enable() 进行视频通话时,总是会出现这个错误
没有发布VIDEO的权限
const myCall = client.call("default", cast(callId));
await myCall.getOrCreate({
data: {
members: [
{ user_id: String(user.user?.id), role: "call_member" },
{ user_id: String(recipientId), role: "call_member" },
],
settings_override: {
video: {
camera_default_on: isVideoCall,
target_resolution: {
bitrate: 400000,
height: 640,
width: 360,
},
},
},
},
});
我可以顺利加入通话,只是没有视频显示。
export const joinWithRetry = async (
call: Call,
options: JoinCallData = {},
retries = 3,
) => {
for (let attempt = 1; attempt <= retries; attempt++) {
try {
await call.join(options);
return;
} catch (error: any) {
if (error?.code === 16 && attempt < retries) {
await new Promise((res) => setTimeout(res, 300 * attempt));
} else {
throw error;
}
}
}
};
await joinWithRetry(call, {
create: initiate === "true",
});
解决方案
这不是你代码中的错误,而是Stream的仪表板/配置错误。Stream根据通话类型的权限拒绝你发布视频的尝试。settings_override.video.camera_default_on 控制着客户端对摄头的行为,权限是分开的。这也是为什么你可以顺利加入通话,但用户不能发布他们的视频流的原因。
在 "default" 调用类型中的 call_member 角色默认没有启用 SendVideo 能力。
要修复它:
- Stream Dashboard > Video & Audio > Call Types
- 选择 "default" 调用类型
- 找到 Roles & Permissions
- 找到 call_member 角色
- 启用 Publish Video(或 "Send Video")能力
这应当现在就能让你的设备向Stream服务发送视频。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。