Meet Media API ত্রুটির সমস্যা সমাধান করুন এবং ঠিক করুন

এই গাইডটি সাধারণ Google Meet Media API ত্রুটিগুলি কীভাবে সমাধান করতে হয় সে সম্পর্কে নির্দেশাবলী প্রদান করে।

ত্রুটি কোড সমস্যা সমাধান

connectActiveConference এন্ডপয়েন্ট দ্বারা প্রত্যাবর্তিত ত্রুটির কোডগুলি সমস্যা সমাধানের জন্য এখানে টিপস রয়েছে:

ত্রুটি কোড
NO_ACTIVE_CONFERENCE পরীক্ষা করুন যে Meet Media API ক্লায়েন্ট শুধুমাত্র তখনই সংযোগ করার চেষ্টা করে যখন প্রমাণিত ব্যবহারকারী ইতিমধ্যেই মিটিং স্পেসের একটি কনফারেন্সে উপস্থিত থাকে।
INVALID_OFFER কোনও অনুপস্থিত বিবরণ পরীক্ষা করতে অফার প্রয়োজনীয়তাগুলি পড়ুন, যেমন ডেটা প্রয়োজনীয় চ্যানেল খোলা। এছাড়াও আপনি উদাহরণ অফারের সাথে আপনার অ্যাপের অফার স্ট্রিং তুলনা করতে পারেন এবং যেকোনো পার্থক্য তদন্ত করতে পারেন।
INCOMPATIBLE_DEVICE সম্মেলনের এক বা একাধিক ডিভাইস Meet Media API ক্লায়েন্টের সাথে সামঞ্জস্যপূর্ণ নয়। আপনার অ্যাপ যোগদান করতে সক্ষম হবে না, তাই আপনি এটি আপনার শেষ ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন।
CONNECTIONS_EXHAUSTED একবারে শুধুমাত্র একটি Meet Media API ক্লায়েন্ট একটি কনফারেন্সে সংযুক্ত হতে পারে। আপনার অ্যাপ ক্র্যাশ হলে, এটি পুনরায় সংযোগ করার চেষ্টা করলে আপনি এই ত্রুটিটি দেখতে পারেন। এই ক্ষেত্রে, Meet পূর্ববর্তী সংযোগের সময়সীমা শেষ হওয়ার জন্য প্রায় 30 সেকেন্ড অপেক্ষা করুন। তারপর, আবার চেষ্টা করুন.

একীভূত পরিকল্পনা

যদি ডেটা চ্যানেল কখনই না খোলে এবং আপনি কখনই অডিও বা ভিডিও না পান, তবে স্থানীয় পিয়ার সংযোগ কনফিগার করার সময় শুধুমাত্র ইউনিফাইড প্ল্যান ব্যবহার করা হয়েছে কিনা তা পরীক্ষা করুন।

মিডিয়া বর্ণনা অর্ডার ত্রুটি

একটি সেশন বর্ণনা প্রোটোকল (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 অফারের মিডিয়া বিবরণের সাথে মেলে না:

SDP অফার SDP উত্তর
m=audio 9 UDP/TLS/RTP/SAVPF 111m=audio 9 UDP/TLS/RTP/SAVPF 111
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99m=audio 9 UDP/TLS/RTP/SAVPF 111
m=audio 9 UDP/TLS/RTP/SAVPF 111m=audio 9 UDP/TLS/RTP/SAVPF 111
m=audio 9 UDP/TLS/RTP/SAVPF 111m=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].

এসডিপি অফারে সমস্ত মিডিয়া বিবরণের জন্য 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 ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:

  1. একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন: chrome://webrtc-internals
  2. Stats graph for inbound-rtp লেবেলযুক্ত বিভাগে যান।
  3. প্যাকেটগুলি গ্রহণ করা হচ্ছে কিনা তা দেখতে প্রতিটি অডিও গ্রাফ পরিদর্শন করুন।

আপনি যদি 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 ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:

  1. একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন: chrome://webrtc-internals
  2. Stats graph for inbound-rtp লেবেলযুক্ত বিভাগে যান।
  3. প্যাকেট গৃহীত হচ্ছে কিনা তা দেখতে প্রতিটি ভিডিও গ্রাফ পরিদর্শন করুন।

আপনি যদি C++ রেফারেন্স ক্লায়েন্ট ব্যবহার করেন তবে OnVideoFrame কখনো কল করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।

OAuth স্কোপ যাচাই করুন

প্রাথমিক সংযোগের অনুরোধের সাথে যথাযথ সুযোগ সরবরাহ করা হলেই ভিডিওটি প্রেরণ করা হয়। ত্রুটিটি সমাধান করতে, সঠিক OAuth 2.0 স্কোপগুলি সরবরাহ করা নিশ্চিত করুন৷ আরও তথ্যের জন্য, Meet Media API স্কোপ দেখুন।

কনফারেন্স সঠিকভাবে সেট আপ করা হয়েছে তা যাচাই করুন

  • ক্লায়েন্ট Meet সার্ভারের সাথে সংযোগ করলে, এটি স্বয়ংক্রিয়ভাবে কনফারেন্সে ভর্তি হয় না। নিশ্চিত করুন যে আপনি STATE_JOINED অবস্থা সহ সেশন নিয়ন্ত্রণ ডেটা চ্যানেলে একটি সেশন নিয়ন্ত্রণ সংস্থান আপডেট পেয়েছেন।

    {"sessionStatus":{"connectionState":"STATE_JOINED"}}
    
  • নিশ্চিত করুন যে অন্যান্য কনফারেন্স অংশগ্রহণকারীরা আছেন যাদের ভিডিও স্ট্রীমগুলি নিঃশব্দ করা হয়নি৷

ভিডিওর জন্য আপনার সংকেত যাচাই করুন

Meet শুধুমাত্র ভিডিও প্রদান করে যদি এটি SDP অফারে সংকেত থাকে। অফারটিতে অবশ্যই তিনটি পর্যন্ত থাকতে হবে, শুধুমাত্র-রিসিভ, ভিডিও মিডিয়া বিবরণ।

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 একটি বৈধ অফার পায়, তাহলে এটি একটি SDP উত্তরের সাথে n শুধুমাত্র-পাঠানো ভিডিও মিডিয়া বিবরণ সহ প্রতিক্রিয়া জানায়, যেখানে 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 একটি বৈশিষ্ট্য আছে কিনা তা পরীক্ষা করুন।
  • এসডিপি উত্তরে সমান সংখ্যক m=video লাইন আছে কিনা পরীক্ষা করুন।
  • পরীক্ষা করুন যে SDP উত্তরে প্রতিটি m=video লাইনের অধীনে a=sendonly বা a=sendrecv বৈশিষ্ট্যগুলি রয়েছে।
  • Meet সার্ভারে একটি সফল VideoAssignmentRequest পাঠানো হয়েছে এবং পেয়েছে কিনা চেক করুন। সাফল্য বা ব্যর্থতা একই ডেটা চ্যানেল জুড়ে ক্লায়েন্টের সাথে যোগাযোগ করা উচিত।

প্রত্যাশিত চেয়ে কম ভিডিও স্ট্রিমের সমস্যা সমাধান করুন

  • পরীক্ষা করুন যে 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 ক্লায়েন্টের সাথে সামঞ্জস্যপূর্ণ নয়। আপনার অ্যাপ যোগদান করতে সক্ষম হবে না, তাই আপনি এটি আপনার শেষ ব্যবহারকারীদের সাথে যোগাযোগ করতে পারেন।
CONNECTIONS_EXHAUSTED একবারে শুধুমাত্র একটি Meet Media API ক্লায়েন্ট একটি কনফারেন্সে সংযুক্ত হতে পারে। আপনার অ্যাপ ক্র্যাশ হলে, এটি পুনরায় সংযোগ করার চেষ্টা করলে আপনি এই ত্রুটিটি দেখতে পারেন। এই ক্ষেত্রে, Meet পূর্ববর্তী সংযোগের সময়সীমা শেষ হওয়ার জন্য প্রায় 30 সেকেন্ড অপেক্ষা করুন। তারপর, আবার চেষ্টা করুন.

একীভূত পরিকল্পনা

যদি ডেটা চ্যানেল কখনই না খোলে এবং আপনি কখনই অডিও বা ভিডিও না পান, তবে স্থানীয় পিয়ার সংযোগ কনফিগার করার সময় শুধুমাত্র ইউনিফাইড প্ল্যান ব্যবহার করা হয়েছে কিনা তা পরীক্ষা করুন।

মিডিয়া বর্ণনা অর্ডার ত্রুটি

একটি সেশন বর্ণনা প্রোটোকল (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 অফারের মিডিয়া বিবরণের সাথে মেলে না:

SDP অফার SDP উত্তর
m=audio 9 UDP/TLS/RTP/SAVPF 111m=audio 9 UDP/TLS/RTP/SAVPF 111
m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99m=audio 9 UDP/TLS/RTP/SAVPF 111
m=audio 9 UDP/TLS/RTP/SAVPF 111m=audio 9 UDP/TLS/RTP/SAVPF 111
m=audio 9 UDP/TLS/RTP/SAVPF 111m=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].

এসডিপি অফারে সমস্ত মিডিয়া বিবরণের জন্য 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 ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:

  1. একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন: chrome://webrtc-internals
  2. Stats graph for inbound-rtp লেবেলযুক্ত বিভাগে যান।
  3. প্যাকেটগুলি গ্রহণ করা হচ্ছে কিনা তা দেখতে প্রতিটি অডিও গ্রাফ পরিদর্শন করুন।

আপনি যদি 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 ব্রাউজারে ওয়েব ক্লায়েন্ট ব্যবহার করেন:

  1. একটি নতুন ট্যাব খুলুন এবং ঠিকানা বারে প্রবেশ করুন: chrome://webrtc-internals
  2. Stats graph for inbound-rtp লেবেলযুক্ত বিভাগে যান।
  3. প্যাকেট গৃহীত হচ্ছে কিনা তা দেখতে প্রতিটি ভিডিও গ্রাফ পরিদর্শন করুন।

আপনি যদি C++ রেফারেন্স ক্লায়েন্ট ব্যবহার করেন তবে OnVideoFrame কখনো কল করা হয়েছে কিনা তা পরীক্ষা করে দেখুন।

OAuth স্কোপ যাচাই করুন

প্রাথমিক সংযোগের অনুরোধের সাথে যথাযথ সুযোগ সরবরাহ করা হলেই ভিডিওটি প্রেরণ করা হয়। ত্রুটিটি সমাধান করতে, সঠিক OAuth 2.0 স্কোপগুলি সরবরাহ করা নিশ্চিত করুন৷ আরও তথ্যের জন্য, Meet Media API স্কোপ দেখুন।

কনফারেন্স সঠিকভাবে সেট আপ করা হয়েছে তা যাচাই করুন

  • ক্লায়েন্ট Meet সার্ভারের সাথে সংযোগ করলে, এটি স্বয়ংক্রিয়ভাবে কনফারেন্সে ভর্তি হয় না। নিশ্চিত করুন যে আপনি STATE_JOINED অবস্থা সহ সেশন নিয়ন্ত্রণ ডেটা চ্যানেলে একটি সেশন নিয়ন্ত্রণ সংস্থান আপডেট পেয়েছেন।

    {"sessionStatus":{"connectionState":"STATE_JOINED"}}
    
  • নিশ্চিত করুন যে অন্যান্য কনফারেন্স অংশগ্রহণকারীরা আছেন যাদের ভিডিও স্ট্রীমগুলি নিঃশব্দ করা হয়নি৷

ভিডিওর জন্য আপনার সংকেত যাচাই করুন

Meet শুধুমাত্র ভিডিও প্রদান করে যদি এটি SDP অফারে সংকেত থাকে। অফারটিতে অবশ্যই তিনটি পর্যন্ত থাকতে হবে, শুধুমাত্র-প্রাপ্ত, ভিডিও মিডিয়া বিবরণ।

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 একটি বৈধ অফার পায়, তাহলে এটি একটি SDP উত্তরের সাথে n শুধুমাত্র-পাঠানো ভিডিও মিডিয়া বিবরণ সহ প্রতিক্রিয়া জানায়, যেখানে 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 একটি বৈশিষ্ট্য আছে কিনা তা পরীক্ষা করুন।
  • এসডিপি উত্তরে সমান সংখ্যক m=video লাইন আছে কিনা পরীক্ষা করুন।
  • পরীক্ষা করুন যে SDP উত্তরে প্রতিটি m=video লাইনের অধীনে a=sendonly বা a=sendrecv বৈশিষ্ট্যগুলি রয়েছে।
  • Meet সার্ভারে একটি সফল VideoAssignmentRequest পাঠানো হয়েছে এবং পেয়েছে কিনা চেক করুন। সাফল্য বা ব্যর্থতা একই ডেটা চ্যানেল জুড়ে ক্লায়েন্টের সাথে যোগাযোগ করা উচিত।

প্রত্যাশিত চেয়ে কম ভিডিও স্ট্রিমের সমস্যা সমাধান করুন

  • পরীক্ষা করুন যে SDP অফারে সঠিক সংখ্যক m=video … লাইন রয়েছে।
  • নিশ্চিত করুন যে SDP উত্তরের সমস্ত m=video বিবরণে হয় a=sendonly অথবা a=sendrecv বৈশিষ্ট্য রয়েছে। উত্তরে a=recvonly চিহ্নিত যেকোনো লাইন ক্লায়েন্টকে পাঠানো স্ট্রিমের পরিমাণ কমিয়ে দেয়।

আপনার পর্যবেক্ষক বাস্তবায়ন পরীক্ষা করুন

আপনি যদি ডেটা প্রসেসিংকে একটি ভিন্ন থ্রেডে নিয়ে যান তাহলে ভিডিও ডেটার কপি করতে ভুলবেন না। VideoFrame.frame কার্যকরভাবে অন্তর্নিহিত ডেটার একটি রেফারেন্স, তাই OnVideoFrame পরে এটি অ্যাক্সেস করার চেষ্টা করার ফলে অনির্ধারিত আচরণ হবে, যেমন একটি বিভাজন ত্রুটি।