getstream没有发布视频的权限

移动开发 2026-07-10

我在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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章