إحصائيات جودة الوسائط
لمساعدتك على فهم جودة الوسائط في 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
= 1dataPointsPerAggregation
= 60
summaryReported
يتم رفع الحدث كل 60 ثانية ويحتوي على 60 وحدة فريدة لكل إحصائية مسجلة.
إذا قمت بتعيين القيم التالية:
aggregatinInterval
= 60dataPointsPerAggregation
= 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 في إصدار التوفر العام هذا.
في إصدارات بيتا السابقة، pairRttInMs
availableBitrate
، تم تضمينها في إحصائيات الصوت والفيديو والشاشة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 |
العدد الإجمالي للحزم المرسلة. |
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ