2016-12-28 154 views
2

我一直在我的應用程序中使用SimpleWebRTC一段時間。這是非常簡單的設置和適用於簡單的應用程序。但是,我需要能夠禁用/啓用視頻,而不會影響我的應用中的音頻,而這正是SimpleWebRTC不足的地方。搜索一些其他StackOverflow問題顯示,這似乎被稱爲'重新談判'。WebRTC邏輯流重新協商(啓用/禁用視頻)

顯然直到最近(去年或兩年?)瀏覽器沒有公開MediaStreamTrack s(https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack),這使得重新協商變得不可能。現在這顯然是可能的,但我沒有看到任何包裝庫做這件事。實際上,大多數流行的WebRTC庫似乎都不再被維護。

有沒有人與流重新協商工作,並指出我在正確的方向,要麼實現它的圖書館,polyfill,或一些關於如何通過當前的WebRTC標準實現這一點的指導?我不介意擺脫一個圖書館,以支持準系統WebRTC,我只是不確定什麼是始終如一地結束/啓動連接的正確方式,因爲實現在瀏覽器之間似乎仍然很挑剔。

+0

可能重複的[如何在WebRTC MediaStream中添加跟蹤](http://stackoverflow.com/questions/35504214/how-to-addtrack-in-mediastream-in-webrtc) – jib

+0

此外,你有沒有嘗試過只是禁用視頻?這會導致視頻數據包停止發送,至少在Firefox中:https://jsfiddle.net/ec9ossmu/(小提琴需要Firefox,因爲Chrome目前還不支持該規範的統計數據)。 – jib

+0

@jib感謝,就小提琴而言,它與Chrome在Chrome中的解決方案具有相同的效果,視頻有效暫停,但相機保持打開狀態,使用戶產生懷疑。至於你的第一個鏈接,你是對的,這在技術上是重複的,對不起我錯過了。 Chrome的狀態已經改變了,它現在部分支持軌道,特別是'addTrack'和'removeTrack',而不是'replaceTrack',正如Phillip指出的那樣,我需要它。我可以將其標記爲重複的,但由於對WebRTC的支持不斷變化,我需要看看答案是否仍然有效,以及現在是否有更清晰的方法。 –

回答

1

特別是對於simplewebrtc有https://simplewebrtc.com/notsosimple.html#mute 它不重新協商,但將MediaStreamTrack啓用屬性設置爲false,它發送黑幀(低帶寬)。不利的一面是,如果你用這種方式使攝像機靜音,攝像燈將保持亮起。

+0

是的,我已經意識到這個解決方案,我很抱歉,我忘了提及它。它的問題與您所描述的完全相同,當用戶只打算傳輸音頻時看到照相機亮起的用戶可能會認爲我的應用正在做一些粗略的事情。 –

+1

然後問題是一些瀏覽器(Chrome)仍然沒有實現RTPSender.replaceTrack,這將允許這個沒有重新協商。 如果你想實施重新談判:祝你好運。 –

+0

我明白了,當談到WebRTC標準時,Firefox看起來確實比Chrome更出色。不幸的是,我們大多數用戶可能會使用Chrome。 –