এই নির্দেশিকাটিতে Google Meet Media API-এর সাধারণ ত্রুটিগুলি কীভাবে সমাধান করবেন সে সম্পর্কে নির্দেশাবলী দেওয়া আছে।
ত্রুটি কোডগুলির সমস্যা সমাধান করুন
connectActiveConference এন্ডপয়েন্ট দ্বারা ফেরত আসা ত্রুটি কোডগুলি সমাধানের জন্য এখানে টিপস দেওয়া হল:
| ত্রুটি কোড | |
|---|---|
NO_ACTIVE_CONFERENCE | যাচাই করুন যে Meet Media API ক্লায়েন্ট শুধুমাত্র তখনই সংযোগ করার চেষ্টা করে যখন প্রমাণিত ব্যবহারকারী ইতিমধ্যেই মিটিং স্পেসে একটি কনফারেন্সে উপস্থিত থাকে। যদি আপনি কনফারেন্স শুরুর জন্য ভোটদান করেন, তাহলে কনফারেন্স শুরুর ইভেন্টগুলি ব্যবহার করুন। |
INVALID_OFFER | অফারের প্রয়োজনীয়তাগুলি পড়ুন যাতে কোনও অনুপস্থিত বিবরণ, যেমন ডেটা প্রয়োজনীয় চ্যানেল খোলার বিষয়টি পরীক্ষা করা যায়। আপনি আপনার অ্যাপের অফার স্ট্রিংটিকে উদাহরণ অফারের সাথে তুলনা করতে পারেন এবং কোনও পার্থক্য থাকলে তা তদন্ত করতে পারেন। |
INCOMPATIBLE_DEVICE | কনফারেন্সে থাকা এক বা একাধিক ডিভাইস Meet Media API ক্লায়েন্টের সাথে সামঞ্জস্যপূর্ণ নয়। আপনার অ্যাপটি যোগ দিতে পারবে না, তাই আপনি এটি আপনার ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। ডিভাইসগুলি বেমানান হওয়ার কারণগুলির মধ্যে রয়েছে ডিভাইসের সাথে সম্পর্কিত অ্যাকাউন্টটি যদি বয়সের কম বলে বিবেচিত হয়। আরও তথ্যের জন্য, ব্যবহারকারীর প্রয়োজনীয়তা দেখুন। |
UNSUPPORTED_PLATFORM_PRESENT | কনফারেন্সে থাকা এক বা একাধিক ডিভাইস Meet Media API ক্লায়েন্টের সাথে সামঞ্জস্যপূর্ণ নয়। আপনার অ্যাপটি যোগদান করতে পারবে না, তাই আপনি এটি আপনার ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। অসমর্থিত প্ল্যাটফর্মের কারণগুলির মধ্যে রয়েছে মোবাইল অ্যাপগুলি যা মোবাইল অ্যাপের ন্যূনতম সংস্করণ পূরণ করে না এবং অসমর্থিত প্ল্যাটফর্ম থেকে যোগদান করে। আরও তথ্যের জন্য, ব্যবহারকারীর প্রয়োজনীয়তা দেখুন। |
CONNECTIONS_EXHAUSTED | একবারে শুধুমাত্র একটি Meet Media API ক্লায়েন্ট একটি কনফারেন্সের সাথে সংযোগ করতে পারে। যদি আপনার অ্যাপটি ক্র্যাশ হয়ে যায়, তাহলে পুনরায় সংযোগ করার চেষ্টা করলে আপনি এই ত্রুটিটি দেখতে পেতে পারেন। এই ক্ষেত্রে, Meet-এর পূর্ববর্তী সংযোগটি টাইমআউট না হওয়া পর্যন্ত প্রায় 30 সেকেন্ড অপেক্ষা করুন। তারপর, আবার চেষ্টা করুন। |
CONSENTER_ABSENT | সভায় কোনও যোগ্য সম্মতিদাতা নেই। ভোক্তা মালিকানাধীন সভার ক্ষেত্রে, নিশ্চিত করুন যে সূচনাকারী সভায় আছেন। কর্মক্ষেত্র মালিকদের সভার ক্ষেত্রে, সেই সংস্থার কমপক্ষে একজন সদস্য থাকা উচিত যিনি সভার মালিক। আরও তথ্যের জন্য, সম্মতিদাতার প্রয়োজনীয়তা দেখুন। |
DISABLED_BY_ADMIN | প্রশাসক তাদের প্রতিষ্ঠানের জন্য Meet Media API অক্ষম করেছেন। যদি আপনি এটির সম্মুখীন হন, তাহলে এটি মিটিংয়ের সময়কালে পরিবর্তন করা যাবে না। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 3 দেখুন। |
DISABLED_BY_HOST_CONTROL | হোস্ট মিটিংয়ের জন্য Meet Media API অক্ষম করেছে। আপনার অ্যাপ যোগ দিতে পারবে না, তাই আপনি এটি আপনার শেষ ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 5 দেখুন। |
DISABLED_DUE_TO_WATERMARKING | ওয়াটারমার্কিং সক্ষম করা থাকলে, Meet Media API মিটিংয়ে প্রবেশ করতে পারবে না। আপনি এটি আপনার শেষ ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 2 দেখুন। |
DISABLED_DUE_TO_ENCRYPTION | এনক্রিপশন সক্ষম করা থাকলে, Meet Media API মিটিংয়ে প্রবেশ করতে পারবে না। Meet কলের সময় এটি পরিবর্তন করা যাবে না। আপনি আপনার ব্যবহারকারীদের সাথে এটি যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 2 দেখুন। |
একীভূত পরিকল্পনা
যদি ডেটা চ্যানেল কখনও না খোলে এবং আপনি কখনও অডিও বা ভিডিও না পান, তাহলে স্থানীয় পিয়ার সংযোগ কনফিগার করার সময় শুধুমাত্র ইউনিফাইড প্ল্যান ব্যবহার করা হয়েছে কিনা তা পরীক্ষা করুন।
মিডিয়া বর্ণনার ক্রম ত্রুটি
সেশন ডেসক্রিপশন প্রোটোকল (SDP) অফারের মাধ্যমে পিয়ার-টু-পিয়ার সংযোগ তৈরি করার সময়, আপনি ত্রুটিটি দেখতে পারেন:
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.
এর অর্থ হল SDP উত্তরে থাকা মিডিয়া বর্ণনার লাইনগুলি 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 |
এই ত্রুটিটি ঠিক করার জন্য, পিয়ার কানেকশন অবজেক্ট সেট করার সময় নিশ্চিত করুন যে একই ধরণের মিডিয়া টাইপগুলি সঠিকভাবে কনফিগার করা হয়েছে এবং একসাথে গোষ্ঠীভুক্ত করা হয়েছে। ইন্টারলিভড মিডিয়া বর্ণনা সমর্থিত নয়।
নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে মিডিয়া বর্ণনা সঠিকভাবে মেলাতে হয়:
সি++
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);
// . . .
}
জাভাস্ক্রিপ্ট
pc = new RTCPeerConnection();
// Signal the entire video at once.
pc.addTransceiver(video, {'direction':'recvonly'});
pc.addTransceiver(video, {'direction':'recvonly'});
pc.addTransceiver(video, {'direction':'recvonly'});
DTLS ভূমিকা বৈশিষ্ট্য ত্রুটি
DTLS রোল অ্যাট্রিবিউট সেট করার সময়, আপনি ত্রুটিটি দেখতে পাবেন:
All DTLS roles must be one of [ACTIVE, ACTPASS].
SDP অফারের সমস্ত মিডিয়া বর্ণনার জন্য a=setup:< > অ্যাট্রিবিউট সঠিকভাবে সেট না করা থাকলে এই ত্রুটিটি ঘটে।
এই ত্রুটিটি ঠিক করার জন্য, নিশ্চিত করুন যে SDP অফারের প্রতিটি মিডিয়া বর্ণনায় নিম্নলিখিত প্রয়োজনীয় বৈশিষ্ট্যগুলির মধ্যে একটি রয়েছে:
-
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
. . .
অডিও সমস্যা সমাধান করুন
নিম্নলিখিত বিভাগগুলি আপনার অ্যাপের অডিও সমস্যা সমাধানে সাহায্য করতে পারে।
লগগুলি পরীক্ষা করুন
যদি আপনি Chrome ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:
- একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন:
chrome://webrtc-internals। -
Stats graph for inbound-rtpলেবেলযুক্ত বিভাগে যান। - প্রতিটি অডিও গ্রাফ পরীক্ষা করে দেখুন যে প্যাকেটগুলি গ্রহণ করা হচ্ছে কিনা।
যদি আপনি C++ রেফারেন্স ক্লায়েন্ট ব্যবহার করেন, তাহলে OnAudioFrame কখনও কল করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।
OAuth স্কোপগুলি যাচাই করুন
প্রাথমিক সংযোগ অনুরোধের সাথে সঠিক স্কোপ সরবরাহ করা হলেই কেবল অডিও প্রেরণ করা হয়। ত্রুটি সমাধানের জন্য, সঠিক OAuth 2.0 স্কোপ সরবরাহ করতে ভুলবেন না। আরও তথ্যের জন্য, Meet Media API স্কোপ দেখুন।
কনফারেন্সটি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা যাচাই করুন।
যখন ক্লায়েন্ট Google Meet সার্ভারের সাথে সংযোগ স্থাপন করে, তখন এটি স্বয়ংক্রিয়ভাবে কনফারেন্সে প্রবেশ করতে পারে না। নিশ্চিত করুন যে আপনি
STATE_JOINEDঅবস্থা সহ সেশন নিয়ন্ত্রণ ডেটা চ্যানেলে একটি সেশন নিয়ন্ত্রণ রিসোর্স আপডেট পেয়েছেন।{"sessionStatus":{"connectionState":"STATE_JOINED"}}নিশ্চিত করুন যে অন্যান্য সম্মেলন অংশগ্রহণকারী আছেন যাদের অডিও স্ট্রিম নিঃশব্দ করা হয়নি।
অডিওর জন্য আপনার সিগন্যাল যাচাই করুন
SDP অফারে যদি আপনি এটি সিগন্যাল করেন তবেই Meet অডিও প্রদান করবে। অফারে তিনটি, শুধুমাত্র-গ্রহণযোগ্য, অডিও মিডিয়া বিবরণ থাকতে হবে।
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
. . .
যদি Meet সার্ভারগুলি কোনও বৈধ অফার পায়, তাহলে তারা তিনটি, কেবল-প্রেরণযোগ্য, অডিও মিডিয়া বিবরণ সহ একটি SDP উত্তর দিয়ে সাড়া দেয়।
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
. . .
আপনার পর্যবেক্ষক বাস্তবায়ন পরীক্ষা করুন
যদি আপনি ডেটা প্রসেসিংকে অন্য কোনও থ্রেডে স্থানান্তর করেন, তাহলে অডিও ডেটার কপি তৈরি করতে ভুলবেন না। AudioFrame.pcm16 কার্যকরভাবে অন্তর্নিহিত ডেটার একটি রেফারেন্স, তাই OnAudioFrame পরে এটি অ্যাক্সেস করার চেষ্টা করলে অনির্ধারিত আচরণ দেখা দেয়, যেমন একটি সেগমেন্টেশন ফল্ট।
ভিডিও সংক্রান্ত সমস্যা সমাধান করুন
নিম্নলিখিত বিভাগগুলি আপনার অ্যাপে ভিডিও সমস্যা সমাধানে সাহায্য করতে পারে।
লগগুলি পরীক্ষা করুন
যদি আপনি Chrome ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:
- একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন:
chrome://webrtc-internals। -
Stats graph for inbound-rtpলেবেলযুক্ত বিভাগে যান। - প্রতিটি ভিডিও গ্রাফ পরীক্ষা করে দেখুন যে প্যাকেটগুলি গ্রহণ করা হচ্ছে কিনা।
যদি আপনি C++ রেফারেন্স ক্লায়েন্ট ব্যবহার করেন, তাহলে OnVideoFrame কখনও কল করা হয়েছে কিনা তা পরীক্ষা করুন।
OAuth স্কোপগুলি যাচাই করুন
প্রাথমিক সংযোগ অনুরোধের সাথে সঠিক স্কোপ সরবরাহ করা হলেই কেবল ভিডিও প্রেরণ করা হয়। ত্রুটি সমাধানের জন্য, সঠিক OAuth 2.0 স্কোপ সরবরাহ করতে ভুলবেন না। আরও তথ্যের জন্য, Meet Media API স্কোপ দেখুন।
কনফারেন্সটি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা যাচাই করুন।
যখন ক্লায়েন্ট Meet সার্ভারের সাথে সংযোগ স্থাপন করে, তখন এটি স্বয়ংক্রিয়ভাবে কনফারেন্সে প্রবেশ করতে পারে না। নিশ্চিত করুন যে আপনি
STATE_JOINEDঅবস্থা সহ সেশন কন্ট্রোল ডেটা চ্যানেলে একটি সেশন কন্ট্রোল রিসোর্স আপডেট পেয়েছেন।{"sessionStatus":{"connectionState":"STATE_JOINED"}}নিশ্চিত করুন যে অন্যান্য সম্মেলন অংশগ্রহণকারীরা আছেন যাদের ভিডিও স্ট্রিম নিঃশব্দ করা হয়নি।
ভিডিওর জন্য আপনার সিগন্যাল যাচাই করুন
SDP অফারে সিগন্যাল থাকলেই Meet শুধুমাত্র ভিডিও প্রদান করে। অফারে সর্বাধিক তিনটি, শুধুমাত্র-গ্রহণযোগ্য, ভিডিও মিডিয়া বিবরণ থাকতে হবে।
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
. . .
যদি Meet একটি বৈধ অফার পায়, তাহলে এটি n কেবল-সেন্ড-অনলি ভিডিও মিডিয়া বর্ণনা সহ একটি SDP উত্তর দিয়ে সাড়া দেয়, যেখানে n হল 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
. . .
কোনও ভিডিও না থাকলে সমস্যা সমাধান করুন
- Meet সার্ভারে পাঠানো SDP অফারে
m=video …আছে কিনা তা পরীক্ষা করে দেখুন। - প্রতিটি
m=videoলাইনের নিচেa=recvonlyএকটি অ্যাট্রিবিউট কিনা তা পরীক্ষা করুন। - SDP উত্তরে সমান সংখ্যক
m=videoলাইন আছে কিনা তা পরীক্ষা করুন। - SDP উত্তরের প্রতিটি
m=videoলাইনের অধীনেa=sendonlyঅথবাa=sendrecvবৈশিষ্ট্য আছে কিনা তা পরীক্ষা করুন। - একটি সফল
VideoAssignmentRequestMeet সার্ভারে পাঠানো হয়েছে কিনা এবং তা তারা পেয়েছে কিনা তা পরীক্ষা করুন। সাফল্য বা ব্যর্থতা একই ডেটা চ্যানেলের মাধ্যমে ক্লায়েন্টকে জানানো উচিত।
প্রত্যাশার চেয়ে কম ভিডিও স্ট্রিম আসার সমস্যা সমাধান করুন
- SDP অফারে
m=video …লাইনের সঠিক সংখ্যা আছে কিনা তা পরীক্ষা করুন। - SDP উত্তরের সমস্ত
m=videoবর্ণনায়a=sendonlyঅথবাa=sendrecvঅ্যাট্রিবিউট আছে কিনা তা নিশ্চিত করুন। উত্তরেa=recvonlyচিহ্নিত যেকোনো লাইন ক্লায়েন্টের কাছে প্রেরিত স্ট্রিমগুলির পরিমাণ অনেক কমিয়ে দেয়।
আপনার পর্যবেক্ষক বাস্তবায়ন পরীক্ষা করুন
যদি আপনি ডেটা প্রসেসিংকে অন্য কোনও থ্রেডে স্থানান্তর করেন, তাহলে ভিডিও ডেটার কপি তৈরি করতে ভুলবেন না। VideoFrame.frame কার্যকরভাবে অন্তর্নিহিত ডেটার একটি রেফারেন্স, তাই OnVideoFrame পরে এটি অ্যাক্সেস করার চেষ্টা করলে অনির্ধারিত আচরণ দেখা দেবে, যেমন একটি সেগমেন্টেশন ফল্ট।
সম্পর্কিত বিষয়
,এই নির্দেশিকাটিতে Google Meet Media API-এর সাধারণ ত্রুটিগুলি কীভাবে সমাধান করবেন সে সম্পর্কে নির্দেশাবলী দেওয়া আছে।
ত্রুটি কোডগুলির সমস্যা সমাধান করুন
connectActiveConference এন্ডপয়েন্ট দ্বারা ফেরত আসা ত্রুটি কোডগুলি সমাধানের জন্য এখানে টিপস দেওয়া হল:
| ত্রুটি কোড | |
|---|---|
NO_ACTIVE_CONFERENCE | যাচাই করুন যে Meet Media API ক্লায়েন্ট শুধুমাত্র তখনই সংযোগ করার চেষ্টা করে যখন প্রমাণিত ব্যবহারকারী ইতিমধ্যেই মিটিং স্পেসে একটি কনফারেন্সে উপস্থিত থাকে। যদি আপনি কনফারেন্স শুরুর জন্য ভোটদান করেন, তাহলে কনফারেন্স শুরুর ইভেন্টগুলি ব্যবহার করুন। |
INVALID_OFFER | অফারের প্রয়োজনীয়তাগুলি পড়ুন যাতে কোনও অনুপস্থিত বিবরণ, যেমন ডেটা প্রয়োজনীয় চ্যানেল খোলার বিষয়টি পরীক্ষা করা যায়। আপনি আপনার অ্যাপের অফার স্ট্রিংটিকে উদাহরণ অফারের সাথে তুলনা করতে পারেন এবং কোনও পার্থক্য থাকলে তা তদন্ত করতে পারেন। |
INCOMPATIBLE_DEVICE | কনফারেন্সে থাকা এক বা একাধিক ডিভাইস Meet Media API ক্লায়েন্টের সাথে সামঞ্জস্যপূর্ণ নয়। আপনার অ্যাপটি যোগ দিতে পারবে না, তাই আপনি এটি আপনার ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। ডিভাইসগুলি বেমানান হওয়ার কারণগুলির মধ্যে রয়েছে ডিভাইসের সাথে সম্পর্কিত অ্যাকাউন্টটি যদি বয়সের কম বলে বিবেচিত হয়। আরও তথ্যের জন্য, ব্যবহারকারীর প্রয়োজনীয়তা দেখুন। |
UNSUPPORTED_PLATFORM_PRESENT | কনফারেন্সে থাকা এক বা একাধিক ডিভাইস Meet Media API ক্লায়েন্টের সাথে সামঞ্জস্যপূর্ণ নয়। আপনার অ্যাপটি যোগদান করতে পারবে না, তাই আপনি এটি আপনার ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। অসমর্থিত প্ল্যাটফর্মের কারণগুলির মধ্যে রয়েছে মোবাইল অ্যাপগুলি যা মোবাইল অ্যাপের ন্যূনতম সংস্করণ পূরণ করে না এবং অসমর্থিত প্ল্যাটফর্ম থেকে যোগদান করে। আরও তথ্যের জন্য, ব্যবহারকারীর প্রয়োজনীয়তা দেখুন। |
CONNECTIONS_EXHAUSTED | একবারে শুধুমাত্র একটি Meet Media API ক্লায়েন্ট একটি কনফারেন্সের সাথে সংযোগ করতে পারে। যদি আপনার অ্যাপটি ক্র্যাশ হয়ে যায়, তাহলে পুনরায় সংযোগ করার চেষ্টা করলে আপনি এই ত্রুটিটি দেখতে পেতে পারেন। এই ক্ষেত্রে, Meet-এর পূর্ববর্তী সংযোগটি টাইমআউট না হওয়া পর্যন্ত প্রায় 30 সেকেন্ড অপেক্ষা করুন। তারপর, আবার চেষ্টা করুন। |
CONSENTER_ABSENT | সভায় কোনও যোগ্য সম্মতিদাতা নেই। ভোক্তা মালিকানাধীন সভার ক্ষেত্রে, নিশ্চিত করুন যে সূচনাকারী সভায় আছেন। কর্মক্ষেত্র মালিকদের সভার ক্ষেত্রে, সেই সংস্থার কমপক্ষে একজন সদস্য থাকা উচিত যিনি সভার মালিক। আরও তথ্যের জন্য, সম্মতিদাতার প্রয়োজনীয়তা দেখুন। |
DISABLED_BY_ADMIN | প্রশাসক তাদের প্রতিষ্ঠানের জন্য Meet Media API অক্ষম করেছেন। যদি আপনি এটির সম্মুখীন হন, তাহলে এটি মিটিংয়ের সময়কালে পরিবর্তন করা যাবে না। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 3 দেখুন। |
DISABLED_BY_HOST_CONTROL | হোস্ট মিটিংয়ের জন্য Meet Media API অক্ষম করেছে। আপনার অ্যাপ যোগ দিতে পারবে না, তাই আপনি এটি আপনার শেষ ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 5 দেখুন। |
DISABLED_DUE_TO_WATERMARKING | ওয়াটারমার্কিং সক্ষম করা থাকলে, Meet Media API মিটিংয়ে প্রবেশ করতে পারবে না। আপনি এটি আপনার শেষ ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 2 দেখুন। |
DISABLED_DUE_TO_ENCRYPTION | এনক্রিপশন সক্ষম করা থাকলে, Meet Media API মিটিংয়ে প্রবেশ করতে পারবে না। Meet কলের সময় এটি পরিবর্তন করা যাবে না। আপনি আপনার ব্যবহারকারীদের সাথে এটি যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 2 দেখুন। |
একীভূত পরিকল্পনা
যদি ডেটা চ্যানেল কখনও না খোলে এবং আপনি কখনও অডিও বা ভিডিও না পান, তাহলে স্থানীয় পিয়ার সংযোগ কনফিগার করার সময় শুধুমাত্র ইউনিফাইড প্ল্যান ব্যবহার করা হয়েছে কিনা তা পরীক্ষা করুন।
মিডিয়া বর্ণনার ক্রম ত্রুটি
সেশন ডেসক্রিপশন প্রোটোকল (SDP) অফারের মাধ্যমে পিয়ার-টু-পিয়ার সংযোগ তৈরি করার সময়, আপনি ত্রুটিটি দেখতে পারেন:
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.
এর অর্থ হল SDP উত্তরে থাকা মিডিয়া বর্ণনার লাইনগুলি 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 |
এই ত্রুটিটি ঠিক করার জন্য, পিয়ার কানেকশন অবজেক্ট সেট করার সময় নিশ্চিত করুন যে একই ধরণের মিডিয়া টাইপগুলি সঠিকভাবে কনফিগার করা হয়েছে এবং একসাথে গোষ্ঠীভুক্ত করা হয়েছে। ইন্টারলিভড মিডিয়া বর্ণনা সমর্থিত নয়।
নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে মিডিয়া বর্ণনা সঠিকভাবে মেলাতে হয়:
সি++
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);
// . . .
}
জাভাস্ক্রিপ্ট
pc = new RTCPeerConnection();
// Signal the entire video at once.
pc.addTransceiver(video, {'direction':'recvonly'});
pc.addTransceiver(video, {'direction':'recvonly'});
pc.addTransceiver(video, {'direction':'recvonly'});
DTLS ভূমিকা বৈশিষ্ট্য ত্রুটি
DTLS রোল অ্যাট্রিবিউট সেট করার সময়, আপনি ত্রুটিটি দেখতে পাবেন:
All DTLS roles must be one of [ACTIVE, ACTPASS].
SDP অফারের সমস্ত মিডিয়া বর্ণনার জন্য a=setup:< > অ্যাট্রিবিউট সঠিকভাবে সেট না করা থাকলে এই ত্রুটিটি ঘটে।
এই ত্রুটিটি ঠিক করার জন্য, নিশ্চিত করুন যে SDP অফারের প্রতিটি মিডিয়া বর্ণনায় নিম্নলিখিত প্রয়োজনীয় বৈশিষ্ট্যগুলির মধ্যে একটি রয়েছে:
-
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
. . .
অডিও সমস্যা সমাধান করুন
নিম্নলিখিত বিভাগগুলি আপনার অ্যাপের অডিও সমস্যা সমাধানে সাহায্য করতে পারে।
লগগুলি পরীক্ষা করুন
যদি আপনি Chrome ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:
- একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন:
chrome://webrtc-internals। -
Stats graph for inbound-rtpলেবেলযুক্ত বিভাগে যান। - প্রতিটি অডিও গ্রাফ পরীক্ষা করে দেখুন যে প্যাকেটগুলি গ্রহণ করা হচ্ছে কিনা।
যদি আপনি C++ রেফারেন্স ক্লায়েন্ট ব্যবহার করেন, তাহলে OnAudioFrame কখনও কল করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।
OAuth স্কোপগুলি যাচাই করুন
প্রাথমিক সংযোগ অনুরোধের সাথে সঠিক স্কোপ সরবরাহ করা হলেই কেবল অডিও প্রেরণ করা হয়। ত্রুটি সমাধানের জন্য, সঠিক OAuth 2.0 স্কোপ সরবরাহ করতে ভুলবেন না। আরও তথ্যের জন্য, Meet Media API স্কোপ দেখুন।
কনফারেন্সটি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা যাচাই করুন।
যখন ক্লায়েন্ট Google Meet সার্ভারের সাথে সংযোগ স্থাপন করে, তখন এটি স্বয়ংক্রিয়ভাবে কনফারেন্সে প্রবেশ করতে পারে না। নিশ্চিত করুন যে আপনি
STATE_JOINEDঅবস্থা সহ সেশন নিয়ন্ত্রণ ডেটা চ্যানেলে একটি সেশন নিয়ন্ত্রণ রিসোর্স আপডেট পেয়েছেন।{"sessionStatus":{"connectionState":"STATE_JOINED"}}নিশ্চিত করুন যে অন্যান্য সম্মেলন অংশগ্রহণকারী আছেন যাদের অডিও স্ট্রিম নিঃশব্দ করা হয়নি।
অডিওর জন্য আপনার সিগন্যাল যাচাই করুন
SDP অফারে যদি আপনি এটি সিগন্যাল করেন তবেই Meet অডিও প্রদান করবে। অফারে তিনটি, শুধুমাত্র-গ্রহণযোগ্য, অডিও মিডিয়া বিবরণ থাকতে হবে।
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
. . .
যদি Meet সার্ভারগুলি কোনও বৈধ অফার পায়, তাহলে তারা তিনটি, কেবল-প্রেরণযোগ্য, অডিও মিডিয়া বিবরণ সহ একটি SDP উত্তর দিয়ে সাড়া দেয়।
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
. . .
আপনার পর্যবেক্ষক বাস্তবায়ন পরীক্ষা করুন
যদি আপনি ডেটা প্রসেসিংকে অন্য কোনও থ্রেডে স্থানান্তর করেন, তাহলে অডিও ডেটার কপি তৈরি করতে ভুলবেন না। AudioFrame.pcm16 কার্যকরভাবে অন্তর্নিহিত ডেটার একটি রেফারেন্স, তাই OnAudioFrame পরে এটি অ্যাক্সেস করার চেষ্টা করলে অনির্ধারিত আচরণ দেখা দেয়, যেমন একটি সেগমেন্টেশন ফল্ট।
ভিডিও সংক্রান্ত সমস্যা সমাধান করুন
নিম্নলিখিত বিভাগগুলি আপনার অ্যাপে ভিডিও সমস্যা সমাধানে সাহায্য করতে পারে।
লগগুলি পরীক্ষা করুন
যদি আপনি Chrome ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:
- একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন:
chrome://webrtc-internals। -
Stats graph for inbound-rtpলেবেলযুক্ত বিভাগে যান। - প্রতিটি ভিডিও গ্রাফ পরীক্ষা করে দেখুন যে প্যাকেটগুলি গ্রহণ করা হচ্ছে কিনা।
যদি আপনি C++ রেফারেন্স ক্লায়েন্ট ব্যবহার করেন, তাহলে OnVideoFrame কখনও কল করা হয়েছে কিনা তা পরীক্ষা করুন।
OAuth স্কোপগুলি যাচাই করুন
প্রাথমিক সংযোগ অনুরোধের সাথে সঠিক স্কোপ সরবরাহ করা হলেই কেবল ভিডিও প্রেরণ করা হয়। ত্রুটি সমাধানের জন্য, সঠিক OAuth 2.0 স্কোপ সরবরাহ করতে ভুলবেন না। আরও তথ্যের জন্য, Meet Media API স্কোপ দেখুন।
কনফারেন্সটি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা যাচাই করুন।
যখন ক্লায়েন্ট Meet সার্ভারের সাথে সংযোগ স্থাপন করে, তখন এটি স্বয়ংক্রিয়ভাবে কনফারেন্সে প্রবেশ করতে পারে না। নিশ্চিত করুন যে আপনি
STATE_JOINEDঅবস্থা সহ সেশন কন্ট্রোল ডেটা চ্যানেলে একটি সেশন কন্ট্রোল রিসোর্স আপডেট পেয়েছেন।{"sessionStatus":{"connectionState":"STATE_JOINED"}}নিশ্চিত করুন যে অন্যান্য সম্মেলন অংশগ্রহণকারীরা আছেন যাদের ভিডিও স্ট্রিম নিঃশব্দ করা হয়নি।
ভিডিওর জন্য আপনার সিগন্যাল যাচাই করুন
SDP অফারে সিগন্যাল থাকলেই Meet শুধুমাত্র ভিডিও প্রদান করে। অফারে সর্বাধিক তিনটি, শুধুমাত্র-গ্রহণযোগ্য, ভিডিও মিডিয়া বিবরণ থাকতে হবে।
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
. . .
যদি Meet একটি বৈধ অফার পায়, তাহলে এটি n কেবল-সেন্ড-অনলি ভিডিও মিডিয়া বর্ণনা সহ একটি SDP উত্তর দিয়ে সাড়া দেয়, যেখানে n হল 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
. . .
কোনও ভিডিও না থাকলে সমস্যা সমাধান করুন
- Meet সার্ভারে পাঠানো SDP অফারে
m=video …আছে কিনা তা পরীক্ষা করে দেখুন। - প্রতিটি
m=videoলাইনের নিচেa=recvonlyএকটি অ্যাট্রিবিউট কিনা তা পরীক্ষা করুন। - SDP উত্তরে সমান সংখ্যক
m=videoলাইন আছে কিনা তা পরীক্ষা করুন। - SDP উত্তরের প্রতিটি
m=videoলাইনের অধীনেa=sendonlyঅথবাa=sendrecvবৈশিষ্ট্য আছে কিনা তা পরীক্ষা করুন। - একটি সফল
VideoAssignmentRequestMeet সার্ভারে পাঠানো হয়েছে কিনা এবং তা তারা পেয়েছে কিনা তা পরীক্ষা করুন। সাফল্য বা ব্যর্থতা একই ডেটা চ্যানেলের মাধ্যমে ক্লায়েন্টকে জানানো উচিত।
প্রত্যাশার চেয়ে কম ভিডিও স্ট্রিম আসার সমস্যা সমাধান করুন
- SDP অফারে
m=video …লাইনের সঠিক সংখ্যা আছে কিনা তা পরীক্ষা করুন। - SDP উত্তরের সমস্ত
m=videoবর্ণনায়a=sendonlyঅথবাa=sendrecvঅ্যাট্রিবিউট আছে কিনা তা নিশ্চিত করুন। উত্তরেa=recvonlyচিহ্নিত যেকোনো লাইন ক্লায়েন্টের কাছে প্রেরিত স্ট্রিমগুলির পরিমাণ অনেক কমিয়ে দেয়।
আপনার পর্যবেক্ষক বাস্তবায়ন পরীক্ষা করুন
যদি আপনি ডেটা প্রসেসিংকে অন্য কোনও থ্রেডে স্থানান্তর করেন, তাহলে ভিডিও ডেটার কপি তৈরি করতে ভুলবেন না। VideoFrame.frame কার্যকরভাবে অন্তর্নিহিত ডেটার একটি রেফারেন্স, তাই OnVideoFrame পরে এটি অ্যাক্সেস করার চেষ্টা করলে অনির্ধারিত আচরণ দেখা দেবে, যেমন একটি সেগমেন্টেশন ফল্ট।
সম্পর্কিত বিষয়
,এই নির্দেশিকাটিতে Google Meet Media API-এর সাধারণ ত্রুটিগুলি কীভাবে সমাধান করবেন সে সম্পর্কে নির্দেশাবলী দেওয়া আছে।
ত্রুটি কোডগুলির সমস্যা সমাধান করুন
connectActiveConference এন্ডপয়েন্ট দ্বারা ফেরত আসা ত্রুটি কোডগুলি সমাধানের জন্য এখানে টিপস দেওয়া হল:
| ত্রুটি কোড | |
|---|---|
NO_ACTIVE_CONFERENCE | যাচাই করুন যে Meet Media API ক্লায়েন্ট শুধুমাত্র তখনই সংযোগ করার চেষ্টা করে যখন প্রমাণিত ব্যবহারকারী ইতিমধ্যেই মিটিং স্পেসে একটি কনফারেন্সে উপস্থিত থাকে। যদি আপনি কনফারেন্স শুরুর জন্য ভোটদান করেন, তাহলে কনফারেন্স শুরুর ইভেন্টগুলি ব্যবহার করুন। |
INVALID_OFFER | অফারের প্রয়োজনীয়তাগুলি পড়ুন যাতে কোনও অনুপস্থিত বিবরণ, যেমন ডেটা প্রয়োজনীয় চ্যানেল খোলার বিষয়টি পরীক্ষা করা যায়। আপনি আপনার অ্যাপের অফার স্ট্রিংটিকে উদাহরণ অফারের সাথে তুলনা করতে পারেন এবং কোনও পার্থক্য থাকলে তা তদন্ত করতে পারেন। |
INCOMPATIBLE_DEVICE | কনফারেন্সে থাকা এক বা একাধিক ডিভাইস Meet Media API ক্লায়েন্টের সাথে সামঞ্জস্যপূর্ণ নয়। আপনার অ্যাপটি যোগ দিতে পারবে না, তাই আপনি এটি আপনার ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। ডিভাইসগুলি বেমানান হওয়ার কারণগুলির মধ্যে রয়েছে ডিভাইসের সাথে সম্পর্কিত অ্যাকাউন্টটি যদি বয়সের কম বলে বিবেচিত হয়। আরও তথ্যের জন্য, ব্যবহারকারীর প্রয়োজনীয়তা দেখুন। |
UNSUPPORTED_PLATFORM_PRESENT | কনফারেন্সে থাকা এক বা একাধিক ডিভাইস Meet Media API ক্লায়েন্টের সাথে সামঞ্জস্যপূর্ণ নয়। আপনার অ্যাপটি যোগদান করতে পারবে না, তাই আপনি এটি আপনার ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। অসমর্থিত প্ল্যাটফর্মের কারণগুলির মধ্যে রয়েছে মোবাইল অ্যাপগুলি যা মোবাইল অ্যাপের ন্যূনতম সংস্করণ পূরণ করে না এবং অসমর্থিত প্ল্যাটফর্ম থেকে যোগদান করে। আরও তথ্যের জন্য, ব্যবহারকারীর প্রয়োজনীয়তা দেখুন। |
CONNECTIONS_EXHAUSTED | একবারে শুধুমাত্র একটি Meet Media API ক্লায়েন্ট একটি কনফারেন্সের সাথে সংযোগ করতে পারে। যদি আপনার অ্যাপটি ক্র্যাশ হয়ে যায়, তাহলে পুনরায় সংযোগ করার চেষ্টা করলে আপনি এই ত্রুটিটি দেখতে পেতে পারেন। এই ক্ষেত্রে, Meet-এর পূর্ববর্তী সংযোগটি টাইমআউট না হওয়া পর্যন্ত প্রায় 30 সেকেন্ড অপেক্ষা করুন। তারপর, আবার চেষ্টা করুন। |
CONSENTER_ABSENT | সভায় কোনও যোগ্য সম্মতিদাতা নেই। ভোক্তা মালিকানাধীন সভার ক্ষেত্রে, নিশ্চিত করুন যে সূচনাকারী সভায় আছেন। কর্মক্ষেত্র মালিকদের সভার ক্ষেত্রে, সেই সংস্থার কমপক্ষে একজন সদস্য থাকা উচিত যিনি সভার মালিক। আরও তথ্যের জন্য, সম্মতিদাতার প্রয়োজনীয়তা দেখুন। |
DISABLED_BY_ADMIN | প্রশাসক তাদের প্রতিষ্ঠানের জন্য Meet Media API অক্ষম করেছেন। যদি আপনি এটির সম্মুখীন হন, তাহলে এটি মিটিংয়ের সময়কালে পরিবর্তন করা যাবে না। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 3 দেখুন। |
DISABLED_BY_HOST_CONTROL | হোস্ট মিটিংয়ের জন্য Meet Media API অক্ষম করেছে। আপনার অ্যাপ যোগ দিতে পারবে না, তাই আপনি এটি আপনার শেষ ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 5 দেখুন। |
DISABLED_DUE_TO_WATERMARKING | ওয়াটারমার্কিং সক্ষম করা থাকলে, Meet Media API মিটিংয়ে প্রবেশ করতে পারবে না। আপনি এটি আপনার শেষ ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 2 দেখুন। |
DISABLED_DUE_TO_ENCRYPTION | এনক্রিপশন সক্ষম করা থাকলে, Meet Media API মিটিংয়ে প্রবেশ করতে পারবে না। Meet কলের সময় এটি পরিবর্তন করা যাবে না। আপনি আপনার ব্যবহারকারীদের সাথে এটি যোগাযোগ করতে পারেন। আরও তথ্যের জন্য, Meet Media API জীবনচক্রের চিত্র 2 দেখুন। |
একীভূত পরিকল্পনা
যদি ডেটা চ্যানেল কখনও না খোলে এবং আপনি কখনও অডিও বা ভিডিও না পান, তাহলে স্থানীয় পিয়ার সংযোগ কনফিগার করার সময় শুধুমাত্র ইউনিফাইড প্ল্যান ব্যবহার করা হয়েছে কিনা তা পরীক্ষা করুন।
মিডিয়া বর্ণনার ক্রম ত্রুটি
সেশন ডেসক্রিপশন প্রোটোকল (SDP) অফারের মাধ্যমে পিয়ার-টু-পিয়ার সংযোগ তৈরি করার সময়, আপনি ত্রুটিটি দেখতে পারেন:
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.
এর অর্থ হল SDP উত্তরে থাকা মিডিয়া বর্ণনার লাইনগুলি 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 |
এই ত্রুটিটি ঠিক করার জন্য, পিয়ার কানেকশন অবজেক্ট সেট করার সময় নিশ্চিত করুন যে একই ধরণের মিডিয়া টাইপগুলি সঠিকভাবে কনফিগার করা হয়েছে এবং একসাথে গোষ্ঠীভুক্ত করা হয়েছে। ইন্টারলিভড মিডিয়া বর্ণনা সমর্থিত নয়।
নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে মিডিয়া বর্ণনা সঠিকভাবে মেলাতে হয়:
সি++
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);
// . . .
}
জাভাস্ক্রিপ্ট
pc = new RTCPeerConnection();
// Signal the entire video at once.
pc.addTransceiver(video, {'direction':'recvonly'});
pc.addTransceiver(video, {'direction':'recvonly'});
pc.addTransceiver(video, {'direction':'recvonly'});
DTLS ভূমিকা বৈশিষ্ট্য ত্রুটি
DTLS রোল অ্যাট্রিবিউট সেট করার সময়, আপনি ত্রুটিটি দেখতে পাবেন:
All DTLS roles must be one of [ACTIVE, ACTPASS].
SDP অফারের সমস্ত মিডিয়া বর্ণনার জন্য a=setup:< > অ্যাট্রিবিউট সঠিকভাবে সেট না করা থাকলে এই ত্রুটিটি ঘটে।
এই ত্রুটিটি ঠিক করার জন্য, নিশ্চিত করুন যে SDP অফারের প্রতিটি মিডিয়া বর্ণনায় নিম্নলিখিত প্রয়োজনীয় বৈশিষ্ট্যগুলির মধ্যে একটি রয়েছে:
-
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
. . .
অডিও সমস্যা সমাধান করুন
নিম্নলিখিত বিভাগগুলি আপনার অ্যাপের অডিও সমস্যা সমাধানে সাহায্য করতে পারে।
লগগুলি পরীক্ষা করুন
যদি আপনি Chrome ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:
- একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন:
chrome://webrtc-internals। -
Stats graph for inbound-rtpলেবেলযুক্ত বিভাগে যান। - প্রতিটি অডিও গ্রাফ পরীক্ষা করে দেখুন যে প্যাকেটগুলি গ্রহণ করা হচ্ছে কিনা।
যদি আপনি C++ রেফারেন্স ক্লায়েন্ট ব্যবহার করেন, তাহলে OnAudioFrame কখনও কল করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।
OAuth স্কোপগুলি যাচাই করুন
প্রাথমিক সংযোগ অনুরোধের সাথে সঠিক স্কোপ সরবরাহ করা হলেই কেবল অডিও প্রেরণ করা হয়। ত্রুটি সমাধানের জন্য, সঠিক OAuth 2.0 স্কোপ সরবরাহ করতে ভুলবেন না। আরও তথ্যের জন্য, Meet Media API স্কোপ দেখুন।
কনফারেন্সটি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা যাচাই করুন।
যখন ক্লায়েন্ট Google Meet সার্ভারের সাথে সংযোগ স্থাপন করে, তখন এটি স্বয়ংক্রিয়ভাবে কনফারেন্সে প্রবেশ করতে পারে না। নিশ্চিত করুন যে আপনি
STATE_JOINEDঅবস্থা সহ সেশন নিয়ন্ত্রণ ডেটা চ্যানেলে একটি সেশন নিয়ন্ত্রণ রিসোর্স আপডেট পেয়েছেন।{"sessionStatus":{"connectionState":"STATE_JOINED"}}নিশ্চিত করুন যে অন্যান্য সম্মেলন অংশগ্রহণকারী আছেন যাদের অডিও স্ট্রিম নিঃশব্দ করা হয়নি।
অডিওর জন্য আপনার সিগন্যাল যাচাই করুন
SDP অফারে যদি আপনি এটি সিগন্যাল করেন তবেই Meet অডিও প্রদান করবে। অফারে তিনটি, শুধুমাত্র-গ্রহণযোগ্য, অডিও মিডিয়া বিবরণ থাকতে হবে।
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
. . .
যদি Meet সার্ভারগুলি কোনও বৈধ অফার পায়, তাহলে তারা তিনটি, কেবল-প্রেরণযোগ্য, অডিও মিডিয়া বিবরণ সহ একটি SDP উত্তর দিয়ে সাড়া দেয়।
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
. . .
আপনার পর্যবেক্ষক বাস্তবায়ন পরীক্ষা করুন
যদি আপনি ডেটা প্রসেসিংকে অন্য কোনও থ্রেডে স্থানান্তর করেন, তাহলে অডিও ডেটার কপি তৈরি করতে ভুলবেন না। AudioFrame.pcm16 কার্যকরভাবে অন্তর্নিহিত ডেটার একটি রেফারেন্স, তাই OnAudioFrame পরে এটি অ্যাক্সেস করার চেষ্টা করলে অনির্ধারিত আচরণ দেখা দেয়, যেমন একটি সেগমেন্টেশন ফল্ট।
ভিডিও সংক্রান্ত সমস্যা সমাধান করুন
নিম্নলিখিত বিভাগগুলি আপনার অ্যাপে ভিডিও সমস্যা সমাধানে সাহায্য করতে পারে।
লগগুলি পরীক্ষা করুন
যদি আপনি Chrome ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:
- একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন:
chrome://webrtc-internals। -
Stats graph for inbound-rtpলেবেলযুক্ত বিভাগে যান। - প্রতিটি ভিডিও গ্রাফ পরীক্ষা করে দেখুন যে প্যাকেটগুলি গ্রহণ করা হচ্ছে কিনা।
যদি আপনি C++ রেফারেন্স ক্লায়েন্ট ব্যবহার করেন, তাহলে OnVideoFrame কখনও কল করা হয়েছে কিনা তা পরীক্ষা করুন।
OAuth স্কোপগুলি যাচাই করুন
প্রাথমিক সংযোগ অনুরোধের সাথে সঠিক স্কোপ সরবরাহ করা হলেই কেবল ভিডিও প্রেরণ করা হয়। ত্রুটি সমাধানের জন্য, সঠিক OAuth 2.0 স্কোপ সরবরাহ করতে ভুলবেন না। আরও তথ্যের জন্য, Meet Media API স্কোপ দেখুন।
কনফারেন্সটি সঠিকভাবে সেট আপ করা হয়েছে কিনা তা যাচাই করুন।
যখন ক্লায়েন্ট Meet সার্ভারের সাথে সংযোগ স্থাপন করে, তখন এটি স্বয়ংক্রিয়ভাবে কনফারেন্সে প্রবেশ করতে পারে না। নিশ্চিত করুন যে আপনি
STATE_JOINEDঅবস্থা সহ সেশন কন্ট্রোল ডেটা চ্যানেলে একটি সেশন কন্ট্রোল রিসোর্স আপডেট পেয়েছেন।{"sessionStatus":{"connectionState":"STATE_JOINED"}}নিশ্চিত করুন যে অন্যান্য সম্মেলন অংশগ্রহণকারীরা আছেন যাদের ভিডিও স্ট্রিম নিঃশব্দ করা হয়নি।
ভিডিওর জন্য আপনার সিগন্যাল যাচাই করুন
SDP অফারে সিগন্যাল থাকলেই Meet শুধুমাত্র ভিডিও প্রদান করে। অফারে সর্বাধিক তিনটি, শুধুমাত্র-গ্রহণযোগ্য, ভিডিও মিডিয়া বিবরণ থাকতে হবে।
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
. . .
যদি Meet একটি বৈধ অফার পায়, তাহলে এটি n কেবল-সেন্ড-অনলি ভিডিও মিডিয়া বর্ণনা সহ একটি SDP উত্তর দিয়ে সাড়া দেয়, যেখানে n হল 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
. . .
কোনও ভিডিও না থাকলে সমস্যা সমাধান করুন
- Meet সার্ভারে পাঠানো SDP অফারে
m=video …আছে কিনা তা পরীক্ষা করে দেখুন। - প্রতিটি
m=videoলাইনের নিচেa=recvonlyএকটি অ্যাট্রিবিউট কিনা তা পরীক্ষা করুন। - SDP উত্তরে সমান সংখ্যক
m=videoলাইন আছে কিনা তা পরীক্ষা করুন। - SDP উত্তরের প্রতিটি
m=videoলাইনের অধীনেa=sendonlyঅথবাa=sendrecvবৈশিষ্ট্য আছে কিনা তা পরীক্ষা করুন। - একটি সফল
VideoAssignmentRequestMeet সার্ভারে পাঠানো হয়েছে কিনা এবং তা তারা পেয়েছে কিনা তা পরীক্ষা করুন। সাফল্য বা ব্যর্থতা একই ডেটা চ্যানেলের মাধ্যমে ক্লায়েন্টকে জানানো উচিত।
প্রত্যাশার চেয়ে কম ভিডিও স্ট্রিম আসার সমস্যা সমাধান করুন
- SDP অফারে
m=video …লাইনের সঠিক সংখ্যা আছে কিনা তা পরীক্ষা করুন। - SDP উত্তরের সমস্ত
m=videoবর্ণনায়a=sendonlyঅথবাa=sendrecvঅ্যাট্রিবিউট আছে কিনা তা নিশ্চিত করুন। উত্তরেa=recvonlyচিহ্নিত যেকোনো লাইন ক্লায়েন্টের কাছে প্রেরিত স্ট্রিমগুলির পরিমাণ অনেক কমিয়ে দেয়।
আপনার পর্যবেক্ষক বাস্তবায়ন পরীক্ষা করুন
যদি আপনি ডেটা প্রসেসিংকে অন্য কোনও থ্রেডে স্থানান্তর করেন, তাহলে ভিডিও ডেটার কপি তৈরি করতে ভুলবেন না। VideoFrame.frame কার্যকরভাবে অন্তর্নিহিত ডেটার একটি রেফারেন্স, তাই OnVideoFrame পরে এটি অ্যাক্সেস করার চেষ্টা করলে অনির্ধারিত আচরণ দেখা দেবে, যেমন একটি সেগমেন্টেশন ফল্ট।