Panduan ini memberikan petunjuk tentang cara mengatasi error Google Meet Media API umum.
Memecahkan masalah kode error
Berikut adalah tips untuk memecahkan masalah kode error yang ditampilkan oleh endpoint connectActiveConference
:
Kode error | |
---|---|
NO_ACTIVE_CONFERENCE |
Pastikan klien Meet Media API hanya mencoba terhubung setelah pengguna yang diautentikasi sudah berada di konferensi di ruang rapat. |
INVALID_OFFER |
Baca persyaratan penawaran untuk memeriksa detail yang belum tercantum, seperti membuka saluran yang diperlukan data. Anda juga dapat membandingkan string penawaran aplikasi dengan contoh penawaran dan menyelidiki perbedaan apa pun. |
INCOMPATIBLE_DEVICE |
Satu atau beberapa perangkat dalam konferensi tidak kompatibel dengan klien Meet Media API. Aplikasi Anda tidak akan dapat bergabung, jadi Anda dapat menyampaikan hal ini kepada pengguna akhir. |
CONNECTIONS_EXHAUSTED |
Hanya satu klien Meet Media API yang dapat terhubung ke konferensi dalam satu waktu. Jika aplikasi error, Anda mungkin melihat error ini jika aplikasi mencoba terhubung kembali. Dalam hal ini, tunggu sekitar 30 detik hingga Meet menghentikan koneksi sebelumnya. Kemudian, coba lagi. |
Paket terpadu
Jika saluran data tidak pernah terbuka dan Anda tidak pernah menerima audio atau video, pastikan hanya Unified Plan yang digunakan saat mengonfigurasi koneksi peer lokal.
Error urutan deskripsi media
Saat membuat koneksi peer-to-peer dengan penawaran Session Description Protocol (SDP), Anda mungkin melihat error:
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.
Artinya, baris deskripsi media dalam jawaban SDP tidak cocok dengan deskripsi media dalam penawaran SDP:
Penawaran SDP | Jawaban 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 |
Untuk memperbaiki error ini, pastikan jenis media yang serupa dikonfigurasi dengan benar dan digabungkan saat menetapkan objek koneksi peer. Deskripsi media interleaved tidak didukung.
Contoh kode berikut menunjukkan cara mencocokkan deskripsi media dengan benar:
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'});
Error atribut peran DTLS
Saat menetapkan atribut peran DTLS, Anda mungkin melihat error:
All DTLS roles must be one of [ACTIVE, ACTPASS].
Error ini terjadi jika atribut a=setup:< >
tidak ditetapkan dengan benar untuk semua
deskripsi media dalam penawaran SDP.
Untuk memperbaiki error ini, pastikan setiap deskripsi media dalam penawaran SDP memiliki salah satu atribut yang diperlukan berikut:
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
. . .
Memecahkan masalah audio
Bagian berikut dapat membantu menyelesaikan masalah audio di aplikasi Anda.
Memeriksa log
Jika Anda menggunakan klien web di browser Chrome:
- Buka tab baru dan masukkan ke kolom URL:
chrome://webrtc-internals
. - Buka bagian berlabel
Stats graph for inbound-rtp
. - Periksa setiap grafik audio untuk melihat apakah paket diterima.
Jika Anda menggunakan klien referensi C++, periksa apakah
OnAudioFrame
pernah dipanggil.
Memverifikasi cakupan OAuth
Audio hanya dikirim jika cakupan yang sesuai diberikan dengan permintaan koneksi awal. Untuk mengatasi error ini, pastikan untuk memberikan cakupan OAuth 2.0 yang benar. Untuk informasi selengkapnya, lihat Cakupan Meet Media API.
Memverifikasi bahwa konferensi disiapkan dengan benar
Saat terhubung dengan server Google Meet, klien tidak otomatis diizinkan ke konferensi. Pastikan Anda telah menerima update resource kontrol sesi melalui saluran data kontrol sesi dengan status
STATE_JOINED
.{"sessionStatus":{"connectionState":"STATE_JOINED"}}
Pastikan ada peserta konferensi lain yang streaming audionya tidak dibisukan.
Memverifikasi sinyal audio
Meet hanya menyediakan audio jika Anda memberikan sinyal ini dalam penawaran SDP. Harus ada tiga deskripsi media audio hanya terima dalam penawaran.
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
. . .
Jika penawaran yang valid diterima oleh server Meet, server akan merespons dengan jawaban SDP yang berisi tiga deskripsi media audio khusus pengiriman.
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
. . .
Memeriksa penerapan observer
Pastikan untuk membuat salinan data audio jika Anda memindahkan pemrosesan data ke
thread lain.
AudioFrame.pcm16
secara efektif merupakan referensi ke data pokok, sehingga mencoba mengaksesnya setelah
OnAudioFrame
akan menghasilkan perilaku yang tidak ditentukan, seperti error segmentasi.
Memecahkan masalah video
Bagian berikut dapat membantu menyelesaikan masalah video di aplikasi Anda.
Memeriksa log
Jika Anda menggunakan klien web di browser Chrome:
- Buka tab baru dan masukkan ke kolom URL:
chrome://webrtc-internals
. - Buka bagian berlabel
Stats graph for inbound-rtp
. - Periksa setiap grafik video untuk melihat apakah paket diterima.
Jika Anda menggunakan klien referensi C++, periksa apakah
OnVideoFrame
pernah dipanggil.
Memverifikasi cakupan OAuth
Video hanya dikirim jika cakupan yang sesuai diberikan dengan permintaan koneksi awal. Untuk mengatasi error ini, pastikan untuk memberikan cakupan OAuth 2.0 yang benar. Untuk informasi selengkapnya, lihat Cakupan Meet Media API.
Memastikan konferensi disiapkan dengan benar
Saat terhubung dengan server Meet, klien tidak otomatis diizinkan ke konferensi. Pastikan Anda telah menerima update resource kontrol sesi melalui saluran data kontrol sesi dengan status
STATE_JOINED
.{"sessionStatus":{"connectionState":"STATE_JOINED"}}
Pastikan ada peserta konferensi lain yang streaming videonya tidak dibisukan.
Memverifikasi sinyal Anda untuk video
Meet hanya menyediakan video jika diberi sinyal dalam penawaran SDP. Harus ada maksimal tiga deskripsi media video khusus terima dalam penawaran.
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
. . .
Jika menerima penawaran yang valid, Meet akan merespons dengan jawaban SDP
dengan n
deskripsi media video khusus pengiriman, dengan n
adalah jumlah deskripsi media
video dalam penawaran 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
. . .
Memecahkan masalah tidak ada video
- Pastikan
m=video …
ada dalam penawaran SDP yang dikirim ke server Meet. - Pastikan
a=recvonly
adalah atribut di setiap barism=video
. - Pastikan jumlah baris
m=video
yang sama ada dalam jawaban SDP. - Pastikan
a=sendonly
ataua=sendrecv
adalah atribut di setiap barism=video
dalam jawaban SDP. - Pastikan
VideoAssignmentRequest
yang berhasil dikirim ke dan diterima oleh server Meet. Keberhasilan atau kegagalan harus dikomunikasikan kembali ke klien melalui saluran data yang sama.
Memecahkan masalah lebih sedikit streaming video dari yang diharapkan
- Pastikan penawaran SDP berisi jumlah baris
m=video …
yang benar. - Pastikan semua deskripsi
m=video
dalam jawaban SDP berisi atributa=sendonly
ataua=sendrecv
. Setiap baris yang ditandaia=recvonly
dalam jawaban akan mengurangi jumlah streaming yang dikirim ke klien sebanyak itu.
Memeriksa penerapan observer
Pastikan untuk membuat salinan data video jika Anda memindahkan pemrosesan data ke
thread lain.
VideoFrame.frame
secara efektif merupakan referensi ke data pokok, sehingga mencoba mengaksesnya setelah
OnVideoFrame
akan menghasilkan perilaku yang tidak ditentukan, seperti error segmentasi.