基於webrtc的資源釋放問題(一)


基於webrtc的資源釋放問題(一)

    ——重復釋放webrtc的相關資源

背景:

  視頻通訊大都只是作為一個功能存在於各種應用中,比如微信,qq 。既然只是應用的一部分,這樣就涉及反復的開啟和關閉視頻通信的功能的問題了,那么對於基於webrtc的通信功能來說,就涉及到了反復的獲取和釋放webrtc相關的資源的問題了,本博文的目的就是說說這個過程中會遇到的問題。

 

 

最近一段時間在做基於webrtc的android應用在釋放資源時遇到一些問題,現在記錄下來用於備忘。

官方給出的AppRTCDemo太過於簡單很多問題沒涉及到。

1、釋放peerconnection資源的問題。

  場景:A和B進行通話(視頻通話)

     現在B中終止通話

  錯誤:在B終止通話之后,A端的程序程序會意外退出。

  分析:在A和B進行通話的時候會見了相應的PeerConnection類實例,這個實例保存的有stream的引用(localstream和remote stream等等)。

     B在終止通話時就要釋放和A進行通話時建立的PeerConnection類的實例.這時候就會出現問題,A在釋放peerconnection實例的時候會把localstream給釋放掉,而localstream自己還在使用,這時候程序就會意外終止。

  解決辦法:在是放peerconnection實例的時候不要釋放本地的localstream只釋放remote stream。單獨定義事件來觸發localstream的釋放。

2、釋放整個webrtc模塊的問題。

  場景:A和B進行通話,B終止通話,B再進行視頻通話

  錯誤:B再次進行視頻通話的時候意外終止

  分析:B再次進行視頻通話的時候,由於上次退出視頻通話的時候camera資源沒有釋放,但是再次進行視屏通話的時候無法獲得camera資源。

     這里看似是沒有獲得camera資源的問題,其實是我們在使用完webrtc資源之后沒有及時釋放的問題。

  解決辦法:真確的釋放相應的資源,我的步驟如下:

      1、掛斷所有正在通信的視頻通話(hangupall())(釋放peerconnection實例)

      2、釋放localstream

      3、釋放camera資源(VideoSource.dispose() 方法)

      4、釋放PeerConnectionFactory資源

   即使是這樣在我頻繁的打開和關閉視頻通話的時候程序仍然會有一定的概率會出錯。希望各位能夠幫忙糾正我的錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM