2014-07-16 81 views
1

我們正在嘗試使用OpenTok將Voip(無視頻)添加到我們的Android應用程序。當第三位用戶加入會話和用戶離開並重新加入會話時,我們會看到問題。內部錯誤 - WebRTC發佈者錯誤&內部錯誤 - WebRTC訂閱者錯誤

示例: 會話已創建。用戶1和用戶2加入..都可以聽到對方說話。當User3加入時,我們會得到多個錯誤(如下所示)。因此,有時一個用戶可以聽到,但不會說話,有時候一個用戶不能聽到或說話......或兩者的組合。誰得到這個錯誤似乎是隨機的,但似乎有誰得到錯誤和誰可以談話/聽到之間的相關性。


SubscriberListener的onError()

消息:內部錯誤 - 的WebRTC出版商錯誤。

errorName:PublisherWebRTCError

的errorCode:1610


SubscriberListener的onError()

消息:內部錯誤 - 的WebRTC訂戶錯誤。

errorName:SubscriberWebRTCError

錯誤碼:1600


設備: 所有的Nexus 7運行4.4.2

OpenTok的Android SDK版本:2.2

+0

此外,我們在https://github.com/opentok/opentok-android-sdk-samples測試的樣品和他們的工作在相同的設備上。 – user3846458

回答

0

有可能是什麼與您的代碼。既然你沒有發佈任何代碼,我會盡量推廣。

當第一個用戶加入時,Session.SessionListener的onStreamReceived將被調用一個流對象參數。要訂閱該流,請致電 subscriber = session.subscribe(stream..)

要訂閱多個用戶,您可能希望每次調用session.subscribe方法時都保留一個訂閱對象數組。

如果這沒有幫助,您可能會在網格p2p會話。在某些網絡條件(防火牆或路由器配置)下,webRTC將故障轉移到網狀網絡。最安全的方法是在創建會話時使用mediaRouted標誌,或者確保所有測試設備位於同一個WiFi網絡上:https://github.com/opentok/opentok-node#creating-sessions

0

我在iOS上看到了同樣的問題。下面是我們如何訂閱

- (void)session:(OTSession *)session streamCreated:(OTStream *)stream 
{ 
    NSLog(@"%s", __PRETTY_FUNCTION__); 

    if (![self.streamID isEqualToString:stream.streamId]) 
    { 
     self.tokBoxSubcriber = [[OTSubscriber alloc] initWithStream:stream delegate:self]; 
     self.tokBoxSubcriber.subscribeToAudio = YES; 
     self.tokBoxSubcriber.subscribeToVideo = NO; 

     [self.tokBoxSession subscribe:self.tokBoxSubcriber error:nil]; 
    } 
} 

下面是我們如何發佈

- (void)sessionDidConnect:(OTSession *)session 
{ 
    self.tokBoxPublisher = [[OTPublisher alloc] initWithDelegate:self name:@"publisher"]; 
    self.tokBoxPublisher.publishAudio = YES; 
    self.tokBoxPublisher.publishVideo = NO; 

    OTError *error; 
    [self.tokBoxSession publish:self.tokBoxPublisher error:&error]; 

    if (error) 
    { 
     NSLog(@"Error = %@", error); 
    } 

    [self.delegate connectedToVoIP:self]; 
} 
+0

你能解決你的問題嗎? –