إحصائيات جودة الوسائط

لمساعدتك على فهم جودة الوسائط في VoIP ومكالمات الفيديو التي تستخدم Azure Communication Services، هناك ميزة تسمى إحصائيات جودة الوسائط. استخدمه لفحص مقاييس جودة الصوت والفيديو ومشاركة الشاشة منخفضة المستوى لمقاييس المكالمات الواردة والصادرة.

إحصائيات جودة الوسائط لمكالمة مستمرة

هام

هناك تحديث لواجهة إحصائيات جودة الوسائط في SDK، بدءا من إصدار SDK 1.20.1

إحصائيات جودة الوسائط هي ميزة موسعة لواجهة برمجة التطبيقات الأساسية Call . تحتاج أولا إلى الحصول على mediaStatsFeature كائن API:

const mediaStatsFeature = call.feature(Features.MediaStats);

لتلقي بيانات إحصائيات الوسائط، يمكنك الاشتراك في sampleReported الحدث أو summaryReported الحدث.

sampleReported يتم تشغيل الحدث كل ثانية. إنه مناسب كمصدر بيانات لعرض واجهة المستخدم أو مسار البيانات الخاص بك.

summaryReported يحتوي الحدث على القيم المجمعة للبيانات على فترات زمنية، وهو أمر مفيد عندما تحتاج فقط إلى ملخص.

إذا كنت تريد التحكم في الفاصل الزمني للحدث summaryReported ، فستحتاج إلى تعريف mediaStatsCollectorOptions النوع MediaStatsCollectorOptions. وإلا، يستخدم SDK القيم الافتراضية.

const mediaStatsCollectorOptions: SDK.MediaStatsCollectorOptions = {
    aggregationInterval: 10,
    dataPointsPerAggregation: 6
};

const mediaStatsCollector = mediaStatsFeature.createCollector(mediaStatsSubscriptionOptions);

mediaStatsCollector.on('sampleReported', (sample) => {
    console.log('media stats sample', sample);
});

mediaStatsCollector.on('summaryReported', (summary) => {
    console.log('media stats summary', summary);
});

في حالة عدم الحاجة إلى استخدام مجمع إحصائيات الوسائط، يمكنك استدعاء dispose أسلوب .mediaStatsCollector

mediaStatsCollector.dispose();

ليس من الضروري استدعاء dispose طريقة في mediaStatsCollector كل مرة تنتهي فيها المكالمة، حيث تتم استعادة المجمع داخليا عند انتهاء المكالمة.

MediaStatsCollectorOptions

MediaStatsCollectorOptions هو اختياري، وهناك حقلان اختياريان في MediaStatsCollectorOptions.

  • aggregationInterval هو الفاصل الزمني، بالثوان، الذي يتم تجميع الإحصائيات فيه. القيمة الافتراضية هي 10.
  • dataPointsPerAggregation يحدد عدد نقاط البيانات التي يحتويها كل حدث تجميع. القيمة الافتراضية هي 6.

تحدد هاتين القيمتين معدل تكرار إصدار summaryReported SDK للحدث وعدد نقاط البيانات المجمعة المضمنة في التقرير.

الحدث يرفع summaryReported كل aggregationInterval * dataPointsPerAggregation ثانية.

على سبيل المثال، إذا قمت بتعيين القيم التالية:

  • aggregationInterval = 1
  • dataPointsPerAggregation = 60

summaryReported يتم رفع الحدث كل 60 ثانية ويحتوي على 60 وحدة فريدة لكل إحصائية مسجلة.

إذا قمت بتعيين القيم التالية:

  • aggregatinInterval = 60
  • dataPointsPerAggregation = 1

summaryReported يتم رفع الحدث كل 60 ثانية ويحتوي على وحدة فريدة واحدة لكل إحصائية مسجلة.

أفضل الممارسات

إذا كنت ترغب في جمع البيانات للفحص دون اتصال، نوصي بجمع البيانات وإرسالها إلى استيعاب البنية الأساسية لبرنامج ربط العمليات التجارية بعد انتهاء المكالمة. إذا قمت بإرسال البيانات أثناء المكالمة، فقد تستخدم النطاق الترددي للإنترنت المطلوب لمتابعة مكالمة Azure Communication Services (خاصة عندما يكون النطاق الترددي المتوفر منخفضا).

في أي sampleReported حدث أو summaryReported حدث، لا تكون بيانات إحصائيات الوسائط مجرد تعيين بسيط لقيمة المفتاح.

فيما يلي تعريف نوع بيانات الحدث التي تم الإبلاغ عنها بواسطة sampleReported الحدث.

export interface MediaStatsReportSample {
    audio: {
        send: OutgoingAudioMediaStats<number, string>[];
        receive: IncomingAudioMediaStats<number, string>[];
    };
    video: {
        send: OutgoingVideoMediaStats<number, string>[];
        receive: IncomingVideoMediaStats<number, string>[];
    };
    screenShare: {
        send: OutgoingScreenShareMediaStats<number, string>[];
        receive: IncomingScreenShareMediaStats<number, string>[];
    };
    transports: TransportMediaStats<number>[];
}

توفر بيانات الحدث بيانات الإحصائيات لكل دفق وسائط في المكالمة، بما في ذلك توجيهات الإرسال والاستقبال.

يوصى بطباعة الحدث باستخدام console.log لمراقبة تغييرات التخطيط والقيمة الخاصة به، حتى تتمكن من العثور على طريقة مناسبة لعرض البيانات أو معالجتها وفقا لسيناريو الاستخدام الخاص بك.

مقاييس إرسال الصوت

اسم قياسي ‏‏الوصف تعليقات
id معرف الإحصائيات يستخدم لتحديد الإحصائيات عبر الأحداث، خاصة عندما تكون هناك إحصائيات متعددة بنفس نوع الوسائط والاتجاه في الحدث.
codecName اسم برنامج الترميز OPUS، G722.
bitrate معدل بت إرسال الصوت (بت في الثانية) القيم العامة في نطاق 24 كيلوبت في الثانية (36-128 كيلوبت في الثانية نموذجي).
jitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
packets العدد الإجمالي للحزم المرسلة.
packetsPerSecond معدل الحزمة (الحزم في الثانية)
packetsLost العدد الإجمالي للحزم المفقودة التي تم الإبلاغ عنها من النهاية البعيدة.
packetsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.
rttInMs وقت الرحلة ذهابا وإيابا (مللي ثانية) أقل هو أفضل. محسوب من تقرير جهاز استقبال RTCP. نوصي بوقت ذهاب وإياب 200 مللي ثانية أو أقل.
audioInputLevel مستوى صوت الصوت من الميكروفون تتراوح القيمة من 0 إلى 65536. تمثل القيمة 0 الصمت.
transportId معرف النقل يستخدم لربط الإحصائيات في وسائل النقل.

مقاييس تلقي الصوت

في إصدارات SDK التي تزيد عن 1.20.1، jitterBufferDelayInMs كانت موجودة ك jitterBufferInMs.

اسم قياسي ‏‏الوصف تعليقات
id معرف الإحصائيات يستخدم لتحديد الإحصائيات عبر الأحداث، خاصة عندما تكون هناك إحصائيات متعددة بنفس نوع الوسائط والاتجاه في الحدث.
codecName اسم برنامج الترميز OPUS، G722.
bitrate معدل البت لاستلام الصوت (بت في الثانية) القيم العامة في نطاق 24 كيلوبت في الثانية (36-128 كيلوبت في الثانية نموذجي).
jitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
packets العدد الإجمالي للحزم المستلمة.
packetsPerSecond معدل الحزمة (الحزم في الثانية)
packetsLost العدد الإجمالي للحزم المفقودة.
packetsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.
jitterBufferDelayInMs مخزن مؤقت للتشويش (مللي ثانية) أقل هو أفضل. يتم استخدام المخزن المؤقت للتشويه للتشغيل السلس. هذه القيمة هي المدة التي تبقى فيها حزم العينات في المخزن المؤقت للتشويه.
audioOutputLevel مستوى صوت الصوت من دفق الاستلام تتراوح القيمة من 0 إلى 65536. تمثل القيمة 0 الصمت.
healedRatio نسبة العينات المخفية (باستثناء silentConcealedSamples) إلى إجمالي العينات المستلمة المعلومات فقط.
transportId معرف النقل يستخدم لربط الإحصائيات في وسائل النقل.

مقاييس إرسال الفيديو

بدءا من الإصدار 1.20.1 من SDK، تضمنت altLayouts مقاييس إرسال الفيديو حقل القياس، والذي يسمح بتمثيل أفضل لإحصائيات دفق المحاكاة.

اسم قياسي ‏‏الوصف تعليقات
id معرف الإحصائيات يستخدم لتحديد الإحصائيات عبر الأحداث، خاصة عندما تكون هناك إحصائيات متعددة بنفس نوع الوسائط والاتجاه في الحدث.
codecName اسم برنامج الترميز H264، VP8، VP9.
bitrate معدل البت لإرسال الفيديو (بت في الثانية)
jitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
packets العدد الإجمالي للحزم المرسلة.
packetsPerSecond معدل الحزمة (الحزم في الثانية)
packetsLost العدد الإجمالي للحزم المفقودة التي تم الإبلاغ عنها من النهاية البعيدة.
packetsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.
rttInMs وقت الرحلة ذهابا وإيابا (مللي ثانية) أقل هو أفضل. محسوب من تقرير جهاز استقبال RTCP. نوصي بوقت ذهاب وإياب 200 مللي ثانية أو أقل.
frameRateInput معدل الإطارات الذي ينشأ من مصدر الفيديو (إطارات في الثانية)
frameWidthInput عرض الإطار للإطار الأخير الذي ينشأ من مصدر الفيديو (بكسل)
frameHeightInput ارتفاع الإطار للإطار الأخير الذي ينشأ من مصدر الفيديو (بكسل)
framesEncoded عدد الإطارات التي تم ترميزها بنجاح لدفق RTP.
frameRateEncoded تم ترميز معدل الإطار بنجاح لدفق RTP (إطارات في الثانية)
framesSent عدد الإطارات المرسلة على دفق RTP
frameRateSent معدل الإطارات المرسل على دفق RTP (إطارات في الثانية)
frameWidthSent عرض الإطار للإطار المشفر (بكسل)
frameHeightSent ارتفاع الإطار للإطار المشفر (بكسل)
keyFramesEncoded تم ترميز الإطارات الرئيسية بنجاح لدفق RTP
transportId معرف النقل يستخدم لربط الإحصائيات في وسائل النقل.
altLayouts تدفقات Simulcast altLayouts يحتوي على نفس المقاييس لإرسال الفيديو

مقاييس تلقي الفيديو

في إصدارات SDK الأقدم من 1.20.1، jitterBufferDelayInMs كانت موجودة ك jitterBufferInMs.

اسم قياسي ‏‏الوصف تعليقات
id معرف الإحصائيات يستخدم لتحديد الإحصائيات عبر الأحداث، خاصة عندما تكون هناك إحصائيات متعددة بنفس نوع الوسائط والاتجاه في الحدث.
codecName اسم برنامج الترميز H264، VP8، VP9.
bitrate معدل البت لاستلام الفيديو (بت في الثانية)
jitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
packets العدد الإجمالي للحزم المستلمة.
packetsPerSecond معدل الحزمة (الحزم في الثانية)
packetsLost العدد الإجمالي للحزم المفقودة.
packetsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.
rttInMs وقت الرحلة ذهابا وإيابا (مللي ثانية) أقل هو أفضل. محسوب من تقرير مرسل RTCP. نوصي بوقت ذهاب وإياب 200 مللي ثانية أو أقل.
streamId معرف الدفق streamId تتوافق القيمة مع id في VideoStreamCommon. يمكن استخدامه لمطابقة المرسل.
jitterBufferDelayInMs مخزن مؤقت للتشويش (مللي ثانية) أقل هو أفضل. يتم استخدام المخزن المؤقت للتشويه للتشغيل السلس. هذه القيمة هي المدة التي تبقى فيها حزم الإطارات في المخزن المؤقت للتشويه.
frameRateDecoded تم فك ترميز معدل الإطار بشكل صحيح لدفق RTP (إطارات في الثانية)
frameRateReceived معدل الإطار المستلم على دفق RTP (إطارات في الثانية)
frameWidthReceived عرض الإطار للإطار الذي تم فك ترميزه (بكسل)
frameHeightReceived ارتفاع إطار الإطار الذي تم فك ترميزه (بكسل)
longestFreezeDurationInMs أطول مدة تجميد (مللي ثانية)
totalFreezeDurationInMs إجمالي مدة التجميد (مللي ثانية)
framesReceived إجمالي عدد الإطارات المستلمة على دفق RTP
framesDecoded إجمالي عدد الإطارات التي تم فك ترميزها بشكل صحيح لدفق RTP
framesDropped إجمالي عدد الإطارات التي تم إسقاطها
keyFramesDecoded إجمالي عدد الإطارات الرئيسية التي تم فك ترميزها بشكل صحيح لدفق RTP
transportId معرف النقل يستخدم لربط الإحصائيات في وسائل النقل.

مقاييس إرسال مشاركة الشاشة

حاليا، حقول الإحصائيات هي نفس مقاييس إرسال الفيديو.

مقاييس تلقي مشاركة الشاشة

حاليا، حقول الإحصائيات هي نفس مقاييس تلقي الفيديو.

مقاييس النقل

تم فصل المقاييس المتعلقة بالنقل بعد ACS Web SDK 1.20.1.

في الإصدارات السابقة، rttInMs كانت موجودة كما pairRttInMs في إحصائيات الصوت والفيديو وشاشة المشاركة.

availableIncomingBitrate كان availableBitrate في إحصائيات الاستلام للصوت والفيديو والشاشةShare.

availableOutgoingBitrate كان availableBitrate في إحصائيات الإرسال للصوت والفيديو والشاشةShare.

اسم قياسي ‏‏الوصف تعليقات
id معرف النقل يستخدم للربط ب transportId في إحصائيات أخرى
rttInMs وقت الرحلة ذهابا وإيابا (مللي ثانية) يتم حساب القيمة من فحص اتصال STUN. نوصي بوقت ذهاب وإياب 200 مللي ثانية أو أقل.
availableIncomingBitrate تقدير النطاق الترددي (بت في الثانية) قد لا تتوفر القيمة اعتمادا على خوارزمية تقدير النطاق الترددي المستخدمة في جلسة WebRTC
availableOutgoingBitrate تقدير النطاق الترددي (بت في الثانية) قد لا تتوفر القيمة اعتمادا على خوارزمية تقدير النطاق الترددي المستخدمة في جلسة WebRTC

ما الذي تم تغييره في إصدار SDK 1.20.1 (GA)

ندعم الآن واجهة برمجة تطبيقات ميزة MediaStats في 1.20.1 (GA). بالمقارنة مع إصدارات بيتا السابقة، قمنا أيضا بإجراء بعض التغييرات الطفيفة على واجهة API في إصدار التوفر العام هذا.

في إصدارات بيتا السابقة، pairRttInMsavailableBitrate ، تم تضمينها في إحصائيات الصوت والفيديو والشاشةShare. الآن، تم فصل هذه المقاييس إلى مقاييس النقل.

قدمنا packets، packetsLost حقول القياس في إحصائيات الصوت والفيديو والشاشة. هذه المقاييس مفيدة لحساب العدد الإجمالي للحزم المرسلة أو المستلمة بين نقطتين زمنيتين مختلفتين.

frameRateOutput تتم إزالة إحصائيات مشاركة الفيديو والشاشة. يمكنك استخدام frameRateDecoded بدلا من ذلك.

تمت إعادة تسمية jitterBufferDelayInMs حقل jitterBufferInMs القياس لتوفير وصف أكثر وضوحا، حيث يشير هذا المقياس إلى مدة بقاء الحزمة في المخزن المؤقت للتشويه.

إحصائيات جودة الوسائط لمكالمة مستمرة

إحصائيات جودة الوسائط هي ميزة موسعة لواجهة برمجة التطبيقات الأساسية Call . تحتاج أولا إلى الحصول على MediaStatisticsCallFeature كائن API:

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.feature(Features.MEDIA_STATISTICS);

يحتوي MediaStatisticsCallFeature الكائن على بنية واجهة برمجة التطبيقات التالية:

  • يستمع OnReportReceivedListener الحدث للتقارير الدورية لإحصائيات الوسائط.
  • getReportIntervalInSeconds يحصل على الفاصل الزمني، بالثوان، لإنشاء تقرير إحصائيات الوسائط. تستخدم 10 SDK الثانية كافتراضية.
  • updateReportIntervalInSeconds() يحدث الفاصل الزمني، بالثوان، لإنشاء تقرير إحصائيات الوسائط. تستخدم 10 SDK الثانية كافتراضية.
  • MediaStatisticsReport يحتوي على تعريف إحصائيات الوسائط الصادرة والواردة، مصنفة حسب الصوت والفيديو ومشاركة الشاشة.
    • getOutgoingStatistics(): قائمة إحصائيات الوسائط للوسائط الصادرة.
      • getAudioStatistics(): قائمة إحصائيات الوسائط للصوت الصادر.
      • getVideoStatistics(): قائمة إحصائيات الوسائط للفيديو الصادر.
      • getScreenShareStatistics(): قائمة إحصائيات الوسائط لمشاركة الشاشة الصادرة.
      • getDataChannelStatistics(): قائمة إحصائيات الوسائط لقناة البيانات.
    • getIncomingStatistics(): قائمة إحصائيات الوسائط للوسائط الواردة.
      • getAudioStatistics(): قائمة إحصائيات الوسائط للصوت الوارد.
      • getVideoStatistics(): قائمة إحصائيات الوسائط للفيديو الوارد.
      • getScreenShareStatistics(): قائمة إحصائيات الوسائط لمشاركة الشاشة الواردة.
      • getDataChannelStatistics(): قائمة إحصائيات الوسائط لقناة البيانات.
    • getLastUpdatedAt(): تاريخ إنشاء التقرير.

بعد ذلك، اشترك في addOnReportReceivedListener الحدث للحصول على تحديثات منتظمة حول إحصائيات جودة الوسائط الحالية:

mediaStatisticsCallFeature.addOnReportReceivedListener(handleReportReceivedListener);
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportIntervalInSeconds(15);

private void handleReportReceivedListener(MediaStatisticssReportEvent args) {
    // Obtain the media statistics report instance
    MediaStatisticsReport report = args.getReport();

    // Obtain the outgoing media statistics for audio
    List<OutgoingAudioStatistics> outgoingAudioStatistics = report.getOutgoingStatistics().getAudioStatistics();

    // Obtain the outgoing media statistics for video
    List<OutgoingVideoStatistics> outgoingVideoStatistics = report.getOutgoingStatistics().getVideoStatistics();

    // Obtain the outgoing media statistics for screen share
    List<OutgoingScreenShareStatistics> outgoingScreenShareStatistics = report.getOutgoingStatistics().getScreenShareStatistics();

    // Obtain the outgoing media statistics for data channel
    List<OutgoingDataChannelStatistics> outgoingDataChannelStatistics = report.getOutgoingStatistics().getDataChannelStatistics();

    // Obtain the incoming media statistics for audio
    List<IncomingAudioStatistics> incomingAudioStatistics = report.getIncomingStatistics().getAudioStatistics();

    // Obtain the incoming media statistics for video
    List<IncomingVideoStatistics> incomingVideoStatistics = report.getIncomingStatistics().getVideoStatistics();

    // Obtain the incoming media statistics for screen share
    List<IncomingScreenShareStatistics> incomingScreenShareStatistics = report.getIncomingStatistics().getScreenShareStatistics();

    // Obtain the incoming media statistics for data channel
    List<IncomingDataChannelStatistics> incomingDataChannelStatistics = report.getIncomingStatistics().getDataChannelStatistics();
}

أفضل الممارسات

إذا كنت ترغب في جمع البيانات للفحص دون اتصال، نوصي بجمع البيانات وإرسالها إلى استيعاب البنية الأساسية لبرنامج ربط العمليات التجارية بعد انتهاء المكالمة. إذا قمت بإرسال البيانات أثناء المكالمة، فقد تستخدم النطاق الترددي للإنترنت المطلوب لمتابعة مكالمة Azure Communication Services (خاصة عندما يكون النطاق الترددي المتوفر منخفضا).

مقاييس الصوت الصادرة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لإرسال الصوت (بت في الثانية) القيم العامة في نطاق 24 كيلوبت في الثانية (36-128 كيلوبت في الثانية نموذجي).
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.

مقاييس الصوت الواردة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.
PacketsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.

مقاييس الفيديو الصادرة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لإرسال الفيديو (بت في الثانية)
PacketCount العدد الإجمالي للحزم المرسلة.
FrameRate معدل الإطارات المرسل على دفق RTP (إطارات في الثانية)
FrameWidth عرض الإطار للإطار المشفر (بالبكسل)
FrameHeight ارتفاع الإطار للإطار المشفر (بالبكسل)

مقاييس الفيديو الواردة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لاستلام الفيديو (بت في الثانية)
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.
PacketsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.
StreamId معرف الدفق streamId تتوافق القيمة مع معرف الفيديو للمشارك البعيد. يمكن استخدامه لمطابقة المرسل.
FrameRate معدل الإطار المستلم على دفق RTP (إطارات في الثانية)
FrameWidth عرض الإطار للإطار الذي تم فك ترميزه (بالبكسل)
FrameHeight ارتفاع الإطار للإطار الذي تم فك ترميزه (بالبكسل)
TotalFreezeDurationInMs إجمالي مدة التجميد (مللي ثانية)

مقاييس مشاركة الشاشة الصادرة

حاليا، حقول الإحصائيات هي نفسها مقاييس الفيديو الصادرة.

مقاييس مشاركة الشاشة الواردة

حاليا، حقول الإحصائيات هي نفس مقاييس الفيديو الواردة.

مقاييس قناة البيانات الصادرة

اسم قياسي ‏‏الوصف تعليقات
PacketCount العدد الإجمالي للحزم المرسلة.

مقاييس قناة البيانات الواردة

اسم قياسي ‏‏الوصف تعليقات
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.

إحصائيات جودة الوسائط لمكالمة مستمرة

إحصائيات جودة الوسائط هي ميزة موسعة لواجهة برمجة التطبيقات الأساسية Call . تحتاج أولا إلى الحصول على mediaStatisticsCallFeature كائن API:

var mediaStatisticsCallFeature = self.call.feature(Features.mediaStatistics)

يحتوي mediaStatisticsCallFeature الكائن على بنية واجهة برمجة التطبيقات التالية:

  • يستمع didReceiveReport أسلوب المفوض للتقارير الدورية لإحصائيات الوسائط.
  • reportIntervalInSeconds يحصل على الفاصل الزمني، بالثوان، لإنشاء تقرير إحصائيات الوسائط. تستخدم 10 SDK الثانية كافتراضية.
  • updateReportInterval(inSeconds) يحدث الفاصل الزمني، بالثوان، لإنشاء تقرير إحصائيات الوسائط. تستخدم 10 SDK الثانية كافتراضية.
  • MediaStatisticsReport يحتوي الكائن على تعريف إحصائيات الوسائط الصادرة والواردة، مصنفة حسب الصوت والفيديو ومشاركة الشاشة.
    • outgoingMediaStatistics: قائمة إحصائيات الوسائط للوسائط الصادرة.
      • audio: قائمة إحصائيات الوسائط للصوت الصادر.
      • video: قائمة إحصائيات الوسائط للفيديو الصادر.
      • screenShare: قائمة إحصائيات الوسائط لمشاركة الشاشة الصادرة.
      • dataChannel: قائمة إحصائيات الوسائط لقناة البيانات الصادرة.
    • incomingMediaStatistics: قائمة إحصائيات الوسائط للوسائط الواردة.
      • audio: قائمة إحصائيات الوسائط للصوت الوارد.
      • video: قائمة إحصائيات الوسائط للفيديو الوارد.
      • screenShare: قائمة إحصائيات الوسائط لمشاركة الشاشة الواردة.
      • dataChannel: قائمة إحصائيات الوسائط لقناة البيانات الواردة.
    • lastUpdated: تاريخ إنشاء التقرير.

بعد ذلك، قم بتنفيذ didReceiveReport المفوض للحصول على تحديثات منتظمة حول إحصائيات جودة الوسائط الحالية:

// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.updateReportInterval(inSeconds: 15)
mediaStatisticsCallFeature.delegate = MediaStatisticsDelegate()


public class MediaStatisticsDelegate : MediaStatisticsCallFeatureDelegate
{
    public func mediaStatisticsCallFeature(_ mediaStatisticsCallFeature: MediaStatisticsCallFeature,
                                      didReceiveReport args: MediaStatisticsReportReceivedEventArgs) {
        let report = args.report

        // Obtain the outgoing media statistics for audio
        let outgoingAudioStatistics = report.outgoingStatistics.audio
    
        // Obtain the outgoing media statistics for video
        let outgoingVideoStatistics = report.outgoingStatistics.video
    
        // Obtain the outgoing media statistics for screen share
        let outgoingScreenShareStatistics = report.outgoingStatistics.screenShare

        // Obtain the outgoing media statistics for data channel
        let outgoingDataChannelStatistics = report.outgoingStatistics.dataChannel
    
        // Obtain the incoming media statistics for audio
        let incomingAudioStatistics = report.incomingStatistics.audio
    
        // Obtain the incoming media statistics for video
        let incomingVideoStatistics = report.incomingStatistics.video
    
        // Obtain the incoming media statistics for screen share
        let incomingScreenShareStatistics = report.incomingStatistics.screenShare

        // Obtain the incoming media statistics for data channel
        let incomingDataChannelStatistics = report.incomingStatistics.dataChannel
    }
}

أفضل الممارسات

إذا كنت ترغب في جمع البيانات للفحص دون اتصال، نوصي بجمع البيانات وإرسالها إلى استيعاب البنية الأساسية لبرنامج ربط العمليات التجارية بعد انتهاء المكالمة. إذا قمت بإرسال البيانات أثناء المكالمة، فقد تستخدم النطاق الترددي للإنترنت المطلوب لمتابعة مكالمة Azure Communication Services (خاصة عندما يكون النطاق الترددي المتوفر منخفضا).

مقاييس الصوت الصادرة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لإرسال الصوت (بت في الثانية) القيم العامة في نطاق 24 كيلوبت في الثانية (36-128 كيلوبت في الثانية نموذجي).
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.

مقاييس الصوت الواردة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.
PacketsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.

مقاييس الفيديو الصادرة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لإرسال الفيديو (بت في الثانية)
PacketCount العدد الإجمالي للحزم المرسلة.
FrameRate معدل الإطارات المرسل على دفق RTP (إطارات في الثانية)
FrameWidth عرض الإطار للإطار المشفر (بالبكسل)
FrameHeight ارتفاع الإطار للإطار المشفر (بالبكسل)

مقاييس الفيديو الواردة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لاستلام الفيديو (بت في الثانية)
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.
PacketsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.
StreamId معرف الدفق streamId تتوافق القيمة مع معرف الفيديو للمشارك البعيد. يمكن استخدامه لمطابقة المرسل.
FrameRate معدل الإطار المستلم على دفق RTP (إطارات في الثانية)
FrameWidth عرض الإطار للإطار الذي تم فك ترميزه (بالبكسل)
FrameHeight ارتفاع الإطار للإطار الذي تم فك ترميزه (بالبكسل)
TotalFreezeDurationInMs إجمالي مدة التجميد (مللي ثانية)

مقاييس مشاركة الشاشة الصادرة

حاليا، حقول الإحصائيات هي نفسها مقاييس الفيديو الصادرة.

مقاييس مشاركة الشاشة الواردة

حاليا، حقول الإحصائيات هي نفس مقاييس الفيديو الواردة.

مقاييس قناة البيانات الصادرة

اسم قياسي ‏‏الوصف تعليقات
PacketCount العدد الإجمالي للحزم المرسلة.

مقاييس قناة البيانات الواردة

اسم قياسي ‏‏الوصف تعليقات
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.

إحصائيات جودة الوسائط لمكالمة مستمرة

إحصائيات جودة الوسائط هي ميزة موسعة لواجهة برمجة التطبيقات الأساسية CommunicationCall . تحتاج أولا إلى الحصول على MediaStatisticsCallFeature كائن API:

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;

يحتوي عنصر الميزة MediaStatisticsCallFeature على بنية واجهة برمجة التطبيقات التالية:

  • يستمع ReportReceived الحدث للتقارير الدورية لإحصائيات الوسائط.
  • ReportIntervalInSeconds يحصل على الفاصل الزمني، بالثوان، لإنشاء تقرير إحصائيات الوسائط. تستخدم 10 SDK الثانية كافتراضية.
  • UpdateReportIntervalInSeconds() يحدث الفاصل الزمني، بالثوان، لإنشاء تقرير إحصائيات الوسائط. تستخدم 10 SDK الثانية كافتراضية.
  • MediaStatisticsReport يحتوي الكائن على تعريف إحصائيات الوسائط الصادرة والواردة، مصنفة حسب الصوت والفيديو ومشاركة الشاشة.
    • OutgoingMediaStatistics: قائمة إحصائيات الوسائط للوسائط الصادرة.
      • Audio: قائمة إحصائيات الوسائط للصوت الصادر.
      • Video: قائمة إحصائيات الوسائط للفيديو الصادر.
      • ScreenShare: قائمة إحصائيات الوسائط لمشاركة الشاشة الصادرة.
      • DataChannel: قائمة إحصائيات الوسائط لقناة البيانات الصادرة.
    • IncomingMediaStatistics: قائمة إحصائيات الوسائط للوسائط الواردة.
      • Audio: قائمة إحصائيات الوسائط للصوت الوارد.
      • Video: قائمة إحصائيات الوسائط للفيديو الوارد.
      • ScreenShare: قائمة إحصائيات الوسائط لمشاركة الشاشة الواردة.
      • DataChannel: قائمة إحصائيات الوسائط لقناة البيانات الواردة.
    • LastUpdateAt: تاريخ إنشاء التقرير.

بعد ذلك، اشترك في SampleReported الحدث للحصول على تحديثات منتظمة حول إحصائيات جودة الوسائط الحالية:

mediaStatisticsCallFeature.ReportReceived += MediaStatisticsCallFeature_ReportReceived;
// Optionally, set the interval for media statistics report generation
mediaStatisticsCallFeature.UpdateReportIntervalInSeconds(15);

private void MediaStatisticsCallFeature_ReportReceived(object sender, MediaStatisticsReportReceivedEventArgs args)
    // Obtain the media statistics report instance
    MediaStatisticsReport report = args.Report;

    // Obtain the outgoing media statistics for audio
    IReadOnlyList<OutgoingAudioStatistics> outgoingAudioStatistics = report.OutgoingStatistics.Audio;

    // Obtain the outgoing media statistics for video
    IReadOnlyList<OutgoingVideoStatistics> outgoingVideoStatistics = report.OutgoingStatistics.Video;

    // Obtain the outgoing media statistics for screen share
    IReadOnlyList<OutgoingScreenShareStatistics> outgoingScreenShareStatistics = report.OutgoingStatistics.ScreenShare;

    // Obtain the outgoing media statistics for data channel
    IReadOnlyList<OutgoingDataChannelStatistics> outgoingDataChannelStatistics = report.OutgoingStatistics.DataChannel;

    // Obtain the incoming media statistics for audio
    IReadOnlyList<IncomingAudioStatistics> incomingAudioStatistics = report.IncomingStatistics.Audio;

    // Obtain the incoming media statistics for video
    IReadOnlyList<IncomingVideoStatistics> incomingVideoStatistics = report.IncomingStatistics.Video;

    // Obtain the incoming media statistics for screen share
    IReadOnlyList<IncomingScreenShareStatistics> incomingScreenShareStatistics = report.IncomingStatistics.ScreenShare;

    // Obtain the incoming media statistics for data channel
    IReadOnlyList<IncomingDataChannelStatistics> incomingDataChannelStatistics = report.IncomingStatistics.DataChannel;
}

أفضل الممارسات

إذا كنت ترغب في جمع البيانات للفحص دون اتصال، نوصي بجمع البيانات وإرسالها إلى استيعاب البنية الأساسية لبرنامج ربط العمليات التجارية بعد انتهاء المكالمة. إذا قمت بإرسال البيانات أثناء المكالمة، فقد تستخدم النطاق الترددي للإنترنت المطلوب لمتابعة مكالمة Azure Communication Services (خاصة عندما يكون النطاق الترددي المتوفر منخفضا).

مقاييس الصوت الصادرة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لإرسال الصوت (بت في الثانية) القيم العامة في نطاق 24 كيلوبت في الثانية (36-128 كيلوبت في الثانية نموذجي).
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.

مقاييس الصوت الواردة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.
PacketsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.

مقاييس الفيديو الصادرة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لإرسال الفيديو (بت في الثانية)
PacketCount العدد الإجمالي للحزم المرسلة.
FrameRate معدل الإطارات المرسل على دفق RTP (إطارات في الثانية)
FrameWidth عرض الإطار للإطار المشفر (بالبكسل)
FrameHeight ارتفاع الإطار للإطار المشفر (بالبكسل)

مقاييس الفيديو الواردة

اسم قياسي ‏‏الوصف تعليقات
CodecName اسم برنامج الترميز
BitrateInBps معدل البت لاستلام الفيديو (بت في الثانية)
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.
PacketsLostPerSecond معدل فقدان الحزمة (الحزم في الثانية) أقل هو أفضل.
StreamId معرف الدفق streamId تتوافق القيمة مع معرف الفيديو للمشارك البعيد. يمكن استخدامه لمطابقة المرسل.
FrameRate معدل الإطار المستلم على دفق RTP (إطارات في الثانية)
FrameWidth عرض الإطار للإطار الذي تم فك ترميزه (بالبكسل)
FrameHeight ارتفاع الإطار للإطار الذي تم فك ترميزه (بالبكسل)
TotalFreezeDurationInMs إجمالي مدة التجميد (مللي ثانية)

مقاييس مشاركة الشاشة الصادرة

حاليا، حقول الإحصائيات هي نفسها مقاييس الفيديو الصادرة.

مقاييس مشاركة الشاشة الواردة

حاليا، حقول الإحصائيات هي نفس مقاييس الفيديو الواردة.

مقاييس قناة البيانات الصادرة

اسم قياسي ‏‏الوصف تعليقات
PacketCount العدد الإجمالي للحزم المرسلة.

مقاييس قناة البيانات الواردة

اسم قياسي ‏‏الوصف تعليقات
JitterInMs تشويش الحزمة (مللي ثانية) أقل هو أفضل.
PacketCount العدد الإجمالي للحزم المرسلة.