In dieser Anleitung erfahren Sie, wie Sie häufige Fehler bei der Google Meet Media API beheben.
Fehlercodes beheben
Hier finden Sie Tipps zur Fehlerbehebung bei Fehlercodes, die vom
connectActiveConference
Endpunkt zurückgegeben werden:
| Fehlercodes | |
|---|---|
NO_ACTIVE_CONFERENCE |
Prüfen Sie, ob der Meet Media API-Client erst dann versucht, eine Verbindung herzustellen, wenn der authentifizierte Nutzer bereits in einer Videokonferenz im Konferenzraum anwesend ist. Wenn Sie nach dem Start der Videokonferenz suchen, verwenden Sie stattdessen Ereignisse zum Start der Videokonferenz. |
INVALID_OFFER |
Lesen Sie die Angebotsanforderungen durch und prüfen Sie, ob Details fehlen, z. B. ob die erforderlichen Datenkanäle geöffnet wurden. Sie können auch die Angebotsstring Ihrer App mit dem Beispielangebot vergleichen und nach Unterschieden suchen. |
INCOMPATIBLE_DEVICE |
Ein oder mehrere Geräte in der Videokonferenz sind nicht mit Meet Media API-Clients kompatibel. Ihre App kann nicht teilnehmen. Informieren Sie Ihre Endnutzer darüber. Ein Grund für inkompatible Geräte kann sein, dass das mit dem Gerät verknüpfte Konto als minderjährig gilt. Weitere Informationen finden Sie unter Anforderungen an Endnutzer. |
UNSUPPORTED_PLATFORM_PRESENT |
Ein oder mehrere Geräte in der Videokonferenz sind nicht mit Meet Media API-Clients kompatibel. Ihre App kann nicht teilnehmen. Informieren Sie Ihre Endnutzer darüber. Gründe für eine nicht unterstützte Plattform sind z. B. mobile Apps, die die Mindestversionen für mobile Apps nicht erfüllen, und die Teilnahme von nicht unterstützten Plattformen. Weitere Informationen finden Sie unter Anforderungen an Endnutzer. |
CONNECTIONS_EXHAUSTED |
Es kann jeweils nur ein Meet Media API-Client mit einer Videokonferenz verbunden werden. Wenn Ihre App abstürzt, wird dieser Fehler möglicherweise angezeigt, wenn sie versucht, die Verbindung wiederherzustellen. Warten Sie in diesem Fall etwa 30 Sekunden, bis die vorherige Verbindung von Meet getrennt wird. Versuchen Sie es dann noch einmal. |
CONSENTER_ABSENT |
In der Besprechung ist kein berechtigter Zustimmender vorhanden. Bei Videokonferenzen, die von Verbrauchern erstellt wurden , muss der Initiator an der Videokonferenz teilnehmen. Bei Besprechungen, die von Workspace-Inhabern erstellt wurden, muss mindestens ein Mitglied dieser Organisation Inhaber der Besprechung sein. Weitere Informationen finden Sie unter Anforderungen an Zustimmende. |
DISABLED_BY_ADMIN |
Der Administrator hat die Meet Media API für seine Organisation deaktiviert. Wenn dieser Fehler auftritt, kann er während der Dauer einer Besprechung nicht behoben werden. Weitere Informationen finden Sie unter Abbildung 3 im Lebenszyklus der Meet Media API. |
DISABLED_BY_HOST_CONTROL |
Der Organisator hat die Meet Media API für die Videokonferenz deaktiviert. Ihre App kann nicht teilnehmen. Informieren Sie Ihre Endnutzer darüber. Weitere Informationen finden Sie unter Abbildung 5 im Lebenszyklus der Meet Media API. |
DISABLED_DUE_TO_WATERMARKING |
Wenn Wasserzeichen aktiviert sind, ist die Meet Media API in der Videokonferenz nicht zulässig. Informieren Sie Ihre Endnutzer darüber. Weitere Informationen finden Sie unter Abbildung 2 im Lebenszyklus der Meet Media API. |
DISABLED_DUE_TO_ENCRYPTION |
Wenn die Verschlüsselung aktiviert ist, ist die Meet Media API in der Videokonferenz nicht zulässig. Dies kann während eines Meet-Anrufs nicht geändert werden. Informieren Sie Ihre Endnutzer darüber. Weitere Informationen finden Sie unter Abbildung 2 im Lebenszyklus der Meet Media API. |
Einheitlicher Plan
Wenn sich Datenkanäle nie öffnen und Sie nie Audio oder Video empfangen, prüfen Sie, ob bei der Konfiguration der lokalen Peer-Verbindung nur Einheitlicher Plan verwendet wird.
Fehler bei der Reihenfolge der Medienbeschreibung
Wenn Sie eine Peer-to-Peer-Verbindung mit einem Session Description Protocol (SDP) Angebot erstellen, wird möglicherweise der folgende Fehler angezeigt:
Failed to execute 'setRemoteDescription' on 'RTCPeerConnection':
Failed to set remote answer sdp:
The order of m-lines in answer doesn't match order in offer. Rejecting answer.
Das bedeutet, dass die Zeilen der Medienbeschreibung in der SDP-Antwort nicht mit den Medienbeschreibungen im SDP-Angebot übereinstimmen:
| SDP-Angebot | SDP-Antwort |
|---|---|
✅ m=audio 9 UDP/TLS/RTP/SAVPF 111 |
✅ m=audio 9 UDP/TLS/RTP/SAVPF 111 |
❌ m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 |
❌ m=audio 9 UDP/TLS/RTP/SAVPF 111 |
✅ m=audio 9 UDP/TLS/RTP/SAVPF 111 |
✅ m=audio 9 UDP/TLS/RTP/SAVPF 111 |
❌ m=audio 9 UDP/TLS/RTP/SAVPF 111 |
❌ m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 |
Um diesen Fehler zu beheben, müssen ähnliche Medientypen korrekt konfiguriert und gruppiert werden, wenn Sie das Peer-Verbindungsobjekt festlegen. Verschachtelte Medienbeschreibungen werden nicht unterstützt.
Das folgende Codebeispiel zeigt, wie Sie die Medienbeschreibungen richtig zuordnen:
C++
rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection;
// Signal the entire video at once.
for (uint32_t i = 0; i < configurations.receiving_video_stream_count; ++i) {
webrtc::RtpTransceiverInit video_init;
video_init.direction = webrtc::RtpTransceiverDirection::kRecvOnly;
video_init.stream_ids = {absl::StrCat("video_stream_", i)};
webrtc::RTCErrorOr<rtc::scoped_refptr<webrtc::RtpTransceiverInterface>>
video_result = peer_connection->AddTransceiver(
cricket::MediaType::MEDIA_TYPE_VIDEO, video_init);
// . . .
}
JavaScript
pc = new RTCPeerConnection();
// Signal the entire video at once.
pc.addTransceiver(video, {'direction':'recvonly'});
pc.addTransceiver(video, {'direction':'recvonly'});
pc.addTransceiver(video, {'direction':'recvonly'});
Fehler beim DTLS-Rollenattribut
Wenn Sie das DTLS-Rollenattribut festlegen, wird möglicherweise der folgende Fehler angezeigt:
All DTLS roles must be one of [ACTIVE, ACTPASS].
Dieser Fehler tritt auf, wenn das Attribut a=setup:< > nicht für alle
Medienbeschreibungen im SDP-Angebot richtig festgelegt ist.
Um diesen Fehler zu beheben, muss jede Medienbeschreibung im SDP-Angebot eines der folgenden erforderlichen Attribute haben:
a=setup:actpassa=setup:active
v=0
o=- 4743178474630771513 3 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS
. . .
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101
. . .
a=setup:actpass
. . .
m=audio 39807 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
. . .
a=setup:actpass
. . .
Probleme mit dem Ton beheben
Die folgenden Abschnitte können Ihnen helfen, Audioprobleme in Ihrer App zu beheben.
Log prüfen
Wenn Sie den Webclient in einem Chrome-Browser verwenden:
- Öffnen Sie einen neuen Tab und geben Sie in die Adressleiste Folgendes ein:
chrome://webrtc-internals. - Gehen Sie zum Abschnitt
Stats graph for inbound-rtp. - Prüfen Sie in jeder Audiografik, ob Pakete empfangen werden.
Wenn Sie den C++-Referenzclient verwenden, prüfen Sie, ob
OnAudioFrame
jemals aufgerufen wird.
OAuth-Bereiche überprüfen
Audio wird nur übertragen, wenn der richtige Bereich mit der ersten Verbindungsanfrage angegeben wird. Um den Fehler zu beheben, müssen Sie die richtigen OAuth 2.0-Bereiche angeben. Weitere Informationen finden Sie unter Meet Media API Bereiche.
Prüfen, ob die Videokonferenz richtig eingerichtet ist
Wenn sich der Client mit den Google Meet-Servern verbindet, wird er nicht automatisch zur Videokonferenz zugelassen. Prüfen Sie, ob Sie über den Datenkanal für die Sitzungssteuerung eine Aktualisierung der Sitzungssteuerungsressource mit dem Status
STATE_JOINEDerhalten haben.{"sessionStatus":{"connectionState":"STATE_JOINED"}}Prüfen Sie, ob es andere Teilnehmer der Videokonferenz gibt, deren Audio streams nicht stummgeschaltet sind.
Audio signalisieren
Meet stellt nur Audio bereit, wenn Sie dies im SDP Angebot signalisieren. Das Angebot muss drei, Audio-Medienbeschreibungen enthalten, die nur zum Empfangen verwendet werden in the offer.
m=audio 39807 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
. . .
a=mid:0
. . .
a=recvonly
. . .
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
. . .
m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
. . .
a=mid:1
. . .
a=recvonly
. . .
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
. . .
m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
. . .
a=mid:2
. . .
a=recvonly
. . .
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
. . .
Wenn die Meet-Server ein gültiges Angebot erhalten, antworten sie mit einer SDP-Antwort mit drei Audio-Medienbeschreibungen, die nur zum Senden verwendet werden.
m=audio 19306 UDP/TLS/RTP/SAVPF 111
. . .
a=mid:0
. . .
a=sendonly
a=msid:virtual-6666 virtual-6666
. . .
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
. . .
m=audio 9 UDP/TLS/RTP/SAVPF 111
. . .
a=mid:1
. . .
a=sendonly
a=msid:virtual-6667 virtual-6667
. . .
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
. . .
m=audio 9 UDP/TLS/RTP/SAVPF 111
. . .
a=mid:2
. . .
a=sendonly
a=msid:virtual-6668 virtual-6668
. . .
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
. . .
Observer-Implementierung prüfen
Erstellen Sie Kopien der Audiodaten, wenn Sie die Datenverarbeitung in einen anderen Thread verschieben.
AudioFrame.pcm16
ist im Grunde ein Verweis auf zugrunde liegende Daten. Wenn Sie nach
OnAudioFrame
darauf zugreifen, führt dies zu undefiniertem Verhalten, z. B. zu einem Segmentierungsfehler.
Probleme bei Videos beheben
Die folgenden Abschnitte können Ihnen helfen, Videoprobleme in Ihrer App zu beheben.
Log prüfen
Wenn Sie den Webclient in einem Chrome-Browser verwenden:
- Öffnen Sie einen neuen Tab und geben Sie in die Adressleiste Folgendes ein:
chrome://webrtc-internals. - Gehen Sie zum Abschnitt
Stats graph for inbound-rtp. - Prüfen Sie in jeder Videografik, ob Pakete empfangen werden.
Wenn Sie den C++-Referenzclient verwenden, prüfen Sie, ob
OnVideoFrame
jemals aufgerufen wird.
OAuth-Bereiche überprüfen
Video wird nur übertragen, wenn der richtige Bereich mit der ersten Verbindungsanfrage angegeben wird. Um den Fehler zu beheben, müssen Sie die richtigen OAuth 2.0-Bereiche angeben. Weitere Informationen finden Sie unter Meet Media API Bereiche.
Prüfen, ob die Videokonferenz richtig eingerichtet ist
Wenn sich der Client mit den Meet-Servern verbindet, wird er nicht automatisch zur Videokonferenz zugelassen. Prüfen Sie, ob Sie über den Datenkanal für die Sitzungssteuerung eine Aktualisierung der Sitzungssteuerungsressource mit dem Status
STATE_JOINEDerhalten haben.{"sessionStatus":{"connectionState":"STATE_JOINED"}}Prüfen Sie, ob es andere Konferenz teilnehmer gibt, deren Video streams nicht stummgeschaltet sind.
Video signalisieren
Meet stellt nur Video bereit, wenn es im SDP Angebot signalisiert wird. Das Angebot muss bis zu drei Video-Medienbeschreibungen enthalten, die nur zum Empfangen verwendet werden.
v=0
o=- 4743178474630771513 3 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS
. . .
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 35 36 37 38 102 103 104 105 106 107 108 109 127 125 39 40 41 42 43 44 45 46 47 48 112 113 114 115 116 117 118 49
. . .
a=setup:actpass
a=mid:1
. . .
a=recvonly
. . .
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
. . .
Wenn Meet ein gültiges Angebot erhält, antwortet es mit einer SDP-Antwort mit n Video-Medienbeschreibungen, die nur zum Senden verwendet werden. n ist die Anzahl der Video-Medienbeschreibungen im SDP-Angebot.
v=0
o=- 0 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS virtual-video-7777/7777
a=ice-lite
. . .
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99
. . .
a=setup:passive
a=mid:1
. . .
a=msid:virtual-video-7777/7777 virtual-video-7777/7777
a=rtcp-mux
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtcp-fb:96 goog-remb
. . .
Probleme mit fehlendem Video beheben
- Prüfen Sie, ob
m=video …im SDP-Angebot vorhanden ist, das an die Meet-Server gesendet wurde. - Prüfen Sie, ob
a=recvonlyein Attribut unter jederm=video-Zeile ist. - Prüfen Sie, ob in der SDP-Antwort die gleiche Anzahl von
m=video-Zeilen vorhanden ist. - Prüfen Sie, ob
a=sendonlyodera=sendrecvAttribute unter jederm=video-Zeile in der SDP-Antwort sind. - Prüfen Sie, ob eine erfolgreiche
VideoAssignmentRequestan die Meet-Server gesendet und von ihnen empfangen wurde. Der Erfolg oder Misserfolg sollte über denselben Datenkanal an den Client zurückgemeldet werden.
Weniger Videostreams als erwartet
- Prüfen Sie, ob das SDP-Angebot die richtige Anzahl von
m=video …-Zeilen enthält. - Alle
m=video-Beschreibungen in der SDP-Antwort müssen entweder eina=sendonly- oder eina=sendrecv-Attribut enthalten. Alle Zeilen, die in der Antwort mita=recvonlygekennzeichnet sind, reduzieren die Anzahl der an den Client gesendeten Streams um diesen Wert.
Observer-Implementierung prüfen
Erstellen Sie Kopien der Videodaten, wenn Sie die Datenverarbeitung in einen anderen Thread verschieben.
VideoFrame.frame
ist im Grunde ein Verweis auf zugrunde liegende Daten. Wenn Sie nach
OnVideoFrame
darauf zugreifen, führt dies zu undefiniertem Verhalten, z. B. zu einem Segmentierungsfehler.