Statistik över mediekvalitet

För att hjälpa dig att förstå mediekvaliteten i VoIP- och videosamtal som använder Azure Communication Services finns det en funktion som kallas mediekvalitetsstatistik. Använd den för att undersöka kvalitetsmåtten för ljud, video och skärmdelning på låg nivå för inkommande och utgående samtalsmått.

Mediekvalitetsstatistik för ett pågående samtal

Viktigt!

Det finns en gränssnittsuppdatering av mediekvalitetsstatistik i SDK: et, som börjar med SDK version 1.20.1

Mediekvalitetsstatistik är en utökad funktion i kärn-API Call :et. Du måste först hämta API-objektet mediaStatsFeature :

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

Om du vill ta emot mediestatistikdata kan du prenumerera på sampleReported händelse eller summaryReported händelse.

sampleReported händelseutlösare varje sekund. Den är lämplig som datakälla för visning av användargränssnitt eller din egen datapipeline.

summaryReported händelsen innehåller de aggregerade värdena för data över intervall, vilket är användbart när du bara behöver en sammanfattning.

Om du vill ha kontroll över händelsens summaryReported intervall måste du definiera mediaStatsCollectorOptions av typen MediaStatsCollectorOptions. Annars använder SDK:et standardvärden.

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

Om du inte behöver använda mediestatistikinsamlaren kan du anropa dispose metoden mediaStatsCollectorför .

mediaStatsCollector.dispose();

Det är inte nödvändigt att anropa dispose metoden mediaStatsCollector varje gång samtalet avslutas, eftersom insamlaren återvinns internt när anropet avslutas.

MediaStatsCollectorOptions

MediaStatsCollectorOptions Är valfritt och det finns två valfria fält i MediaStatsCollectorOptions.

  • aggregationInterval är intervallet i sekunder som statistiken aggregeras. Standardvärdet är 10.
  • dataPointsPerAggregation definierar hur många datapunkter varje aggregeringshändelse har. Standardvärdet är 6.

Dessa två värden avgör hur ofta SDK genererar summaryReported händelsen och antalet aggregerade datapunkter som ingår i rapporten.

Händelsen summaryReported aktiverades varje aggregationInterval * dataPointsPerAggregation sekund.

Om du till exempel anger följande värden:

  • aggregationInterval = 1
  • dataPointsPerAggregation = 60

Händelsen summaryReported utlöses var 60:e sekund och innehåller 60 unika enheter för varje statistik som registreras.

Om du anger följande värden:

  • aggregatinInterval = 60
  • dataPointsPerAggregation = 1

Händelsen summaryReported utlöses var 60:e sekund och innehåller 1 unik enhet för varje statistik som registreras.

Bästa praxis

Om du vill samla in data för offlinegranskning rekommenderar vi att du samlar in data och skickar dem till din pipelineinmatning när samtalet har avslutats. Om du överför data under ett anrop kan den använda internetbandbredd som behövs för att fortsätta ett Azure Communication Services-anrop (särskilt när den tillgängliga bandbredden är låg).

I händelse sampleReported eller summaryReported händelse är mediestatistikdata inte bara en enkel nyckel/värde-mappning.

Här är typdeklarationen för händelsedata som rapporterats av sampleReported händelsen.

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

Händelsedata tillhandahåller statistikdata för varje medieström i samtalet, inklusive både skicka och ta emot vägbeskrivningar.

Vi rekommenderar att du skriver ut händelsen med hjälp av console.log för att observera dess layout- och värdeändringar, så att du kan hitta ett lämpligt sätt att visa eller bearbeta data enligt ditt användningsscenario.

Mått för ljudsändning

Måttnamn beskrivning Kommentarer
id Statistik-ID Används för att identifiera statistik över händelserna, särskilt när det finns flera statistik med samma medietyp och riktning i en händelse.
codecName Codec-namn OPUS, G722.
bitrate Bithastighet för ljudsändning (bitar per sekund) Allmänna värden finns i intervallet 24 kbit/s (36–128 kbit/s är typiskt).
jitterInMs Paket jitter (millisekunder) Lägre är bättre.
packets Det totala antalet paket som skickas.
packetsPerSecond Paketfrekvens (paket per sekund)
packetsLost Det totala antalet förlorade paket som rapporterats från fjärrslutet.
packetsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.
rttInMs Tur och retur-tid (millisekunder) Lägre är bättre. Beräknas från RTCP-mottagarrapporten. Vi rekommenderar en tur- och returtid på 200 ms eller mindre.
audioInputLevel Ljudvolymnivå från mikrofonen Värdet varierar från 0 till 65536. Värdet 0 representerar tystnad.
transportId Transport-ID Används för att associera statistik i transporter.

Ta emot mått för ljud

I SDK-versionerna av ealier än 1.20.1 jitterBufferDelayInMs fanns som jitterBufferInMs.

Måttnamn beskrivning Kommentarer
id Statistik-ID Används för att identifiera statistik över händelserna, särskilt när det finns flera statistik med samma medietyp och riktning i en händelse.
codecName Codec-namn OPUS, G722.
bitrate Bithastighet för ljud mottagning (bitar per sekund) Allmänna värden finns i intervallet 24 kbit/s (36–128 kbit/s är typiskt).
jitterInMs Paket jitter (millisekunder) Lägre är bättre.
packets Det totala antalet mottagna paket.
packetsPerSecond Paketfrekvens (paket per sekund)
packetsLost Det totala antalet förlorade paket.
packetsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.
jitterBufferDelayInMs Jitterbuffert (millisekunder) Lägre är bättre. Jitterbufferten används för jämn uppspelning. Det här värdet är hur länge paketen i exemplen ligger kvar i jitterbufferten.
audioOutputLevel Ljudvolymnivå från den mottagande strömmen Värdet varierar från 0 till 65536. Värdet 0 representerar tystnad.
healedRatio Förhållandet mellan dolda prover (utom silentConcealedSamples) och totalt antal mottagna prover Endast information.
transportId Transport-ID Används för att associera statistik i transporter.

Skicka mått för video

Från och med SDK version 1.20.1 inkluderade videosändningsmåttet altLayouts måttfältet, vilket möjliggör en bättre representation av simulcast-dataströmstatistik.

Måttnamn beskrivning Kommentarer
id Statistik-ID Används för att identifiera statistik över händelserna, särskilt när det finns flera statistik med samma medietyp och riktning i en händelse.
codecName Codec-namn H264, VP8, VP9.
bitrate Video skicka bithastighet (bitar per sekund)
jitterInMs Paket jitter (millisekunder) Lägre är bättre.
packets Det totala antalet paket som skickas.
packetsPerSecond Paketfrekvens (paket per sekund)
packetsLost Det totala antalet förlorade paket som rapporterats från fjärrslutet.
packetsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.
rttInMs Tur och retur-tid (millisekunder) Lägre är bättre. Beräknas från RTCP-mottagarrapporten. Vi rekommenderar en tur- och returtid på 200 ms eller mindre.
frameRateInput Bildfrekvens som kommer från videokällan (bildrutor per sekund)
frameWidthInput Bildrutebredd för den sista bildrutan som kommer från videokällan (bildpunkter)
frameHeightInput Ramhöjd för den sista bildrutan som kommer från videokällan (bildpunkter)
framesEncoded Antalet bildrutor som har kodats för RTP-strömmen.
frameRateEncoded Bildfrekvens har kodat för RTP-strömmen (bildrutor per sekund)
framesSent Antalet bildrutor som skickas i RTP-strömmen
frameRateSent Bildfrekvens som skickas på RTP-strömmen (bildrutor per sekund)
frameWidthSent Rambredd för den kodade ramen (pixel)
frameHeightSent Ramhöjd för den kodade ramen (pixel)
keyFramesEncoded Nyckelramar har kodat för RTP-strömmen
transportId Transport-ID Används för att associera statistik i transporter.
altLayouts Simulcast-strömmar altLayouts innehåller samma mått som videosändningen

Ta emot mått för video

I SDK-versionerna tidigare än 1.20.1 jitterBufferDelayInMs fanns som jitterBufferInMs.

Måttnamn beskrivning Kommentarer
id Statistik-ID Används för att identifiera statistik över händelserna, särskilt när det finns flera statistik med samma medietyp och riktning i en händelse.
codecName Codec-namn H264, VP8, VP9.
bitrate Video tar emot bithastighet (bitar per sekund)
jitterInMs Paket jitter (millisekunder) Lägre är bättre.
packets Det totala antalet mottagna paket.
packetsPerSecond Paketfrekvens (paket per sekund)
packetsLost Det totala antalet förlorade paket.
packetsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.
rttInMs Tur och retur-tid (millisekunder) Lägre är bättre. Beräknas från RTCP-avsändarrapporten. Vi rekommenderar en tur- och returtid på 200 ms eller mindre.
streamId Stream-ID Värdet streamId motsvarar id i VideoStreamCommon. Den kan användas för att matcha avsändaren.
jitterBufferDelayInMs Jitterbuffert (millisekunder) Lägre är bättre. Jitterbufferten används för jämn uppspelning. Det här värdet är hur länge paketen i ramarna finns kvar i jitterbufferten.
frameRateDecoded Bildfrekvens korrekt avkodad för RTP-strömmen (bildrutor per sekund)
frameRateReceived Bildfrekvens som tas emot på RTP-strömmen (bildrutor per sekund)
frameWidthReceived Bildrutebredd för den avkodade ramen (pixel)
frameHeightReceived Bildrutehöjd för den avkodade ramen (pixel)
longestFreezeDurationInMs Längsta varaktighet för frysning (millisekunder)
totalFreezeDurationInMs Total varaktighet för frysning (millisekunder)
framesReceived Totalt antal mottagna bildrutor i RTP-strömmen
framesDecoded Totalt antal bildrutor korrekt avkodade för RTP-strömmen
framesDropped Totalt antal borttagna bildrutor
keyFramesDecoded Totalt antal nyckelramar korrekt avkodade för RTP-dataströmmen
transportId Transport-ID Används för att associera statistik i transporter.

Mått för att skicka skärmresurser

För närvarande är statistikfält samma som mått för videosändning.

Ta emot mått för skärmresurs

För närvarande är statistikfälten samma som video ta emot mått.

Transportmått

Transportrelaterade mått avgränsades efter ACS Web SDK 1.20.1.

I tidigare versioner rttInMs fanns som pairRttInMs i statistiken för ljud, video och skärmDela.

availableIncomingBitrate var availableBitrate i ta emot statistik för ljud, video och skärmDela.

availableOutgoingBitrate var availableBitrate i sändningsstatistiken för ljud, video och skärmDela.

Måttnamn beskrivning Kommentarer
id Transport-ID Används för att associera med transportId i annan statistik
rttInMs Tur och retur-tid (millisekunder) Värdet beräknas från STUN-anslutningskontrollen. Vi rekommenderar en tur- och returtid på 200 ms eller mindre.
availableIncomingBitrate Bandbreddsuppskattning (bitar per sekund) Värdet kanske inte är tillgängligt beroende på algoritmen för bandbreddsuppskattning som används i WebRTC-sessionen
availableOutgoingBitrate Bandbreddsuppskattning (bitar per sekund) Värdet kanske inte är tillgängligt beroende på algoritmen för bandbreddsuppskattning som används i WebRTC-sessionen

Vad ändras i SDK version 1.20.1 (GA)

Vi har nu stöd för MediaStats funktions-API i 1.20.1 (GA). Jämfört med tidigare betaversioner har vi även gjort några mindre ändringar i API-gränssnittet i den här GA-versionen.

I de tidigare betaversionerna pairRttInMsinkluderades , availableBitrate i statistik för ljud, video och skärmDela. Nu har dessa mått separerats i transportmått.

Vi introducerade packetsmåttfält packetsLost i ljud, video och skärmDela statistik. Dessa mått är användbara för att beräkna det totala antalet paket som skickas eller tas emot mellan två olika tidpunkter.

I frameRateOutput video och skärmDela statistik tas bort. Du kan använda frameRateDecoded i stället.

Måttfältet jitterBufferInMs har bytt namn till för jitterBufferDelayInMs att ge en tydligare beskrivning, eftersom det här måttet anger varaktigheten för ett paket som stannar kvar i jitterbufferten.

Mediekvalitetsstatistik för ett pågående samtal

Mediekvalitetsstatistik är en utökad funktion i kärn-API Call :et. Du måste först hämta API-objektet MediaStatisticsCallFeature :

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

Objektet MediaStatisticsCallFeature har följande API-struktur:

  • Händelsen OnReportReceivedListener lyssnar efter periodiska rapporter om mediestatistiken.
  • getReportIntervalInSeconds hämtar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder 10 andra som standard.
  • updateReportIntervalInSeconds() uppdaterar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder 10 andra som standard.
  • A MediaStatisticsReport innehåller definitionen av utgående och inkommande mediestatistik, kategoriserad efter ljud, video och skärmresurs.
    • getOutgoingStatistics(): Listan över mediestatistik för utgående media.
      • getAudioStatistics(): Listan över mediestatistik för utgående ljud.
      • getVideoStatistics(): Listan över mediestatistik för utgående video.
      • getScreenShareStatistics(): Listan över mediestatistik för utgående skärmresurs.
      • getDataChannelStatistics(): Listan över mediestatistik för datakanalen.
    • getIncomingStatistics(): Listan över mediestatistik för inkommande media.
      • getAudioStatistics(): Listan över mediestatistik för inkommande ljud.
      • getVideoStatistics(): Listan över mediestatistik för den inkommande videon.
      • getScreenShareStatistics(): Listan över mediestatistik för inkommande skärmresurs.
      • getDataChannelStatistics(): Listan över mediestatistik för datakanalen.
    • getLastUpdatedAt(): Det datum då rapporten genererades.

Prenumerera sedan på addOnReportReceivedListener händelsen för att få regelbundna uppdateringar om den aktuella mediekvalitetsstatistiken:

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

Bästa praxis

Om du vill samla in data för offlinegranskning rekommenderar vi att du samlar in data och skickar dem till din pipelineinmatning när samtalet har avslutats. Om du överför data under ett anrop kan den använda internetbandbredd som behövs för att fortsätta ett Azure Communication Services-anrop (särskilt när den tillgängliga bandbredden är låg).

Utgående ljudmått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Bithastighet för sändning av ljud (bitar per sekund) Allmänna värden finns i intervallet 24 kbit/s (36–128 kbit/s är typiskt).
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.

Inkommande ljudmått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.
PacketsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.

Utgående videomått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Video skicka bithastighet (bitar per sekund)
PacketCount Det totala antalet paket som skickas.
FrameRate Bildfrekvens som skickas på RTP-strömmen (bildrutor per sekund)
FrameWidth Rambredd för den kodade ramen (bildpunkter)
FrameHeight Ramhöjd för den kodade ramen (bildpunkter)

Inkommande videomått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Video tar emot bithastighet (bitar per sekund)
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.
PacketsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.
StreamId Stream-ID Värdet streamId motsvarar ID:t för videon för fjärrdeltagaren. Den kan användas för att matcha avsändaren.
FrameRate Bildfrekvens som tas emot på RTP-strömmen (bildrutor per sekund)
FrameWidth Bildrutebredd för den avkodade ramen (bildpunkter)
FrameHeight Bildrutehöjd för den avkodade ramen (bildpunkter)
TotalFreezeDurationInMs Total varaktighet för frysning (millisekunder)

Mått för utgående skärmresurs

För närvarande är statistikfälten samma som utgående videomått.

Mått för inkommande skärmresurs

För närvarande är statistikfält samma som inkommande videomått.

Mått för utgående datakanal

Måttnamn beskrivning Kommentarer
PacketCount Det totala antalet paket som skickas.

Inkommande datakanalmått

Måttnamn beskrivning Kommentarer
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.

Mediekvalitetsstatistik för ett pågående samtal

Mediekvalitetsstatistik är en utökad funktion i kärn-API Call :et. Du måste först hämta API-objektet mediaStatisticsCallFeature :

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

Objektet mediaStatisticsCallFeature har följande API-struktur:

  • Ombudsmetoden didReceiveReport lyssnar efter periodiska rapporter om mediestatistiken.
  • reportIntervalInSeconds hämtar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder 10 andra som standard.
  • updateReportInterval(inSeconds) uppdaterar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder 10 andra som standard.
  • Ett MediaStatisticsReport objekt innehåller definitionen av utgående och inkommande mediestatistik, kategoriserad efter ljud, video och skärmresurs.
    • outgoingMediaStatistics: Listan över mediestatistik för utgående media.
      • audio: Listan över mediestatistik för utgående ljud.
      • video: Listan över mediestatistik för den utgående videon.
      • screenShare: Listan över mediestatistik för den utgående skärmresursen.
      • dataChannel: Listan över mediestatistik för den utgående datakanalen.
    • incomingMediaStatistics: Listan över mediestatistik för inkommande media.
      • audio: Listan över mediestatistik för inkommande ljud.
      • video: Listan över mediestatistik för den inkommande videon.
      • screenShare: Listan över mediestatistik för den inkommande skärmresursen.
      • dataChannel: Listan över mediestatistik för den inkommande datakanalen.
    • lastUpdated: Det datum då rapporten genererades.

Implementera sedan ombudet didReceiveReport för att få regelbundna uppdateringar om den aktuella mediekvalitetsstatistiken:

// 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
    }
}

Bästa praxis

Om du vill samla in data för offlinegranskning rekommenderar vi att du samlar in data och skickar dem till din pipelineinmatning när samtalet har avslutats. Om du överför data under ett anrop kan den använda internetbandbredd som behövs för att fortsätta ett Azure Communication Services-anrop (särskilt när den tillgängliga bandbredden är låg).

Utgående ljudmått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Bithastighet för sändning av ljud (bitar per sekund) Allmänna värden finns i intervallet 24 kbit/s (36–128 kbit/s är typiskt).
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.

Inkommande ljudmått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.
PacketsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.

Utgående videomått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Video skicka bithastighet (bitar per sekund)
PacketCount Det totala antalet paket som skickas.
FrameRate Bildfrekvens som skickas på RTP-strömmen (bildrutor per sekund)
FrameWidth Rambredd för den kodade ramen (bildpunkter)
FrameHeight Ramhöjd för den kodade ramen (bildpunkter)

Inkommande videomått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Video tar emot bithastighet (bitar per sekund)
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.
PacketsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.
StreamId Stream-ID Värdet streamId motsvarar ID:t för videon för fjärrdeltagaren. Den kan användas för att matcha avsändaren.
FrameRate Bildfrekvens som tas emot på RTP-strömmen (bildrutor per sekund)
FrameWidth Bildrutebredd för den avkodade ramen (bildpunkter)
FrameHeight Bildrutehöjd för den avkodade ramen (bildpunkter)
TotalFreezeDurationInMs Total varaktighet för frysning (millisekunder)

Mått för utgående skärmresurs

För närvarande är statistikfälten samma som utgående videomått.

Mått för inkommande skärmresurs

För närvarande är statistikfält samma som inkommande videomått.

Mått för utgående datakanal

Måttnamn beskrivning Kommentarer
PacketCount Det totala antalet paket som skickas.

Inkommande datakanalmått

Måttnamn beskrivning Kommentarer
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.

Mediekvalitetsstatistik för ett pågående samtal

Mediekvalitetsstatistik är en utökad funktion i kärn-API CommunicationCall :et. Du måste först hämta API-objektet MediaStatisticsCallFeature :

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;

Funktionsobjektet MediaStatisticsCallFeature har följande API-struktur:

  • Händelsen ReportReceived lyssnar efter periodiska rapporter om mediestatistiken.
  • ReportIntervalInSeconds hämtar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder 10 andra som standard.
  • UpdateReportIntervalInSeconds() uppdaterar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder 10 andra som standard.
  • Ett MediaStatisticsReport objekt innehåller definitionen av utgående och inkommande mediestatistik, kategoriserad efter ljud, video och skärmresurs.
    • OutgoingMediaStatistics: Listan över mediestatistik för utgående media.
      • Audio: Listan över mediestatistik för utgående ljud.
      • Video: Listan över mediestatistik för den utgående videon.
      • ScreenShare: Listan över mediestatistik för den utgående skärmresursen.
      • DataChannel: Listan över mediestatistik för den utgående datakanalen.
    • IncomingMediaStatistics: Listan över mediestatistik för inkommande media.
      • Audio: Listan över mediestatistik för inkommande ljud.
      • Video: Listan över mediestatistik för den inkommande videon.
      • ScreenShare: Listan över mediestatistik för den inkommande skärmresursen.
      • DataChannel: Listan över mediestatistik för den inkommande datakanalen.
    • LastUpdateAt: Det datum då rapporten genererades.

Prenumerera sedan på SampleReported händelsen för att få regelbundna uppdateringar om den aktuella mediekvalitetsstatistiken:

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

Bästa praxis

Om du vill samla in data för offlinegranskning rekommenderar vi att du samlar in data och skickar dem till din pipelineinmatning när samtalet har avslutats. Om du överför data under ett anrop kan den använda internetbandbredd som behövs för att fortsätta ett Azure Communication Services-anrop (särskilt när den tillgängliga bandbredden är låg).

Utgående ljudmått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Bithastighet för sändning av ljud (bitar per sekund) Allmänna värden finns i intervallet 24 kbit/s (36–128 kbit/s är typiskt).
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.

Inkommande ljudmått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.
PacketsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.

Utgående videomått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Video skicka bithastighet (bitar per sekund)
PacketCount Det totala antalet paket som skickas.
FrameRate Bildfrekvens som skickas på RTP-strömmen (bildrutor per sekund)
FrameWidth Rambredd för den kodade ramen (bildpunkter)
FrameHeight Ramhöjd för den kodade ramen (bildpunkter)

Inkommande videomått

Måttnamn beskrivning Kommentarer
CodecName Codec-namn
BitrateInBps Video tar emot bithastighet (bitar per sekund)
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.
PacketsLostPerSecond Paketförlustfrekvens (paket per sekund) Lägre är bättre.
StreamId Stream-ID Värdet streamId motsvarar ID:t för videon för fjärrdeltagaren. Den kan användas för att matcha avsändaren.
FrameRate Bildfrekvens som tas emot på RTP-strömmen (bildrutor per sekund)
FrameWidth Bildrutebredd för den avkodade ramen (bildpunkter)
FrameHeight Bildrutehöjd för den avkodade ramen (bildpunkter)
TotalFreezeDurationInMs Total varaktighet för frysning (millisekunder)

Mått för utgående skärmresurs

För närvarande är statistikfälten samma som utgående videomått.

Mått för inkommande skärmresurs

För närvarande är statistikfält samma som inkommande videomått.

Mått för utgående datakanal

Måttnamn beskrivning Kommentarer
PacketCount Det totala antalet paket som skickas.

Inkommande datakanalmått

Måttnamn beskrivning Kommentarer
JitterInMs Paket jitter (millisekunder) Lägre är bättre.
PacketCount Det totala antalet paket som skickas.