Statistik över mediekvalitet
För att hjälpa dig att bättre 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 sampleReported
på händelsen eller summaryReported
händelsen.
Händelsen sampleReported
utlöses varje sekund. Den är lämplig som datakälla för visning av användargränssnitt eller din egen datapipeline.
Händelsen summaryReported
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 mediaStatsCollector
för .
mediaStatsCollector.dispose();
Du behöver inte anropa dispose
metoden mediaStatsCollector
varje gång anropet 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
= 1dataPointsPerAggregation
= 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
= 60dataPointsPerAggregation
= 1
Händelsen summaryReported
utlöses var 60:e sekund och innehåller en (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 av 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 korrekt 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 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 | 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ått måttfältet altLayouts
, 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 pairRttInMs
inkluderades , availableBitrate
i statistik för ljud, video och skärmDela. Nu är dessa mått uppdelade i transportmått.
Vi introducerade packets
och packetsLost
måttfält 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änder10
andra som standard.updateReportIntervalInSeconds()
uppdaterar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder10
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änder10
andra som standard.updateReportInterval(inSeconds)
uppdaterar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder10
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änder10
andra som standard.UpdateReportIntervalInSeconds()
uppdaterar intervallet, i sekunder, för mediestatistikrapportens generering. SDK använder10
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. |