2017-08-01 86 views
0

我正在開發一個視頻聊天UWP應用程序,並且我在GitHub上發現了Chatterbox這似乎是一個很好的解決方案。WebRTC C#視頻流無法啓動,直到編解碼器發生變化

現在我正在計算一個問題:有時視頻流不會啓動,我需要切換選定的視頻編解碼器。

默認情況下,有兩個工作視頻編解碼器,VP8和H264,這兩種工作都很好,但是當我重新安裝UWP I時遇到了這個問題,直到編解碼器切換後視頻纔會啓動。這個問題似乎並不取決於哪一個是默認的編解碼器,有時它會以H264作爲默認值顯示,有時VP8默認顯示。

我triyng來解決這個調試應用程序和triyng發現錯誤在哪裏,它是如何生成的,但直到現在我還沒有找到它。

是否有人已經面臨類似的問題或有一些建議給我,以解決這個惱人的問題?

+0

既然你沒有提供任何代碼,爲什麼我們只是測試了話匣子項目能夠重現您的問題? –

+0

如果你對此感興趣,你會在答案中找到詳細的解釋。 該錯誤可以通過簡單地關閉應用程序並重新打開來重現,以避免在開始視頻通話之前需要訪問設置頁面的錯誤。 – Marco

回答

0

最後我解決了這個問題,在這裏我將嘗試解釋我採用的過程,它不是很優雅,但它的工作原理。

重現bug:

爲了再現這個bug,你只需要啓動視頻通話,而不必訪問設置頁面;如果此頁面已關閉應用程序並重新啓動,則打開視頻呼叫而不導航至設置。

錯誤的解釋:

該錯誤是由設置在應用程序啓動時加載引起的,一些配置中具有默認值,例如具有signalingServerAdress和SignalingServerPort;其他配置則是由於它們依賴於硬件功能而異於或異步加載(例如視頻和音頻編解碼器)。 當UWP異步啓動時,配置沒有正確加載並且Context對象未被完全輪詢。 這個不完整的對象會導致視頻流在sdp offer發送給遠程對等時不啓動。

錯誤的解決方案(不是很優雅):

我已經解決的bug迫使應用程序顯示設置頁面,因此,所有的配置被加載,用戶必須將其保存以導航到通訊錄頁。

我修改ContactsView.xaml.cs添加布爾_isFirstNavigation = true,然後我調用ShowSettings命令diplay設置頁面。

在這裏,整個方法我修改:

private void ContactsView_DataContextChanged(FrameworkElement sender, 
DataContextChangedEventArgs args) 
     { 
      var viewModel = DataContext as ContactsViewModel; 
      if (viewModel == null) return; 
      viewModel.RingtoneElement = RingtoneElement; 



      //adding the following if block solved the bug 
      if (_isFirstNavigation) 
      { 
       viewModel.ShowSettings.Execute(null); 
       _isFirstNavigation = false; 
      } 
     } 
+0

看起來像ChatterBox項目中的錯誤。你應該在github上提交它作爲一個問題。 –

相關問題