AgoraIO / API-Examples-Web

MIT License
221 stars 199 forks source link

basicVideoCall项目中用户无法看到主播视频 #74

Closed huangcs427 closed 1 year ago

huangcs427 commented 1 year ago

你好:

我在运行该项目中,发现主播在join()之后有await client.publish(Object.values(localTracks));的函数,是否可以理解为主播把本地流推到远端中,然后用户在进入该房间可以看到该主播的远端流。

事实是: ① 当pc端主播创建一个房间后,本地流ok, √ ② 用户进入房间后,在pc中,用户的远端流ok,本地流也ok √ ③ 在用户的小程序中(也是官方示例demo),本地流ok,看不到pc端主播的远端流、×

在看你们的文档中,https://docportal.shengwang.cn/cn/All/API%20Reference/web_ng/interfaces/iagorartcclient.html#publish和https://docportal.shengwang.cn/cn/All/API%20Reference/web_ng/interfaces/iagorartcclient.html#setclientrole我注意到

通信场景(mode 设为 "rtc")无法使用本方法,默认所有用户都是 "host" 角色。

setClientRole(role: ClientRole, options?: ClientRoleOptions): Promise

用户角色 (role) 确定用户在 SDK 层的权限,包含是否可以发送流、是否可以接收流、是否可以推流到 CDN 等。用户角色有 "host"(主播)和 "audience"(观众)。主播既可发布轨道,也可订阅轨道;观众不能进行 publish 操作。直播场景中的用户角色默认为观众。如需发布音视频,必须先调用本方法切换角色为主播。

然后在代码中已经设置了mode为rtc模式,如下:

client = AgoraRTC.createClient({
      mode: "rtc",
      codec: getCodec()
});

那么按理来说,pc端中进入或创建一个房间,小程序端进入同样的房间后,小程序端用户应该可以看到pc端的视频。还是说我哪里理解错了?

谢谢你们的解答

QinZhen001 commented 1 year ago

你好, 小程序和 Web 互通时,可能出现 Web 端可以看到小程序的视频,但小程序看不到 Web 端的视频。该问题可能是由于编解码格式不被支持导致的。 Web 与小程序互通时,Web 端只支持 H264 模式的编码 client = AgoraRtc.createClient({mode: "live", codec: "h264"})

https://docportal.shengwang.cn/cn/voice-call-4.x/faq/wechat

在basicVideoCall demo 中可以在ADVANCED SETTINGS 中下拉先改变codec为h264,在点击join加入频道,这样纸web 和 小程序就能正常互通了。

huangcs427 commented 1 year ago

Web 与小程序互通时,Web 端只支持 H264 模式的编码 client = AgoraRtc.createClient({mode: "live", codec: "h264"})

谢谢,已解决.

建议这里 https://docportal.shengwang.cn/cn/All/API%20Reference/web_ng/interfaces/clientconfig.html 注明下哦