iOS端切换角色为AgoraClientRoleBroadcaster,iOS端可以看到画面,Web端看不见

iOS端观众切换角色为AgoraClientRoleBroadcaster,主播端使用iOS 可以看到画面,
使用- (void)rtcEngine:(AgoraRtcEngineKit *)engine didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed 方法监听,

web端开播时看不到画面,

请问web端主播怎么监听到ios端观众切换角色为AgoraClientRoleBroadcaster,获取到其画面

Web 端会收到回调的,你可以通过这个回调进行监听,然后 subscribe stream:

另外请确认,Web 端的 mode 是什么?需要和 native 端统一,设为 live。

现在ios观众切换为主播后,web端这个回调不走,使用两部iOS设备调试正常

self.clientRole = AgoraClientRoleAudience;

self.videoSessions = [[NSMutableArray alloc] init];

//初始化
self.rtcEngine = [AgoraRtcEngineKit sharedEngineWithAppId:@"" delegate:self];

[self.rtcEngine enableWebSdkInteroperability:YES];
//设置频道场景为直播
[self.rtcEngine setChannelProfile:AgoraChannelProfileLiveBroadcasting];
//设置角色
[self.rtcEngine setClientRole:self.clientRole];
//启用视频模块
[self.rtcEngine enableVideo];
//使用该方法设置单流(默认)或者双流模式。
[self.rtcEngine enableDualStreamMode:YES];

AgoraVideoEncoderConfiguration *configuration = [[AgoraVideoEncoderConfiguration alloc] initWithSize:AgoraVideoDimension640x480
                                               frameRate:AgoraVideoFrameRateFps24
                                                 bitrate:AgoraVideoBitrateStandard
                                         orientationMode:AgoraVideoOutputOrientationModeAdaptative];
[self.rtcEngine setVideoEncoderConfiguration:configuration];

if (self.isBroadcaster) {
    [self.rtcEngine startPreview];
}
[self addLocalSession];

Web 端这么设置一下哈:

  // javascript
  // Web 端在创建客户端时,选择正确的 mode 和 codec 参数
  var client = AgoraRTC.createClient({ mode: 'live', codec: 'h264' });

另外问下,Web 端看不到 iOS 端,那么 Web 端能听到 iOS 端吗?以及 iOS 端可以听到和看到 Web 端吗?

iOS端目前没做开播功能,现在是web端开播,ios端加入频道看直播,能切换角色;
ios端看web端直播正常。
两部iOS设备:我用官方demo开播,在我自己项目加入频道,能正常看到画面,加入频道后能看到直播,切换角色后,demo也能看到画面。
就是web端开播,ios端加入频道后切换角色,web端added方法不走

web端这样设置的

提供一下 Web 端的浏览器日志文件吧,我们来看下。

ios端进入频道web端没有日志,这个问题出在哪

01

cocoapods集成方式只能集成静态库,这个会影响吗,对比了下demo里的SDK,AgoraRtcKit。framework为啥少了几个头文件,AgoraRtcCryptoLoader.framework,libcrypto.a文件也没有,

LiveStudentViewController.m.zip (3.3 KB)

请看下代码部分

根据你的描述,大概率是你 web 端的问题,打开浏览器控制台,给一下web的日志


web端开始直播的日志

能给个完整的文件版的吗
Chrome 浏览器取日志:打开控制台 -> 选择 Console -> 右键选择 Save as … -> 将 Console log 保存在指定的目录下。

192.168.27.186-1587109228139.log.zip (2.1 KB)

有两个问题:
1、从后台数据来看,Web 端用的是 string uid,但是 iOS 用的是 int uid,uid 类型不一致可能会导致未知问题,建议 web 端也修改为 int 型 uid。
2、从日志来看,Web 端只添加了 stream-published 一个监听回调,那当然是不会触发 stream-added 等回调的

建议参考这个 web html demo 的集成逻辑,进行修改:
http://download.agora.io/sdk/release/Agora_Web_SDK_v3_0_2_FULL.zip?_ga=2.245343169.576853421.1586745818-1583961819.1580439641

web端添加的有 stream-added回调,ios代码有问题吗

iOS 代码看起来应该没啥问题,请按照上述步骤进行排查。

或者你用我们的 web 在线 demo,加入同一个频道看下能否互通:
https://webdemo.agora.io/agora-web-showcase/examples/Agora-Web-Tutorial-1to1-Web/

确定是这个问题,调试了一下,通了,这是不是个bug啊,其他用户集成的时候没有遇到这个问题吗,现在web端改的比较多,因为牵扯到很多用户信息