Welche WebRTC-Einschränkungen und -Optionen sollte ich übergeben, um die Interoperabilität zwischen Firefox und Google Chrome zu gewährleisten

StackOverflow https://stackoverflow.com//questions/25052340

  •  21-12-2019
  •  | 
  •  

Frage

Ich baue eine Chat-Anwendung für ein LAN.Ich benutze WebRTC, kann aber Firefox und Google Chrome nicht zusammenarbeiten lassen.Ich kenne die genauen Parameter, die ich an RTCPeerConnection createOffer / createAnswer übergeben soll, nicht.

Ich habe die folgenden Tests gemacht mit Firefox 31 und Google Chrom 36 auf demselben Computer Fedora Linux 20

RTCPeerConnection wird wie folgt erstellt: pc = new RTCPeerConnection(null, RTC_PC_OPTIONS);

antworten / Angebote werden erstellt wie: pc.createOffer(onsuccess, onfail, CONSTRAINTS);

Meine Frage ist:welche Parameter (RTC_PC_OPTIONS und CONSTRAINTS) sollte ich bestehen, um Interoperabilität zwischen den beiden Browsern zu erreichen?

Prüfung 1

RTC_PC_OPTIONS = undefined
CONSTRAINTS = undefined

                        FFx2FFx     FFx2Chrome      Chrome2FFx      Chrome2Chrome
                        -------     ----------      ----------      -------------
dataChannel setup       ok          ok              ok              ok
dataChannel send/recv   ok          ok              ok              ok
Video stream            ok          ok              err [1]         ok

Prüfung 2

MDN recomands this value for RTC_PC_OPTIONS

RTC_PC_OPTIONS = {
    optional: [
        {DtlsSrtpKeyAgreement: true},
        {RtpDataChannels: true}
    ]
};
CONSTRAINTS = undefined

                        FFx2FFx     FFx2Chrome      Chrome2FFx      Chrome2Chrome
                        -------     ----------      ----------      -------------
dataChannel setup       ok          err [2]         err [3]         ok
dataChannel send/recv   ok          -               -               ok
Video stream            ok          -               -               err [4]
                                    ^~~~~~~~~~~~~~~~^ 
                                            ^
                   i used datachannel to do signaling for the video TRCPeerConnection,
                   that is why these were not tested

Prüfung 3

RTC_PC_OPTIONS = undefined
CONSTRAINTS = { 'mandatory': { 'OfferToReceiveAudio': true, 'OfferToReceiveVideo': true } }

                        FFx2FFx     FFx2Chrome      Chrome2FFx      Chrome2Chrome
                        -------     ----------      ----------      -------------
dataChannel setup       ok          ok              ok              err [5]
dataChannel send/recv   ok          ok              ok              -
Video stream            err [6]     ok              err [6]         -

  1. Chrome erstellt ein Angebot und sendet es an FFx, FFx empfängt ein Angebot, erstellt eine Antwort und sendet es an Chrome,

chrome erhält die Antwort.Aber onaddstream wird in Firefox nicht ausgelöst


  1. Nachdem Chrome das von FFx gesendete Angebot erhalten hat, wird ein Fehler in der Konsole protokolliert:

Failed to set remote offer sdp: Session error code: ERROR_CONTENT. Session error description: Failed to set data send codecs..


  1. Chrome sendet das Angebot, FFx sendet die Antwort,

chrome erhält diesen Fehler: Failed to parse SessionDescription. m=application 35224 RTP/SAVPF Expects at least 4 fields.

FFx erhält diesen Fehler: ICE failed, see about:webrtc for more details

In about:webrtc:

Local candidate Remote candidate ICE State Priority Nominated Selected a.b.c.d:35224/udp(host) a.b.c.d:45895/udp(host) frozen 9115005270282354000


  1. Chrome_1 erhält den Fehler: Uncaught NetworkError: Failed to execute 'send' on 'RTCDataChannel': Could not send data

chrome_2 erhält den Fehler:

Uncaught SyntaxError: Failed to execute 'addIceCandidate' on 'RTCPeerConnection': The ICE candidate could not be added.


  1. Der Anrufer sendet das Angebot, der Angerufene erhält eine Fehlermeldung:

Failed to set remote offer sdp: Session error code: ERROR_CONTENT. Session error description: Failed to set data send codecs.


  1. Wie [1] alles in Ordnung, aber onaddstream nicht ausgelöst
War es hilfreich?

Lösung

Also, ein paar Dinge:

  1. Welche MDN-Seite auch immer RTPDataChannels vorschlägt, RTPDataChannels ist sehr veraltet (lassen Sie mich die URL wissen).Sowohl Firefox als auch Chrome unterstützen jetzt spezielle Datenkanäle.Gleiches gilt für DTLSSRTPKeyAgreement, glaube ich
  2. Stellen Sie sicher, dass Sie createDataChannel() vor createOffer () aufrufen
  3. Ist es nur Video oder Video + Audio?Wir haben kürzlich einen Fehler mit reinen Videostreams behoben, wenn ich mich erinnere, dass onAddStream nicht ausgelöst wurde.Das würde erklären 1 und [6] denke ich.Sehen fehler 1035067, die in nächtlichen und Aurora (FF33) gelandet ist;Ich habe um eine Erhöhung auf Beta / 32 gebeten
  4. Das Problem "erwartet 4 Felder", wenn ich mich erinnere, war ein Fehler in Firefox - welche Versionen verwenden Sie?Wir haben einen Fehler in 30 (?), wo wir am Ende ein nicht benötigtes Leerzeichen hatten, das Chrome dazu veranlasste, es abzulehnen - sie haben gepatcht, um es zu vermeiden, und wir haben es behoben.

Probieren Sie es mit FF Beta und Nightly (http://nightly.mozilla.org/).Und wenn Sie solche Dinge melden, geben Sie bitte an, welche Browserversionen Sie verwenden!:-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top