自從接手音視頻聊天開發(fā)的任務(wù),深感壓力,畢竟以前沒接觸過,幸好服務(wù)端的信令服務(wù)器有一個(gè)后端大神幫我搞,不用我太費(fèi)力,主要搞定Android端即可.
google提供的demo只能說相當(dāng)簡(jiǎn)陋,只能實(shí)現(xiàn)單人視頻,剛開始不懂,用的是libjingle的13886版本(目前已經(jīng)更新到15000+版本,跟13886版本api有部分差異 新版本隱藏的很深, google了一段才發(fā)現(xiàn)),因?yàn)榛拘枨笠呀?jīng)快完成了,就暫時(shí)不考慮更換版本,后期可能會(huì)自己編譯源碼實(shí)現(xiàn)對(duì)其c++層的修改.
目前實(shí)現(xiàn)的功能:單人視頻.多人視頻(只測(cè)試到8個(gè) ,沒有足夠手機(jī),人越多月容易斷線,這是接下去要解決的問題).
先說一個(gè)巨坑,開始在maven上找到的最新版本只更新到11139,于是就用了它就開始開發(fā),這個(gè)版本有個(gè)Bug當(dāng)多人視頻的時(shí)候誰退出誰就app崩潰,報(bào)so庫(kù)異常 mediastream 釋放 錯(cuò)誤 ,而單人的不會(huì),查遍了google 發(fā)現(xiàn)在新版本修復(fù)了這個(gè)問題,然而已經(jīng)開發(fā)了很多功能(點(diǎn)擊切換屏幕,小屏幕隨手指變換位置等),實(shí)在懶得換,這個(gè)問題一直困擾了我有1個(gè)星期,經(jīng)過n次測(cè)試終于解決,深夜來吐個(gè)槽,紀(jì)念下這幾個(gè)日夜:
在webrtcClient類中需要這樣寫才不會(huì)奔潰以及后續(xù)再視頻不會(huì)出問題:
/**
* 銷毀方法
*/
public void onDestroy() {
factory.stopAecDump();
for (Peer peer : peers.values()) {
peer.pc.close();
}
videoSource.stop();
client.off();//您需要打開,然后斷開,然后將其關(guān)閉。
client.disconnect();
client.close();
}
以后碰到坑再繼續(xù)分享 解決方法.