2014-09-16 5 views
1

Старая версия Ios OpenTok Framework имели следующий делегата метод для обнаружения размерности или фрейма изменений абонентского потока.Каков новый способ обнаружения изменения размеров потока?

- (void)stream:(OTStream*)stream didChangeVideoDimensions:(CGSize)dimensions; 

новая версия рамок не имеет такой же метод.

Что такое новый способ обнаружения изменения размеров абонентского потока?

Или есть способ прошивки, в котором я могу прикрепить слушателя с размерами видеопотока?

+0

Пожалуйста, добавьте ссылку на рамочном сайте OpenTok. – trojanfoe

+0

https://tokbox.com/opentok/libraries/client/ios/ –

ответ

2

Свойство объекта OTStream имеет значение Key-Value Coding, поэтому вы можете использовать Key Value Observing to receive a notification при изменении значения.

Вот пример (не запускать это сам):

(внутри реализации OTSessionDelegate, OTSubscriberDelegate)

- (void)session:(OTSession *)session streamCreated:(OTStream *)stream 
{ 
    // Assuming there is only one subscriber and its a property of self 
    self.subscriber = [[OTSubscriber alloc] initWithStream:stream delegate:self]; 
    OTError *subscribeError; 
    [session subscribe:self.subscriber error:&subscribeError]; 
    // TODO: check error 
    // TODO: Add self.subscriber.view to self.view 
} 

- (void)session:(OTSession *)session streamDestroyed:(OTStream *)stream 
{ 
    if ([stream.streamId isEqualToString:self.subscriber.stream.streamId]) { 
     OTError *unsubscribeError; 
     [session unsubscribe:self.subscriber error:unsubscribeError]; 
     // TODO: check error 
     // Unregister for updates to video dimensions 
     [self.subscriber.stream removeObserver:self forKeyPath:@"videoDimensions"]; 
     // TODO: remove self.subscriber.view from self.view 
    } 
} 

- (void)subscriberVideoDataReceived:(OTSubscriber *)subscriber 
{ 
    // Read initial video dimensions 
    CGSize videoDimensions = subscriber.stream.videoDimensions; 
    // Register for updates to video dimensions 
    [subscriber.stream addObserver:self 
         forKeyPath:@"videoDimensions" 
          options:(NSKeyValueObservingOptionNew | 
             NSKeyValueObservingOptionOld) 
          context:NULL]; 
} 

- (void)observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context { 

    if ([keyPath isEqual:@"videoDimensions"]) { 
     // Read new value for video dimensions 
     CGSize newVideoDimensions = [change objectForKey:NSKeyValueChangeNewKey]; 
    } 
} 
Смежные вопросы