Delen via


Statistieken over mediakwaliteit

Voor een beter begrip van de mediakwaliteit in VoIP- en videogesprekken die gebruikmaken van Azure Communication Services, is er een functie die mediakwaliteitsstatistieken wordt genoemd. Gebruik deze om de metrische gegevens over de kwaliteit van audio, video en schermdeling te onderzoeken voor metrische gegevens over binnenkomende en uitgaande gesprekken.

Statistieken over mediakwaliteit voor een doorlopend gesprek

Belangrijk

Er is een interface-update voor statistieken over mediakwaliteit in de SDK, te beginnen met sdk-versie 1.20.1

Statistieken over mediakwaliteit is een uitgebreide functie van de kern-API Call . U moet eerst het mediaStatsFeature API-object verkrijgen:

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

Als u de mediastatistiekengegevens wilt ontvangen, kunt u zich abonneren op de sampleReported gebeurtenis of de summaryReported gebeurtenis.

De sampleReported gebeurtenis wordt elke seconde geactiveerd. Het is geschikt als een gegevensbron voor weergave van de gebruikersinterface of uw eigen gegevenspijplijn.

De summaryReported gebeurtenis bevat de geaggregeerde waarden van de gegevens met intervallen, wat handig is wanneer u alleen een samenvatting nodig hebt.

Als u controle wilt over het interval van de summaryReported gebeurtenis, moet u het type MediaStatsCollectorOptionsdefiniërenmediaStatsCollectorOptions. Anders gebruikt de SDK standaardwaarden.

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

Als u de mediastatistiekenverzamelaar niet hoeft te gebruiken, kunt u de methode aanroependispose.mediaStatsCollector

mediaStatsCollector.dispose();

U hoeft geen methode aan te roepen dispose wanneer mediaStatsCollector de aanroep eindigt, omdat de collectors intern worden vrijgemaakt wanneer de aanroep eindigt.

MediaStatsCollectorOptions

De MediaStatsCollectorOptions optie is optioneel en er zijn twee optionele velden in MediaStatsCollectorOptions.

  • aggregationInterval is het interval, in seconden, dat de statistieken worden geaggregeerd. De standaardwaarde is 10.
  • dataPointsPerAggregation definieert hoeveel gegevenspunten elke aggregatiegebeurtenis heeft. De standaardwaarde is 6.

Deze twee waarden bepalen de frequentie waarmee de SDK gebeurtenis verzendt summaryReported en het aantal geaggregeerde gegevenspunten dat in het rapport is opgenomen.

De summaryReported gebeurtenis is elke aggregationInterval * dataPointsPerAggregation seconden gegenereerd.

Als u bijvoorbeeld de volgende waarden instelt:

  • aggregationInterval = 1
  • dataPointsPerAggregation = 60

De summaryReported gebeurtenis wordt elke 60 seconden gegenereerd en bevat 60 unieke eenheden voor elke opgenomen statistiek.

Als u de volgende waarden instelt:

  • aggregatinInterval = 60
  • dataPointsPerAggregation = 1

De summaryReported gebeurtenis wordt elke 60 seconden gegenereerd en bevat één (1) unieke eenheid voor elke opgenomen statistiek.

Aanbevolen procedures

Als u de gegevens voor offline inspectie wilt verzamelen, raden we u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd. Als u de gegevens verzendt tijdens een oproep, kan deze internetbandbreedte gebruiken die nodig is om een Azure Communication Services-aanroep voort te zetten (met name wanneer de beschikbare bandbreedte laag is).

In een sampleReported gebeurtenis of summaryReported gebeurtenis zijn de mediastatistiekengegevens niet alleen een eenvoudige sleutelwaardetoewijzing.

Dit is de typedeclaratie van de gebeurtenisgegevens die door sampleReported de gebeurtenis zijn gerapporteerd.

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

De gebeurtenisgegevens bieden de statistiekengegevens voor elke mediastream in het gesprek, inclusief zowel verzend- als ontvangstbeschrijvingen.

We raden u aan de gebeurtenis af te drukken met behulp van de gebeurtenis om de wijzigingen in de console.log indeling en waarde te observeren, zodat u de gegevens op de juiste manier kunt weergeven of verwerken volgens uw gebruiksscenario.

Metrische gegevens voor audio verzenden

Naam van meetwaarde Beschrijving Opmerkingen
id Statistieken-id Wordt gebruikt om statistieken voor de gebeurtenissen te identificeren, met name wanneer er meerdere statistieken zijn met hetzelfde mediatype en dezelfde richting in een gebeurtenis.
codecName Codecnaam OPUS, G722.
bitrate Bitsnelheid audio verzenden (bits per seconde) Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch).
jitterInMs Pakket jitter (milliseconden) Lager is beter.
packets Het totale aantal verzonden pakketten.
packetsPerSecond Pakketsnelheid (pakketten per seconde)
packetsLost Het totale aantal verloren pakketten dat is gerapporteerd aan het externe einde.
packetsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.
rttInMs Retourtijd (milliseconden) Lager is beter. Berekend op basis van het RTCP-ontvangerrapport. We raden een retourtijd van 200 ms of minder aan.
audioInputLevel Audiovolumeniveau van de microfoon De waarde varieert van 0 tot 65536. Een waarde van 0 vertegenwoordigt stilte.
transportId Transport-id Wordt gebruikt om de statistieken in transporten te koppelen.

Metrische gegevens ontvangen van audio

In de SDK-versies ouder dan 1.20.1 bestonden jitterBufferDelayInMs als jitterBufferInMs.

Naam van meetwaarde Beschrijving Opmerkingen
id Statistieken-id Wordt gebruikt om statistieken voor de gebeurtenissen te identificeren, met name wanneer er meerdere statistieken zijn met hetzelfde mediatype en dezelfde richting in een gebeurtenis.
codecName Codecnaam OPUS, G722.
bitrate Bitrate audio ontvangen (bits per seconde) Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch).
jitterInMs Pakket jitter (milliseconden) Lager is beter.
packets Het totale aantal ontvangen pakketten.
packetsPerSecond Pakketsnelheid (pakketten per seconde)
packetsLost Het totale aantal verloren pakketten.
packetsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.
jitterBufferDelayInMs Jitter-buffer (milliseconden) Lager is beter. De jitterbuffer wordt gebruikt voor een soepele play-out. Deze waarde is hoe lang de pakketten van de monsters in de jitter-buffer blijven.
audioOutputLevel Audiovolumeniveau van de ontvangende stream De waarde varieert van 0 tot 65536. Een waarde van 0 vertegenwoordigt stilte.
healedRatio Verhouding van verborgen monsters (behalve silentConcealedSamples) tot totaal ontvangen monsters Alleen informatie.
transportId Transport-id Wordt gebruikt om de statistieken in transporten te koppelen.

Metrische gegevens verzenden via video

Vanaf SDK-versie 1.20.1 bevatten de video metrische gegevens het altLayouts metrische veld, waarmee een betere weergave van simulcaststroomstatistieken mogelijk is.

Naam van meetwaarde Beschrijving Opmerkingen
id Statistieken-id Wordt gebruikt om statistieken voor de gebeurtenissen te identificeren, met name wanneer er meerdere statistieken zijn met hetzelfde mediatype en dezelfde richting in een gebeurtenis.
codecName Codecnaam H264, VP8, VP9.
bitrate Bitrate voor video verzenden (bits per seconde)
jitterInMs Pakket jitter (milliseconden) Lager is beter.
packets Het totale aantal verzonden pakketten.
packetsPerSecond Pakketsnelheid (pakketten per seconde)
packetsLost Het totale aantal verloren pakketten dat is gerapporteerd aan het externe einde.
packetsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.
rttInMs Retourtijd (milliseconden) Lager is beter. Berekend op basis van het RTCP-ontvangerrapport. We raden een retourtijd van 200 ms of minder aan.
frameRateInput Framesnelheid die afkomstig is van de videobron (frames per seconde)
frameWidthInput Framebreedte van het laatste frame dat afkomstig is van de videobron (pixels)
frameHeightInput Framehoogte van het laatste frame dat afkomstig is van de videobron (pixels)
framesEncoded Het aantal frames dat is gecodeerd voor de RTP-stream.
frameRateEncoded Framesnelheid gecodeerd voor de RTP-stream (frames per seconde)
framesSent Het aantal frames dat wordt verzonden op de RTP-stream
frameRateSent Framesnelheid verzonden op de RTP-stream (frames per seconde)
frameWidthSent Framebreedte van het gecodeerde frame (pixel)
frameHeightSent Framehoogte van het gecodeerde frame (pixel)
keyFramesEncoded Sleutelframes gecodeerd voor de RTP-stream
transportId Transport-id Wordt gebruikt om de statistieken in transporten te koppelen.
altLayouts Simulcaststreams altLayouts bevat dezelfde metrische gegevens voor het verzenden van video's

Video ontvangt metrische gegevens

In de SDK-versies ouder dan 1.20.1 bestonden jitterBufferDelayInMs als jitterBufferInMs.

Naam van meetwaarde Beschrijving Opmerkingen
id Statistieken-id Wordt gebruikt om statistieken voor de gebeurtenissen te identificeren, met name wanneer er meerdere statistieken zijn met hetzelfde mediatype en dezelfde richting in een gebeurtenis.
codecName Codecnaam H264, VP8, VP9.
bitrate Bitrate voor video ontvangen (bits per seconde)
jitterInMs Pakket jitter (milliseconden) Lager is beter.
packets Het totale aantal ontvangen pakketten.
packetsPerSecond Pakketsnelheid (pakketten per seconde)
packetsLost Het totale aantal verloren pakketten.
packetsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.
rttInMs Retourtijd (milliseconden) Lager is beter. Berekend op basis van het RTCP-afzenderrapport. We raden een retourtijd van 200 ms of minder aan.
streamId Stream-id De streamId waarde komt overeen met id in VideoStreamCommon. Deze kan worden gebruikt om overeen te komen met de afzender.
jitterBufferDelayInMs Jitter-buffer (milliseconden) Lager is beter. De jitterbuffer wordt gebruikt voor een soepele play-out. Deze waarde is hoe lang de pakketten van de frames in de jitterbuffer blijven.
frameRateDecoded Framesnelheid correct gedecodeerd voor de RTP-stream (frames per seconde)
frameRateReceived Framesnelheid ontvangen op de RTP-stream (frames per seconde)
frameWidthReceived Framebreedte van het gedecodeerde frame (pixel)
frameHeightReceived Framehoogte van het gedecodeerde frame (pixel)
longestFreezeDurationInMs Langste duur van blokkeren (milliseconden)
totalFreezeDurationInMs Totale duur van blokkeren (milliseconden)
framesReceived Totaal aantal frames dat is ontvangen in de RTP-stream
framesDecoded Totaal aantal frames dat correct is gedecodeerd voor de RTP-stream
framesDropped Totaal aantal frames verwijderd
keyFramesDecoded Totaal aantal sleutelframes correct gedecodeerd voor de RTP-stream
transportId Transport-id Wordt gebruikt om de statistieken in transporten te koppelen.

Metrische gegevens voor het verzenden van schermshares

Op dit moment zijn statistiekenvelden hetzelfde als metrische gegevens voor het verzenden van video's.

Schermshare ontvangt metrische gegevens

Op dit moment zijn statistiekenvelden hetzelfde als het ontvangen van metrische gegevens voor video's.

Metrische transportgegevens

De transportgerelateerde metrische gegevens zijn gescheiden na ACS Web SDK 1.20.1.

In eerdere versies rttInMs bestonden zoals pairRttInMs in de statistieken voor audio, video en screenShare.

availableIncomingBitrate was availableBitrate in de ontvangststatistieken voor audio, video en screenShare.

availableOutgoingBitrate was availableBitrate in de verzendstatistieken voor audio, video en screenShare.

Naam van meetwaarde Beschrijving Opmerkingen
id Transport-id Wordt gebruikt om te koppelen aan de transportId in andere statistieken
rttInMs Retourtijd (milliseconden) De waarde wordt berekend op basis van de STUN-connectiviteitscontrole. We raden een retourtijd van 200 ms of minder aan.
availableIncomingBitrate Schatting van bandbreedte (bits per seconde) De waarde is mogelijk niet beschikbaar, afhankelijk van het algoritme voor bandbreedteschatting dat wordt gebruikt in de WebRTC-sessie
availableOutgoingBitrate Schatting van bandbreedte (bits per seconde) De waarde is mogelijk niet beschikbaar, afhankelijk van het algoritme voor bandbreedteschatting dat wordt gebruikt in de WebRTC-sessie

Wat is er gewijzigd in SDK-versie 1.20.1 (GA)

We ondersteunen nu de MediaStats-functie-API in 1.20.1 (GA).

In vergelijking met de vorige bètaversies hebben we ook enkele kleine wijzigingen aangebracht in de API-interface in deze GA-versie.

In de vorige bètaversies pairRttInMsavailableBitrate werden audio-, video- en screenShare-statistieken opgenomen. Deze metrische gegevens worden nu onderverdeeld in metrische transportgegevens.

We hebben metrische velden geïntroduceerd packets in packetsLost audio-, video-, screenShare-statistieken. Deze metrische gegevens zijn handig voor het berekenen van het totale aantal verzonden of ontvangen pakketten tussen twee verschillende tijdstippen.

De frameRateOutput statistieken in video en screenShare worden verwijderd. U kunt in plaats daarvan gebruiken frameRateDecoded .

De naam van het metrische veld jitterBufferInMs wordt gewijzigd om een duidelijkere beschrijving te jitterBufferDelayInMs geven, omdat deze metrische waarde de duur aangeeft van een pakket dat in de jitterbuffer blijft.

Statistieken over mediakwaliteit voor een doorlopend gesprek

Statistieken over mediakwaliteit is een uitgebreide functie van de kern-API Call . U moet eerst het MediaStatisticsCallFeature API-object verkrijgen:

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

Het MediaStatisticsCallFeature object heeft de volgende API-structuur:

  • De OnReportReceivedListener gebeurtenis luistert naar periodieke rapporten van de mediastatistieken.
  • getReportIntervalInSeconds haalt het interval, in seconden, op van het genereren van het rapport voor mediastatistieken. De SDK gebruikt 10 de tweede als standaardwaarde.
  • updateReportIntervalInSeconds() werkt het interval in seconden bij van het genereren van het rapport voor mediastatistieken. De SDK gebruikt 10 de tweede als standaardwaarde.
  • A MediaStatisticsReport bevat de definitie van de statistieken van uitgaande en binnenkomende media, gecategoriseerd op audio, video en schermshare.
    • getOutgoingStatistics(): De lijst met mediastatistieken voor uitgaande media.
      • getAudioStatistics(): De lijst met mediastatistieken voor uitgaande audio.
      • getVideoStatistics(): De lijst met mediastatistieken voor uitgaande video.
      • getScreenShareStatistics(): De lijst met mediastatistieken voor uitgaande schermshare.
      • getDataChannelStatistics(): De lijst met mediastatistieken voor het gegevenskanaal.
    • getIncomingStatistics(): De lijst met mediastatistieken voor inkomende media.
      • getAudioStatistics(): De lijst met mediastatistieken voor binnenkomende audio.
      • getVideoStatistics(): De lijst met mediastatistieken voor de inkomende video.
      • getScreenShareStatistics(): De lijst met mediastatistieken voor binnenkomende schermshare.
      • getDataChannelStatistics(): De lijst met mediastatistieken voor het gegevenskanaal.
    • getLastUpdatedAt(): de datum waarop het rapport is gegenereerd.

Abonneer u vervolgens op de addOnReportReceivedListener gebeurtenis om regelmatig updates te krijgen over de huidige statistieken over mediakwaliteit:

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

Aanbevolen procedures

Als u de gegevens voor offline inspectie wilt verzamelen, raden we u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd. Als u de gegevens verzendt tijdens een oproep, kan deze internetbandbreedte gebruiken die nodig is om een Azure Communication Services-aanroep voort te zetten (met name wanneer de beschikbare bandbreedte laag is).

Metrische gegevens voor uitgaande audio

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate audio verzenden (bits per seconde) Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch).
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.

Metrische gegevens voor binnenkomende audio

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.
PacketsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.

Metrische gegevens voor uitgaande video

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate voor video verzenden (bits per seconde)
PacketCount Het totale aantal verzonden pakketten.
FrameRate Framesnelheid verzonden op de RTP-stream (frames per seconde)
FrameWidth Framebreedte van het gecodeerde frame (pixels)
FrameHeight Framehoogte van het gecodeerde frame (pixels)

Metrische gegevens voor binnenkomende video

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate voor video ontvangen (bits per seconde)
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.
PacketsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.
StreamId Stream-id De streamId waarde komt overeen met de id van de video van de externe deelnemer. Deze kan worden gebruikt om overeen te komen met de afzender.
FrameRate Framesnelheid ontvangen op de RTP-stream (frames per seconde)
FrameWidth Framebreedte van het gedecodeerde frame (pixels)
FrameHeight Framehoogte van het gedecodeerde frame (pixels)
TotalFreezeDurationInMs Totale duur van blokkeren (milliseconden)

Metrische gegevens voor uitgaande schermshare

Momenteel zijn statistiekenvelden hetzelfde als metrische gegevens voor uitgaande video.

Metrische gegevens voor binnenkomende schermshare

Op dit moment zijn statistiekenvelden hetzelfde als metrische gegevens voor binnenkomende video' s.

Metrische gegevens over uitgaande gegevenskanalen

Naam van meetwaarde Beschrijving Opmerkingen
PacketCount Het totale aantal verzonden pakketten.

Metrische gegevens van binnenkomende gegevenskanalen

Naam van meetwaarde Beschrijving Opmerkingen
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.

Statistieken over mediakwaliteit voor een doorlopend gesprek

Statistieken over mediakwaliteit is een uitgebreide functie van de kern-API Call . U moet eerst het mediaStatisticsCallFeature API-object verkrijgen:

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

Het mediaStatisticsCallFeature object heeft de volgende API-structuur:

  • De didReceiveReport gedelegeerde methode luistert naar periodieke rapporten van de mediastatistieken.
  • reportIntervalInSeconds haalt het interval, in seconden, op van het genereren van het rapport voor mediastatistieken. De SDK gebruikt 10 de tweede als standaardwaarde.
  • updateReportInterval(inSeconds) werkt het interval in seconden bij van het genereren van het rapport voor mediastatistieken. De SDK gebruikt 10 de tweede als standaardwaarde.
  • Een MediaStatisticsReport object bevat de definitie van de statistieken voor uitgaande en binnenkomende media, gecategoriseerd op audio, video en schermshare.
    • outgoingMediaStatistics: De lijst met mediastatistieken voor uitgaande media.
      • audio: De lijst met mediastatistieken voor de uitgaande audio.
      • video: De lijst met mediastatistieken voor de uitgaande video.
      • screenShare: De lijst met mediastatistieken voor de uitgaande schermshare.
      • dataChannel: De lijst met mediastatistieken voor het uitgaande gegevenskanaal.
    • incomingMediaStatistics: De lijst met mediastatistieken voor inkomende media.
      • audio: De lijst met mediastatistieken voor de binnenkomende audio.
      • video: De lijst met mediastatistieken voor de inkomende video.
      • screenShare: De lijst met mediastatistieken voor de binnenkomende schermshare.
      • dataChannel: De lijst met mediastatistieken voor het binnenkomende gegevenskanaal.
    • lastUpdated: de datum waarop het rapport is gegenereerd.

Implementeer vervolgens de didReceiveReport gemachtigde om regelmatig updates te krijgen over de huidige statistieken over mediakwaliteit:

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

Aanbevolen procedures

Als u de gegevens voor offline inspectie wilt verzamelen, raden we u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd. Als u de gegevens verzendt tijdens een oproep, kan deze internetbandbreedte gebruiken die nodig is om een Azure Communication Services-aanroep voort te zetten (met name wanneer de beschikbare bandbreedte laag is).

Metrische gegevens voor uitgaande audio

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate audio verzenden (bits per seconde) Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch).
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.

Metrische gegevens voor binnenkomende audio

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.
PacketsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.

Metrische gegevens voor uitgaande video

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate voor video verzenden (bits per seconde)
PacketCount Het totale aantal verzonden pakketten.
FrameRate Framesnelheid verzonden op de RTP-stream (frames per seconde)
FrameWidth Framebreedte van het gecodeerde frame (pixels)
FrameHeight Framehoogte van het gecodeerde frame (pixels)

Metrische gegevens voor binnenkomende video

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate voor video ontvangen (bits per seconde)
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.
PacketsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.
StreamId Stream-id De streamId waarde komt overeen met de id van de video van de externe deelnemer. Deze kan worden gebruikt om overeen te komen met de afzender.
FrameRate Framesnelheid ontvangen op de RTP-stream (frames per seconde)
FrameWidth Framebreedte van het gedecodeerde frame (pixels)
FrameHeight Framehoogte van het gedecodeerde frame (pixels)
TotalFreezeDurationInMs Totale duur van blokkeren (milliseconden)

Metrische gegevens voor uitgaande schermshare

Momenteel zijn statistiekenvelden hetzelfde als metrische gegevens voor uitgaande video.

Metrische gegevens voor binnenkomende schermshare

Op dit moment zijn statistiekenvelden hetzelfde als metrische gegevens voor binnenkomende video' s.

Metrische gegevens over uitgaande gegevenskanalen

Naam van meetwaarde Beschrijving Opmerkingen
PacketCount Het totale aantal verzonden pakketten.

Metrische gegevens van binnenkomende gegevenskanalen

Naam van meetwaarde Beschrijving Opmerkingen
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.

Statistieken over mediakwaliteit voor een doorlopend gesprek

Statistieken over mediakwaliteit is een uitgebreide functie van de kern-API CommunicationCall . U moet eerst het MediaStatisticsCallFeature API-object verkrijgen:

MediaStatisticsCallFeature mediaStatisticsCallFeature = call.Features.MediaStatistics;

Het MediaStatisticsCallFeature functieobject heeft de volgende API-structuur:

  • De ReportReceived gebeurtenis luistert naar periodieke rapporten van de mediastatistieken.
  • ReportIntervalInSeconds haalt het interval, in seconden, op van het genereren van het rapport voor mediastatistieken. De SDK gebruikt 10 de tweede als standaardwaarde.
  • UpdateReportIntervalInSeconds() werkt het interval in seconden bij van het genereren van het rapport voor mediastatistieken. De SDK gebruikt 10 de tweede als standaardwaarde.
  • Een MediaStatisticsReport object bevat de definitie van de statistieken voor uitgaande en binnenkomende media, gecategoriseerd op audio, video en schermshare.
    • OutgoingMediaStatistics: De lijst met mediastatistieken voor uitgaande media.
      • Audio: De lijst met mediastatistieken voor de uitgaande audio.
      • Video: De lijst met mediastatistieken voor de uitgaande video.
      • ScreenShare: De lijst met mediastatistieken voor de uitgaande schermshare.
      • DataChannel: De lijst met mediastatistieken voor het uitgaande gegevenskanaal.
    • IncomingMediaStatistics: De lijst met mediastatistieken voor inkomende media.
      • Audio: De lijst met mediastatistieken voor de binnenkomende audio.
      • Video: De lijst met mediastatistieken voor de inkomende video.
      • ScreenShare: De lijst met mediastatistieken voor de binnenkomende schermshare.
      • DataChannel: De lijst met mediastatistieken voor het binnenkomende gegevenskanaal.
    • LastUpdateAt: de datum waarop het rapport is gegenereerd.

Abonneer u vervolgens op de SampleReported gebeurtenis om regelmatig updates te krijgen over de huidige statistieken over mediakwaliteit:

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

Aanbevolen procedures

Als u de gegevens voor offline inspectie wilt verzamelen, raden we u aan de gegevens te verzamelen en deze naar uw pijplijnopname te verzenden nadat uw oproep is beëindigd. Als u de gegevens verzendt tijdens een oproep, kan deze internetbandbreedte gebruiken die nodig is om een Azure Communication Services-aanroep voort te zetten (met name wanneer de beschikbare bandbreedte laag is).

Metrische gegevens voor uitgaande audio

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate audio verzenden (bits per seconde) Algemene waarden bevinden zich in het bereik van 24-Kbs (36-128Kbs is typisch).
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.

Metrische gegevens voor binnenkomende audio

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.
PacketsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.

Metrische gegevens voor uitgaande video

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate voor video verzenden (bits per seconde)
PacketCount Het totale aantal verzonden pakketten.
FrameRate Framesnelheid verzonden op de RTP-stream (frames per seconde)
FrameWidth Framebreedte van het gecodeerde frame (pixels)
FrameHeight Framehoogte van het gecodeerde frame (pixels)

Metrische gegevens voor binnenkomende video

Naam van meetwaarde Beschrijving Opmerkingen
CodecName Codecnaam
BitrateInBps Bitrate voor video ontvangen (bits per seconde)
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.
PacketsLostPerSecond Pakketverlies (pakketten per seconde) Lager is beter.
StreamId Stream-id De streamId waarde komt overeen met de id van de video van de externe deelnemer. Deze kan worden gebruikt om overeen te komen met de afzender.
FrameRate Framesnelheid ontvangen op de RTP-stream (frames per seconde)
FrameWidth Framebreedte van het gedecodeerde frame (pixels)
FrameHeight Framehoogte van het gedecodeerde frame (pixels)
TotalFreezeDurationInMs Totale duur van blokkeren (milliseconden)

Metrische gegevens voor uitgaande schermshare

Momenteel zijn statistiekenvelden hetzelfde als metrische gegevens voor uitgaande video.

Metrische gegevens voor binnenkomende schermshare

Op dit moment zijn statistiekenvelden hetzelfde als metrische gegevens voor binnenkomende video' s.

Metrische gegevens over uitgaande gegevenskanalen

Naam van meetwaarde Beschrijving Opmerkingen
PacketCount Het totale aantal verzonden pakketten.

Metrische gegevens van binnenkomende gegevenskanalen

Naam van meetwaarde Beschrijving Opmerkingen
JitterInMs Pakket jitter (milliseconden) Lager is beter.
PacketCount Het totale aantal verzonden pakketten.