我想在不同设备上为两个以上的用户进行直播并从 opentok 获取 api 我已经从 (https://github.com/opentok/OpenTok-iOS-Hello-World) 下载了演示应用程序,这不是 webrtc,我使用 key 、 session 和 token 运行应用程序梨对梨的残疾,
它适用于两个直播流,但是当我托盘连接第三个流时,我无法得到那个,
我发现盯着演示应用程序(在 iPad 2/3/4 上,限制是四个流。一个应用程序最多可以同时拥有四个订阅者,或者一个发布者和最多三个订阅者。)
我正在用三台 iPad 进行测试,屏幕上只有两台
那么如何在三个 iPad 上同时制作两个以上的流
Best Answer-推荐答案 strong>
您链接的项目 (OpenTok-iOS-Hello-World) 仅用于订阅一个流。作为概念验证,您只需修改一些方法并在 ViewController.m 中添加一个实例变量,就可以非常简单地在屏幕上显示两个订阅者
创建一个跟踪订阅者数量的变量:
@implementation ViewController {
OTSession* _session;
OTPublisher* _publisher;
OTSubscriber* _subscriber;
int _numSubscribers; // **NEW**
}
在初始化方法中初始化变量:
- (void)viewDidLoad
{
[super viewDidLoad];
_session = [[OTSession alloc] initWithSessionId:kSessionId
delegate:self];
_numSubscribers = 0; // **NEW**
[self doConnect];
}
确保我们没有订阅我们自己的流:
static bool subscribeToSelf = NO;
修改此 session 委托(delegate)方法中不再关心是否已有订阅者:
- (void)sessionOTSession*)mySession didReceiveStreamOTStream*)stream
{
NSLog(@"session didReceiveStream (%@)", stream.streamId);
// See the declaration of subscribeToSelf above.
if ( (subscribeToSelf && [stream.connection.connectionId isEqualToString: _session.connection.connectionId])
||
(!subscribeToSelf && ![stream.connection.connectionId isEqualToString: _session.connection.connectionId])
) {
// ** Changing if statement **
if (_numSubscribers < 2) {
_subscriber = [[OTSubscriber alloc] initWithStream:stream delegate:self];
_numSubscribers++;
}
}
}
将订阅者并排放置,占用更少的宽度:
- (void)subscriberDidConnectToStreamOTSubscriber*)subscriber
{
NSLog(@"subscriberDidConnectToStream (%@)", subscriber.stream.connection.connectionId);
// ** Calculate the frame **
CGRect subFrame = CGRectMake(0, widgetHeight, widgetWidth / 2, widgetHeight)
if (_numSubscribers == 2) subFrame = CGRectOffset(subFrame, widgetWidth / 2, 0);
[subscriber.view setFrame:subFrame];
[self.view addSubview:subscriber.view];
}
注意:此解决方案不会产生稳定的应用程序。只要您不断开中间的任何 iPad,它应该可以让您看到两个订阅者。要完成此操作,您需要将在 session:didRecieveStream: 中创建的 OTSubscribers 存储在像 NSArray 这样的集合中,处理删除正确的订阅者并减少 _numSubscribers 在 session:didDropStream: 中,并考虑您希望 updateSubscriber 方法如何工作。
关于ios - OpenTok iOS API :Stream in iPad more then two,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/16769518/
|