Questa guida fornisce istruzioni su come risolvere gli errori comuni dell'API Google Meet Media.
Risolvere i problemi relativi ai codici di errore
Ecco alcuni suggerimenti per risolvere i problemi relativi ai codici di errore restituiti dall'endpoint
connectActiveConference
:
Codici di errore | |
---|---|
NO_ACTIVE_CONFERENCE |
Verifica che il client dell'API Meet Media tenti di connettersi solo dopo che l'utente autenticato è già presente in una conferenza nello spazio di riunione. Se stai eseguendo un sondaggio per l'inizio della conferenza, utilizza Eventi di inizio conferenza. |
INVALID_OFFER |
Leggi i requisiti dell'offerta per verificare la presenza di dettagli mancanti, ad esempio i canali richiesti per l'apertura dei dati. Puoi anche confrontare la stringa dell'offerta della tua app con l'offerta di esempio e analizzare eventuali differenze. |
INCOMPATIBLE_DEVICE |
Uno o più dispositivi nella conferenza non sono compatibili con i client dell'API Meet Media. La tua app non potrà partecipare, quindi potresti comunicarlo agli utenti finali. I motivi per cui i dispositivi sono incompatibili includono il caso in cui l'account associato al dispositivo è considerato minorenne. Per saperne di più, consulta i requisiti per gli utenti finali. |
UNSUPPORTED_PLATFORM_PRESENT |
Uno o più dispositivi nella conferenza non sono compatibili con i client dell'API Meet Media. La tua app non potrà partecipare, quindi potresti comunicarlo agli utenti finali. I motivi per cui una piattaforma non è supportata includono app mobile che non soddisfano le versioni minime delle app mobile e l'accesso da piattaforme non supportate. Per saperne di più, consulta i requisiti per gli utenti finali. |
CONNECTIONS_EXHAUSTED |
Solo un client dell'API Meet Media può connettersi a una conferenza alla volta. Se l'app va in crash, potresti visualizzare questo errore se tenta di riconnettersi. In questo caso, attendi circa 30 secondi prima che Meet scada la connessione precedente. Dopodiché riprova l'azione. |
CONSENTER_ABSENT |
Non è presente un utente che abbia dato il consenso nella riunione. Per le riunioni di proprietà dei consumatori, assicurati che l'iniziatore sia presente alla riunione. Per le riunioni dei proprietari dello spazio di lavoro, deve esserci almeno un membro dell'organizzazione che sia il proprietario della riunione. Per ulteriori informazioni, consulta i requisiti per il consenso. |
DISABLED_BY_ADMIN |
L'amministratore ha disattivato l'API Meet Media per la sua organizzazione. In questo caso, non è possibile modificare l'impostazione durante la durata di una riunione. Per maggiori informazioni, vedi la figura 3 in Ciclo di vita dell'API Meet Media. |
DISABLED_BY_HOST_CONROL |
L'organizzatore ha disattivato l'API Meet Media per la riunione. La tua app non potrà partecipare, quindi potresti comunicarlo agli utenti finali. Per maggiori informazioni, vedi la Figura 5 in Ciclo di vita dell'API Meet Media. |
DISABLED_DUE_TO_WATERMARKING |
Quando la filigrana è abilitata, l'API Meet Media non è consentita nella riunione. Potresti comunicarlo ai tuoi utenti finali. Per maggiori informazioni, vedi la figura 2 in Ciclo di vita dell'API Meet Media. |
DISABLED_DUE_TO_ENCRYPTION |
Quando la crittografia è attivata, l'API Meet Media non è consentita nella riunione. Non può essere modificata durante una chiamata di Meet. Potresti comunicarlo ai tuoi utenti finali. Per maggiori informazioni, vedi la figura 2 in Ciclo di vita dell'API Meet Media. |
Piano unificato
Se i canali di dati non si aprono mai e non ricevi mai audio o video, verifica che venga utilizzato solo Unified Plan durante la configurazione della connessione peer locale.
Errore nell'ordine della descrizione dei contenuti multimediali
Quando crei una connessione peer-to-peer con un'offerta Session Description Protocol (SDP), potresti visualizzare l'errore:
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.
Ciò significa che le righe di descrizione dei contenuti multimediali nella risposta SDP non corrispondono alle descrizioni dei contenuti multimediali nell'offerta SDP:
Offerta SDP | Risposta SDP |
---|---|
✅ 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 |
Per correggere questo errore, assicurati che i tipi di media simili siano configurati correttamente e raggruppati quando imposti l'oggetto di connessione peer. Le descrizioni dei contenuti multimediali interlacciati non sono supportate.
Il seguente esempio di codice mostra come abbinare correttamente le descrizioni dei contenuti multimediali:
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'});
Errore dell'attributo del ruolo DTLS
Quando imposti l'attributo del ruolo DTLS, potresti visualizzare l'errore:
All DTLS roles must be one of [ACTIVE, ACTPASS].
Questo errore si verifica quando l'attributo a=setup:< >
non è impostato correttamente per tutte
le descrizioni dei contenuti multimediali nell'offerta SDP.
Per correggere questo errore, assicurati che ogni descrizione dei contenuti multimediali nell'offerta SDP abbia uno dei seguenti attributi obbligatori:
a=setup:actpass
a=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
. . .
Risolvere i problemi relativi all'audio
Le sezioni seguenti possono aiutarti a risolvere i problemi audio nella tua app.
Controllare i log
Se utilizzi il client web in un browser Chrome:
- Apri una nuova scheda e inserisci nella barra degli indirizzi:
chrome://webrtc-internals
. - Vai alla sezione
Stats graph for inbound-rtp
. - Esamina ogni grafico audio per verificare se i pacchetti vengono ricevuti.
Se utilizzi il client di riferimento C++, controlla se
OnAudioFrame
viene mai chiamato.
Verifica gli ambiti OAuth
L'audio viene trasmesso solo se l'ambito appropriato viene fornito con la richiesta di connessione iniziale. Per risolvere l'errore, assicurati di fornire gli ambiti OAuth 2.0 corretti. Per saperne di più, consulta gli ambiti dell'API Meet Media.
Verifica che la conferenza sia configurata correttamente
Quando il client si connette ai server di Google Meet, non viene ammesso automaticamente alla conferenza. Assicurati di aver ricevuto un aggiornamento della risorsa di controllo della sessione sul canale di dati di controllo della sessione con uno stato di
STATE_JOINED
.{"sessionStatus":{"connectionState":"STATE_JOINED"}}
Verifica che ci siano altri partecipanti alla conferenza i cui stream audio non sono disattivati.
Verifica il segnale audio
Meet fornisce solo audio se lo indichi nell'offerta SDP. Nell'offerta devono esistere tre descrizioni di contenuti audio di sola ricezione.
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
. . .
Se i server Meet ricevono un'offerta valida, rispondono con una risposta SDP con tre descrizioni di media audio di sola trasmissione.
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
. . .
Controllare l'implementazione dell'osservatore
Assicurati di creare copie dei dati audio se sposti l'elaborazione dei dati in un
thread diverso.
AudioFrame.pcm16
è effettivamente un riferimento ai dati sottostanti, quindi il tentativo di accedervi dopo
OnAudioFrame
comporta un comportamento indefinito, ad esempio un errore di segmentazione.
Risolvere i problemi con i video
Le sezioni seguenti possono aiutarti a risolvere i problemi relativi ai video nella tua app.
Controllare i log
Se utilizzi il client web in un browser Chrome:
- Apri una nuova scheda e inserisci nella barra degli indirizzi:
chrome://webrtc-internals
. - Vai alla sezione
Stats graph for inbound-rtp
. - Esamina il grafico di ogni video per verificare se i pacchetti vengono ricevuti.
Se utilizzi il client di riferimento C++, controlla se
OnVideoFrame
viene mai chiamato.
Verifica gli ambiti OAuth
Il video viene trasmesso solo se l'ambito appropriato viene fornito con la richiesta di connessione iniziale. Per risolvere l'errore, assicurati di fornire gli ambiti OAuth 2.0 corretti. Per saperne di più, consulta gli ambiti dell'API Meet Media.
Verifica che la conferenza sia configurata correttamente
Quando il client si connette ai server Meet, non viene ammesso automaticamente alla conferenza. Assicurati di aver ricevuto un aggiornamento della risorsa di controllo della sessione sul canale di dati di controllo della sessione con uno stato di
STATE_JOINED
.{"sessionStatus":{"connectionState":"STATE_JOINED"}}
Verifica che ci siano altri partecipanti alla conferenza i cui stream video non sono disattivati.
Verifica il segnale per il video
Meet fornisce video solo se segnalati nell'offerta SDP. Nell'offerta devono esistere fino a tre descrizioni di contenuti video di sola ricezione.
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
. . .
Se Meet riceve un'offerta valida, risponde con una risposta SDP
con n
descrizioni dei media video di sola trasmissione, dove n
è il numero di descrizioni dei media video nell'offerta SDP.
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
. . .
Risolvere i problemi relativi alla riproduzione dei video
- Verifica che
m=video …
esista nell'offerta SDP inviata ai server di Meet. - Controlla che
a=recvonly
sia un attributo in ogni rigam=video
. - Verifica che nel SDP answer esista un numero uguale di righe
m=video
. - Verifica che
a=sendonly
oa=sendrecv
siano attributi in ogni rigam=video
nella risposta SDP. - Verifica che un
VideoAssignmentRequest
sia stato inviato e ricevuto dai server di Meet. L'esito positivo o negativo deve essere comunicato al client sullo stesso canale di dati.
Risolvere i problemi relativi a un numero di stream video inferiore al previsto
- Verifica che l'offerta SDP contenga il numero corretto di righe
m=video …
. - Assicurati che tutte le descrizioni
m=video
nella risposta SDP contengano un attributoa=sendonly
oa=sendrecv
. Le righe contrassegnate cona=recvonly
nella risposta riducono di altrettanto la quantità di stream inviati al client.
Controllare l'implementazione dell'osservatore
Assicurati di creare copie dei dati video se sposti l'elaborazione dei dati in un
thread diverso.
VideoFrame.frame
è effettivamente un riferimento ai dati sottostanti, quindi il tentativo di accedervi dopo
OnVideoFrame
comporterà un comportamento indefinito, ad esempio un errore di segmentazione.