Aracılığıyla paylaş


Medya kalitesi istatistikleri

VoIP'deki medya kalitesini ve Azure İletişim Hizmetleri kullanan görüntülü aramaları anlamanıza yardımcı olmak için medya kalitesi istatistikleri adlı bir özellik vardır. Gelen ve giden arama ölçümleri için düşük düzey ses, video ve ekran paylaşımı kalitesi ölçümlerini incelemek için bunu kullanın.

Devam eden bir çağrı için medya kalitesi istatistikleri

Önemli

SDK'nın 1.20.1 sürümünden başlayarak SDK'da medya kalitesi istatistikleriyle ilgili bir arabirim güncelleştirmesi vardır

Medya kalitesi istatistikleri, çekirdek Call API'nin genişletilmiş bir özelliğidir. Öncelikle API nesnesini edinmeniz mediaStatsFeature gerekir:

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

Medya istatistikleri verilerini almak için olayı veya summaryReported olayı abone sampleReported yapabilirsiniz.

sampleReported olay her saniye tetikler. Kullanıcı arabirimi görüntüleme veya kendi veri işlem hattınız için bir veri kaynağı olarak uygundur.

summaryReported olay, aralıklar içinde verilerin toplanmış değerlerini içerir; bu, yalnızca bir özete ihtiyacınız olduğunda kullanışlıdır.

Olayın aralığı summaryReported üzerinde denetim sahibi olmak istiyorsanız, türünde MediaStatsCollectorOptionstanımlamanız mediaStatsCollectorOptions gerekir. Aksi takdirde SDK varsayılan değerleri kullanır.

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);
});

Medya istatistikleri toplayıcısını kullanmanız gerekmiyorsa yöntemini mediaStatsCollectorçağırabilirsinizdispose.

mediaStatsCollector.dispose();

Toplayıcılar arama dispose mediaStatsCollector sona erdiğinde dahili olarak geri kazanıldığından, çağrı sona erdiğinde yönteminin çağrılması gerekmez.

MediaStatsCollectorOptions

MediaStatsCollectorOptions isteğe bağlıdır ve içinde MediaStatsCollectorOptionsisteğe bağlı iki alan vardır.

  • aggregationInterval saniye cinsinden istatistiklerin toplanmış olduğu aralıktır. Varsayılan değer 10'dur.
  • dataPointsPerAggregation her toplama olayının sahip olduğu veri noktası sayısını tanımlar. Varsayılan değer 6'dır.

Bu iki değer SDK'nın olayı yayma summaryReported sıklığını ve rapora dahil edilen toplu veri noktalarının sayısını belirler.

Olay summaryReported her aggregationInterval * dataPointsPerAggregation saniye tetikler.

Örneğin, aşağıdaki değerleri ayarlarsanız:

  • aggregationInterval = 1
  • dataPointsPerAggregation = 60

Olay summaryReported her 60 saniyede bir oluşturulur ve kaydedilen her istatistik için 60 benzersiz birim içerir.

Aşağıdaki değerleri ayarlarsanız:

  • aggregatinInterval = 60
  • dataPointsPerAggregation = 1

Olay summaryReported her 60 saniyede bir oluşturulur ve kaydedilen her istatistik için 1 benzersiz birim içerir.

En iyi yöntemler

Çevrimdışı inceleme için verileri toplamak istiyorsanız, aramanız sona erdikten sonra verileri toplamanızı ve işlem hattı alımınıza göndermenizi öneririz. Bir arama sırasında verileri iletirseniz, Azure İletişim Hizmetleri çağrısına devam etmek için gereken İnternet bant genişliğini kullanabilir (özellikle kullanılabilir bant genişliği düşük olduğunda).

sampleReported Olay veya summaryReported olayda, medya istatistikleri verileri yalnızca basit bir anahtar-değer eşlemesi değildir.

Olay tarafından sampleReported bildirilen olay verilerinin tür bildirimi aşağıdadır.

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>[];
}

Olay verileri, çağrıdaki her medya akışı için hem gönderme hem de alma yönergeleri de dahil olmak üzere istatistik verilerini sağlar.

Düzeni ve değer değişikliklerini gözlemlemek için kullanarak olayı console.log yazdırmanız önerilir, böylece kullanım senaryonuza göre verileri görüntülemek veya işlemek için uygun bir yol bulabilirsiniz.

Ses gönderme ölçümleri

Ölçüm adı Açıklama Açıklamalar
id İstatistik Kimliği Özellikle bir olayda aynı medya türüne ve yönüne sahip birden çok istatistik olduğunda olaylar genelinde istatistikleri tanımlamak için kullanılır.
codecName Codec adı OPUS, G722.
bitrate Ses gönderme bit hızı (saniye başına bit sayısı) Genel değerler 24 Kb/sn aralığındadır (36-128 Kb/sn tipiktir).
jitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
packets Gönderilen toplam paket sayısı.
packetsPerSecond Paket hızı (saniye başına paket sayısı)
packetsLost Uzak uçtan bildirilen toplam kayıp paket sayısı.
packetsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.
rttInMs Gidiş dönüş süresi (milisaniye) Alt daha iyidir. RTCP alıcı raporundan hesaplanır. 200 ms veya daha kısa bir gidiş dönüş süresi öneririz.
audioInputLevel Mikrofondan ses düzeyi Değer 0 ile 65536 arasında değişir. 0 değeri sessizliği temsil eder.
transportId Aktarım Kimliği Aktarımlardaki istatistikleri ilişkilendirmek için kullanılır.

Ses alma ölçümleri

SDK sürümlerinde 1.20.1'den jitterBufferDelayInMs daha yeni sürümler olarak jitterBufferInMsmevcutdu.

Ölçüm adı Açıklama Açıklamalar
id İstatistik Kimliği Özellikle bir olayda aynı medya türüne ve yönüne sahip birden çok istatistik olduğunda olaylar genelinde istatistikleri tanımlamak için kullanılır.
codecName Codec adı OPUS, G722.
bitrate Ses alma bit hızı (saniye başına bit sayısı) Genel değerler 24 Kb/sn aralığındadır (36-128 Kb/sn tipiktir).
jitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
packets Alınan toplam paket sayısı.
packetsPerSecond Paket hızı (saniye başına paket sayısı)
packetsLost Kaybedilen toplam paket sayısı.
packetsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.
jitterBufferDelayInMs Değişim arabelleği (milisaniye) Alt daha iyidir. Titreşim arabelleği sorunsuz bir şekilde oynanması için kullanılır. Bu değer, örneklerin paketlerinin değişim arabelleğinde ne kadar süre kaldığıdır.
audioOutputLevel Alıcı akıştan ses düzeyi Değer 0 ile 65536 arasında değişir. 0 değeri sessizliği temsil eder.
healedRatio Gizli örneklerin (hariç silentConcealedSamples) toplam alınan örneklere oranı Yalnızca bilgi.
transportId Aktarım Kimliği Aktarımlardaki istatistikleri ilişkilendirmek için kullanılır.

Video gönderme ölçümleri

SDK 1.20.1 sürümünden başlayarak video gönderme ölçümleri, simulcast akış istatistiklerinin daha iyi temsil edilmesini sağlayan ölçüm alanını içerir altLayouts .

Ölçüm adı Açıklama Açıklamalar
id İstatistik Kimliği Özellikle bir olayda aynı medya türüne ve yönüne sahip birden çok istatistik olduğunda olaylar genelinde istatistikleri tanımlamak için kullanılır.
codecName Codec adı H264, VP8, VP9.
bitrate Video gönderme bit hızı (saniye başına bit sayısı)
jitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
packets Gönderilen toplam paket sayısı.
packetsPerSecond Paket hızı (saniye başına paket sayısı)
packetsLost Uzak uçtan bildirilen toplam kayıp paket sayısı.
packetsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.
rttInMs Gidiş dönüş süresi (milisaniye) Alt daha iyidir. RTCP alıcı raporundan hesaplanır. 200 ms veya daha kısa bir gidiş dönüş süresi öneririz.
frameRateInput Video kaynağından kaynaklanan kare hızı (saniyedeki kare sayısı)
frameWidthInput Video kaynağından (piksel) kaynaklanan son karenin çerçeve genişliği
frameHeightInput Video kaynağından (piksel) kaynaklanan son karenin kare yüksekliği
framesEncoded RTP akışı için başarıyla kodlanmış çerçeve sayısı.
frameRateEncoded RTP akışı için kare hızı başarıyla kodlandı (saniye başına kare sayısı)
framesSent RTP akışında gönderilen kare sayısı
frameRateSent RTP akışında gönderilen kare hızı (saniyedeki kare sayısı)
frameWidthSent Kodlanmış çerçevenin çerçeve genişliği (piksel)
frameHeightSent Kodlanmış çerçevenin çerçeve yüksekliği (piksel)
keyFramesEncoded RTP akışı için anahtar çerçeveler başarıyla kodlandı
transportId Aktarım Kimliği Aktarımlardaki istatistikleri ilişkilendirmek için kullanılır.
altLayouts Simulcast akışları altLayouts video gönderiminde aynı ölçümleri içerir

Video alma ölçümleri

1.20.1'den jitterBufferDelayInMs önceki SDK sürümlerinde olarak jitterBufferInMsmevcut.

Ölçüm adı Açıklama Açıklamalar
id İstatistik Kimliği Özellikle bir olayda aynı medya türüne ve yönüne sahip birden çok istatistik olduğunda olaylar genelinde istatistikleri tanımlamak için kullanılır.
codecName Codec adı H264, VP8, VP9.
bitrate Video alma bit hızı (saniye başına bit sayısı)
jitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
packets Alınan toplam paket sayısı.
packetsPerSecond Paket hızı (saniye başına paket sayısı)
packetsLost Kaybedilen toplam paket sayısı.
packetsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.
rttInMs Gidiş dönüş süresi (milisaniye) Alt daha iyidir. RTCP gönderen raporundan hesaplanır. 200 ms veya daha kısa bir gidiş dönüş süresi öneririz.
streamId Akış Kimliği streamId değeri içinde VideoStreamCommonöğesine id karşılık gelir. Gönderenle eşleştirmek için kullanılabilir.
jitterBufferDelayInMs Değişim arabelleği (milisaniye) Alt daha iyidir. Titreşim arabelleği sorunsuz bir şekilde oynanması için kullanılır. Bu değer, çerçeve paketlerinin değişim arabelleğinde ne kadar süre kaldığıdır.
frameRateDecoded RTP akışı için kare hızı doğru şekilde çözüldü (saniyedeki kare sayısı)
frameRateReceived RTP akışında alınan kare hızı (saniyedeki kare sayısı)
frameWidthReceived Çözülen çerçevenin çerçeve genişliği (piksel)
frameHeightReceived Kodu çözülen çerçevenin çerçeve yüksekliği (piksel)
longestFreezeDurationInMs En uzun dondurma süresi (milisaniye)
totalFreezeDurationInMs Toplam dondurma süresi (milisaniye)
framesReceived RTP akışında alınan toplam kare sayısı
framesDecoded RTP akışı için doğru şekilde çözülen toplam kare sayısı
framesDropped Bırakılan toplam kare sayısı
keyFramesDecoded RTP akışı için doğru şekilde çözülen toplam anahtar kare sayısı
transportId Aktarım Kimliği Aktarımlardaki istatistikleri ilişkilendirmek için kullanılır.

Ekran paylaşımı gönderme ölçümleri

Şu anda istatistik alanları video gönderme ölçümleriyle aynıdır.

Ekran paylaşımı alma ölçümleri

Şu anda istatistik alanları video alma ölçümleriyle aynıdır.

Aktarım ölçümleri

Aktarımla ilgili ölçümler ACS Web SDK 1.20.1'in ardından ayrılmıştır.

Önceki sürümlerde ses, rttInMs video ve screenShare istatistiklerinde olduğu gibi pairRttInMs mevcutdu.

availableIncomingBitrate ses, video ve screenShare için alma istatistiklerinde yer availableBitrate aldı.

availableOutgoingBitrate ses, video ve screenShare için gönderme istatistiklerinde yer alır availableBitrate .

Ölçüm adı Açıklama Açıklamalar
id Aktarım Kimliği Diğer istatistiklerde transportId ile ilişkilendirmek için kullanılır
rttInMs Gidiş dönüş süresi (milisaniye) Değer STUN bağlantı denetiminden hesaplanır. 200 ms veya daha kısa bir gidiş dönüş süresi öneririz.
availableIncomingBitrate Bant genişliği tahmini (saniye başına bit sayısı) Değer, WebRTC oturumunda kullanılan bant genişliği tahmin algoritmasına bağlı olarak kullanılamayabilir
availableOutgoingBitrate Bant genişliği tahmini (saniye başına bit sayısı) Değer, WebRTC oturumunda kullanılan bant genişliği tahmin algoritmasına bağlı olarak kullanılamayabilir

SDK sürüm 1.20.1(GA) ile değiştirilenler

Artık 1.20.1 (GA) sürümünde MediaStats özellik API'lerini destekliyoruz. Önceki beta sürümleriyle karşılaştırıldığında, bu GA sürümünde API arabiriminde bazı küçük değişiklikler de yaptık.

Önceki beta sürümlerinde, pairRttInMsavailableBitrate ses, video ve screenShare istatistiklerine dahil edildi. Bu ölçümler artık aktarım ölçümlerine ayrılmıştır.

ses, video, screenShare istatistiklerinde , packetsLost ölçüm alanlarını kullanıma sundukpackets. Bu ölçümler, iki farklı zaman noktası arasında gönderilen veya alınan toplam paket sayısını hesaplamak için kullanışlıdır.

frameRateOutput Video ve ekran paylaşım istatistikleri kaldırıldı. Bunun yerine kullanabilirsiniz frameRateDecoded .

Bu ölçüm, bir paketin değişim arabelleğinde kalma süresini gösterdiğinden ölçüm alanı jitterBufferInMs daha net bir açıklama sağlayacak şekilde yeniden adlandırıldı jitterBufferDelayInMs .

Devam eden bir çağrı için medya kalitesi istatistikleri

Medya kalitesi istatistikleri, çekirdek Call API'nin genişletilmiş bir özelliğidir. Öncelikle API nesnesini edinmeniz MediaStatisticsCallFeature gerekir:

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

MediaStatisticsCallFeature nesnesi aşağıdaki API yapısına sahiptir:

  • Olay, OnReportReceivedListener medya istatistiklerinin düzenli aralıklarla raporlarını dinler.
  • getReportIntervalInSeconds medya istatistikleri raporu oluşturma aralığını saniye cinsinden alır. SDK, varsayılan olarak ikinciyi kullanır 10 .
  • updateReportIntervalInSeconds() medya istatistikleri raporu oluşturma aralığını saniye cinsinden güncelleştirir. SDK, varsayılan olarak ikinciyi kullanır 10 .
  • , MediaStatisticsReport giden ve gelen medya istatistiklerinin ses, video ve ekran paylaşımına göre kategorilere ayrılmış tanımını içerir.
    • getOutgoingStatistics(): Giden medya için medya istatistiklerinin listesi.
      • getAudioStatistics(): Giden ses için medya istatistiklerinin listesi.
      • getVideoStatistics(): Giden video için medya istatistiklerinin listesi.
      • getScreenShareStatistics(): Giden ekran paylaşımı için medya istatistikleri listesi.
      • getDataChannelStatistics(): Veri kanalı için medya istatistiklerinin listesi.
    • getIncomingStatistics(): Gelen medya için medya istatistiklerinin listesi.
      • getAudioStatistics(): Gelen ses için medya istatistiklerinin listesi.
      • getVideoStatistics(): Gelen videonun medya istatistikleri listesi.
      • getScreenShareStatistics(): Gelen ekran paylaşımı için medya istatistiklerinin listesi.
      • getDataChannelStatistics(): Veri kanalı için medya istatistiklerinin listesi.
    • getLastUpdatedAt(): Raporun oluşturulduğu tarih.

Ardından, geçerli medya kalitesi istatistikleri hakkında düzenli güncelleştirmeler almak için etkinliğe abone olun 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();
}

En iyi yöntemler

Çevrimdışı inceleme için verileri toplamak istiyorsanız, aramanız sona erdikten sonra verileri toplamanızı ve işlem hattı alımınıza göndermenizi öneririz. Bir arama sırasında verileri iletirseniz, Azure İletişim Hizmetleri çağrısına devam etmek için gereken İnternet bant genişliğini kullanabilir (özellikle kullanılabilir bant genişliği düşük olduğunda).

Giden ses ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Ses gönderme bit hızı (saniye başına bit sayısı) Genel değerler 24 Kb/sn aralığındadır (36-128 Kb/sn tipiktir).
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.

Gelen ses ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.
PacketsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.

Giden video ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Video gönderme bit hızı (saniye başına bit sayısı)
PacketCount Gönderilen toplam paket sayısı.
FrameRate RTP akışında gönderilen kare hızı (saniyedeki kare sayısı)
FrameWidth Kodlanmış çerçevenin çerçeve genişliği (piksel)
FrameHeight Kodlanmış çerçevenin çerçeve yüksekliği (piksel)

Gelen video ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Video alma bit hızı (saniye başına bit sayısı)
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.
PacketsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.
StreamId Akış Kimliği Değer, streamId uzak katılımcının videonun kimliğine karşılık gelir. Gönderenle eşleştirmek için kullanılabilir.
FrameRate RTP akışında alınan kare hızı (saniyedeki kare sayısı)
FrameWidth Kodu çözülen çerçevenin çerçeve genişliği (piksel)
FrameHeight Çözülen çerçevenin çerçeve yüksekliği (piksel)
TotalFreezeDurationInMs Toplam dondurma süresi (milisaniye)

Giden ekran paylaşımı ölçümleri

Şu anda istatistik alanları Giden video ölçümleriyle aynıdır.

Gelen ekran paylaşımı ölçümleri

Şu anda istatistik alanları Gelen video ölçümleriyle aynıdır.

Giden veri kanalı ölçümleri

Ölçüm adı Açıklama Açıklamalar
PacketCount Gönderilen toplam paket sayısı.

Gelen veri kanalı ölçümleri

Ölçüm adı Açıklama Açıklamalar
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.

Devam eden bir çağrı için medya kalitesi istatistikleri

Medya kalitesi istatistikleri, çekirdek Call API'nin genişletilmiş bir özelliğidir. Öncelikle API nesnesini edinmeniz mediaStatisticsCallFeature gerekir:

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

mediaStatisticsCallFeature nesnesi aşağıdaki API yapısına sahiptir:

  • Temsilci yöntemi, didReceiveReport medya istatistiklerinin düzenli aralıklarla raporlarını dinler.
  • reportIntervalInSeconds medya istatistikleri raporu oluşturma aralığını saniye cinsinden alır. SDK, varsayılan olarak ikinciyi kullanır 10 .
  • updateReportInterval(inSeconds) medya istatistikleri raporu oluşturma aralığını saniye cinsinden güncelleştirir. SDK, varsayılan olarak ikinciyi kullanır 10 .
  • Nesne MediaStatisticsReport , giden ve gelen medya istatistiklerinin ses, video ve ekran paylaşımına göre kategorilere ayrılmış tanımını içerir.
    • outgoingMediaStatistics: Giden medya için medya istatistiklerinin listesi.
      • audio: Giden ses için medya istatistiklerinin listesi.
      • video: Giden videonun medya istatistikleri listesi.
      • screenShare: Giden ekran paylaşımı için medya istatistiklerinin listesi.
      • dataChannel: Giden veri kanalı için medya istatistiklerinin listesi.
    • incomingMediaStatistics: Gelen medya için medya istatistiklerinin listesi.
      • audio: Gelen ses için medya istatistiklerinin listesi.
      • video: Gelen videonun medya istatistikleri listesi.
      • screenShare: Gelen ekran paylaşımı için medya istatistiklerinin listesi.
      • dataChannel: Gelen veri kanalı için medya istatistiklerinin listesi.
    • lastUpdated: Raporun oluşturulduğu tarih.

Ardından, geçerli medya kalitesi istatistikleri hakkında düzenli güncelleştirmeler almak için temsilciyi uygulayın 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
    }
}

En iyi yöntemler

Çevrimdışı inceleme için verileri toplamak istiyorsanız, aramanız sona erdikten sonra verileri toplamanızı ve işlem hattı alımınıza göndermenizi öneririz. Bir arama sırasında verileri iletirseniz, Azure İletişim Hizmetleri çağrısına devam etmek için gereken İnternet bant genişliğini kullanabilir (özellikle kullanılabilir bant genişliği düşük olduğunda).

Giden ses ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Ses gönderme bit hızı (saniye başına bit sayısı) Genel değerler 24 Kb/sn aralığındadır (36-128 Kb/sn tipiktir).
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.

Gelen ses ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.
PacketsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.

Giden video ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Video gönderme bit hızı (saniye başına bit sayısı)
PacketCount Gönderilen toplam paket sayısı.
FrameRate RTP akışında gönderilen kare hızı (saniyedeki kare sayısı)
FrameWidth Kodlanmış çerçevenin çerçeve genişliği (piksel)
FrameHeight Kodlanmış çerçevenin çerçeve yüksekliği (piksel)

Gelen video ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Video alma bit hızı (saniye başına bit sayısı)
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.
PacketsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.
StreamId Akış Kimliği Değer, streamId uzak katılımcının videonun kimliğine karşılık gelir. Gönderenle eşleştirmek için kullanılabilir.
FrameRate RTP akışında alınan kare hızı (saniyedeki kare sayısı)
FrameWidth Kodu çözülen çerçevenin çerçeve genişliği (piksel)
FrameHeight Çözülen çerçevenin çerçeve yüksekliği (piksel)
TotalFreezeDurationInMs Toplam dondurma süresi (milisaniye)

Giden ekran paylaşımı ölçümleri

Şu anda istatistik alanları Giden video ölçümleriyle aynıdır.

Gelen ekran paylaşımı ölçümleri

Şu anda istatistik alanları Gelen video ölçümleriyle aynıdır.

Giden veri kanalı ölçümleri

Ölçüm adı Açıklama Açıklamalar
PacketCount Gönderilen toplam paket sayısı.

Gelen veri kanalı ölçümleri

Ölçüm adı Açıklama Açıklamalar
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.

Devam eden bir çağrı için medya kalitesi istatistikleri

Medya kalitesi istatistikleri, çekirdek CommunicationCall API'nin genişletilmiş bir özelliğidir. Öncelikle API nesnesini edinmeniz MediaStatisticsCallFeature gerekir:

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;

Özellik MediaStatisticsCallFeature nesnesi aşağıdaki API yapısına sahiptir:

  • Olay, ReportReceived medya istatistiklerinin düzenli aralıklarla raporlarını dinler.
  • ReportIntervalInSeconds medya istatistikleri raporu oluşturma aralığını saniye cinsinden alır. SDK, varsayılan olarak ikinciyi kullanır 10 .
  • UpdateReportIntervalInSeconds() medya istatistikleri raporu oluşturma aralığını saniye cinsinden güncelleştirir. SDK, varsayılan olarak ikinciyi kullanır 10 .
  • Nesne MediaStatisticsReport , giden ve gelen medya istatistiklerinin ses, video ve ekran paylaşımına göre kategorilere ayrılmış tanımını içerir.
    • OutgoingMediaStatistics: Giden medya için medya istatistiklerinin listesi.
      • Audio: Giden ses için medya istatistiklerinin listesi.
      • Video: Giden videonun medya istatistikleri listesi.
      • ScreenShare: Giden ekran paylaşımı için medya istatistiklerinin listesi.
      • DataChannel: Giden veri kanalı için medya istatistiklerinin listesi.
    • IncomingMediaStatistics: Gelen medya için medya istatistiklerinin listesi.
      • Audio: Gelen ses için medya istatistiklerinin listesi.
      • Video: Gelen videonun medya istatistikleri listesi.
      • ScreenShare: Gelen ekran paylaşımı için medya istatistiklerinin listesi.
      • DataChannel: Gelen veri kanalı için medya istatistiklerinin listesi.
    • LastUpdateAt: Raporun oluşturulduğu tarih.

Ardından, geçerli medya kalitesi istatistikleri hakkında düzenli güncelleştirmeler almak için etkinliğe abone olun 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;
}

En iyi yöntemler

Çevrimdışı inceleme için verileri toplamak istiyorsanız, aramanız sona erdikten sonra verileri toplamanızı ve işlem hattı alımınıza göndermenizi öneririz. Bir arama sırasında verileri iletirseniz, Azure İletişim Hizmetleri çağrısına devam etmek için gereken İnternet bant genişliğini kullanabilir (özellikle kullanılabilir bant genişliği düşük olduğunda).

Giden ses ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Ses gönderme bit hızı (saniye başına bit sayısı) Genel değerler 24 Kb/sn aralığındadır (36-128 Kb/sn tipiktir).
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.

Gelen ses ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.
PacketsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.

Giden video ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Video gönderme bit hızı (saniye başına bit sayısı)
PacketCount Gönderilen toplam paket sayısı.
FrameRate RTP akışında gönderilen kare hızı (saniyedeki kare sayısı)
FrameWidth Kodlanmış çerçevenin çerçeve genişliği (piksel)
FrameHeight Kodlanmış çerçevenin çerçeve yüksekliği (piksel)

Gelen video ölçümleri

Ölçüm adı Açıklama Açıklamalar
CodecName Codec adı
BitrateInBps Video alma bit hızı (saniye başına bit sayısı)
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.
PacketsLostPerSecond Paket kaybı oranı (saniye başına paket sayısı) Alt daha iyidir.
StreamId Akış Kimliği Değer, streamId uzak katılımcının videonun kimliğine karşılık gelir. Gönderenle eşleştirmek için kullanılabilir.
FrameRate RTP akışında alınan kare hızı (saniyedeki kare sayısı)
FrameWidth Kodu çözülen çerçevenin çerçeve genişliği (piksel)
FrameHeight Çözülen çerçevenin çerçeve yüksekliği (piksel)
TotalFreezeDurationInMs Toplam dondurma süresi (milisaniye)

Giden ekran paylaşımı ölçümleri

Şu anda istatistik alanları Giden video ölçümleriyle aynıdır.

Gelen ekran paylaşımı ölçümleri

Şu anda istatistik alanları Gelen video ölçümleriyle aynıdır.

Giden veri kanalı ölçümleri

Ölçüm adı Açıklama Açıklamalar
PacketCount Gönderilen toplam paket sayısı.

Gelen veri kanalı ölçümleri

Ölçüm adı Açıklama Açıklamalar
JitterInMs Paket değişimi (milisaniye) Alt daha iyidir.
PacketCount Gönderilen toplam paket sayısı.